The Genius Scan SDK helps acquire high-quality documents from mobile devices. Alongside its advanced image processing filters, the SDK includes a readability detection feature that evaluates the clarity of a document.
This feature can detect various types of blur:
Readability detection is simple to integrate, and we strongly recommend enabling it in your project. It outperforms traditional blur detection techniques because it can detect various types of blur or partially blurry documents. The detection has been specifically tuned for textual documents and will not work optimally for documents with little text. It may work less effectively for text on textured backgrounds.
To enable readability detection in the scan flow, set the required readability level to a value above the lowest. For example, .medium
ensures documents below this quality trigger a prompt.
Note: Don’t skip the post-processing screen, because the prompt is displayed there.
let configuration = GSKScanFlowConfiguration()
configuration.requiredReadabilityLevel = .highest
// Don't set skipPostProcessingScreen = true
val configuration = ScanConfiguration().apply {
requiredReadabilityLevel = ScanConfiguration.ReadabilityLevel.HIGHEST
// Don't set skipPostProcessingScreen = true
}
const configuration = {
requiredReadabilityLevel: 'highest',
// Don't set skipPostProcessingScreen: true
};
// Launch scanner with blur detection
const result = await RNGeniusScan.scanWithConfiguration(configuration);
var configuration = {
'requiredReadabilityLevel': 'highest',
// Don't set 'skipPostProcessingScreen': true
};
// Launch scanner with blur detection
var result = await FlutterGeniusScan.scanWithConfiguration(configuration);
var configuration = {
requiredReadabilityLevel: 'highest'
// Don't set skipPostProcessingScreen: true
};
// Launch scanner with blur detection
cordova.plugins.GeniusScan.scanWithConfiguration(configuration,
function(result) {
// Handle success
},
function(error) {
// Handle error
}
);
var configuration = new ScanConfiguration
{
RequiredReadabilityLevel = ScanConfiguration.ReadabilityLevel.Highest
// Don't set SkipPostProcessingScreen = true
};
// Launch scanner with blur detection
var result = await GeniusScan.ScanWithConfigurationAsync(configuration);
Readability isn’t binary. Documents can fall anywhere on a quality spectrum. The Genius Scan SDK defines five readability levels that correspond to the likelihood of a scan being legible:
lowest
: Scan with almost no chance of being readablelow
: Scan with very little chance of being readable, even though it’s not impossiblemedium
: Scan with little chance of being entirely readable, even though it’s possiblehigh
: Scan with high chance of being readable, even though it’s not guaranteedhighest
: Scan with very high chance of being readableSince the Scan Flow shows a warning when the required readability isn’t met, this will never be blocking for the user. It’s up to you whether you want to be more conservative or aggressive in showing this warning.
Run your application on a physical device (the iOS Simulator doesn’t support camera access). To test readability detection, try scanning:
This will help you observe how the SDK reacts to blur and low readability.
© 2025 The Grizzly Labs. All rights reserved.