Restrict scanning to specific document types or countries
You can restrict which documents are accepted at scan time with a document class filter.
Add a filter
The following filter allows only Croatian and German documents. Any other document is rejected.
- Web (TS)
- Android (Kotlin)
- iOS (Swift)
- Flutter (Dart)
- React Native (TS)
const blinkId = await createBlinkId({ licenseKey: "your-license-key" });
const cleanup = blinkId.addDocumentClassFilter((documentClassInfo) => {
return documentClassInfo.country?.id === "croatia" || documentClassInfo.country?.id === "germany";
});
import com.microblink.blinkid.core.result.classinfo.CountryId
import com.microblink.blinkid.core.result.classinfo.DocumentClassInfo
import com.microblink.blinkid.ux.settings.ClassFilter
import kotlinx.parcelize.Parcelize
@Parcelize
class CountryClassFilter : ClassFilter {
override fun classAllowed(documentClass: DocumentClassInfo): Boolean {
return documentClass.country?.id == CountryId.Croatia ||
documentClass.country?.id == CountryId.Germany
}
}
BlinkIdCameraScanningScreen(
blinkIdSdk = blinkIdSdk,
uxSettings = BlinkIdUxSettings(classFilter = CountryClassFilter()),
onScanningSuccess = { result ->
// use result
},
onScanningCanceled = { }
)
class CountryClassFilter: BlinkIDClassFilter {
func classAllowed(classInfo: BlinkIDSDK.DocumentClassInfo) -> Bool {
classInfo.country?.countryId == .croatia || classInfo.country?.countryId == .germany
}
}
let analyzer = try await BlinkIDAnalyzer(
sdk: sdk,
classFilter: CountryClassFilter()
)
On Flutter, build a ClassFilter with an includeDocuments list of DocumentFilter entries and pass it to performScan.
Only documents matching an entry are allowed; everything else is rejected.
A DocumentFilter takes CountryID, RegionID, and DocumentTypeID values directly, not the id and rawValue objects found on the result.
final classFilter = ClassFilter.withIncludedDocumentClasses([
DocumentFilter(country: CountryID.croatia),
DocumentFilter(country: CountryID.germany),
]);
final result = await blinkIdPlugin.performScan(
blinkIdSdkSettings: sdkSettings,
blinkIdSessionSettings: sessionSettings,
classFilter: classFilter,
);
On React Native, build a classFilter with an includeDocuments array and pass it to performScan.
Only documents matching an entry are allowed; everything else is rejected.
Each entry takes CountryID, RegionID, and DocumentTypeID values directly, not the id and rawValue objects found on the result.
import { CountryID, performScan, type ClassFilter } from "@microblink/blinkid-react-native";
const classFilter: ClassFilter = {
includeDocuments: [
{ country: CountryID.Croatia },
{ country: CountryID.Germany },
],
};
const result = await performScan({ sdkSettings, sessionSettings, classFilter });