Authenticity Checks
The Document Reader SDK provides numerous checks, representing the advanced security techniques to verify the document's authenticity and prevent its counterfeiting. See the overview table for details.
| Authenticity check | Processing parameter | Default value |
|---|---|---|
| Image patterns | checkImagePatterns |
true |
| Liveness | checkLiveness |
true |
| Barcode format | checkBarcodeFormat |
true |
| Portrait comparison | checkPhotoComparison |
true |
| Photo embedding type | checkPhotoEmbedding |
true |
| Security Text | checkSecurityText |
true |
| IPI text | checkIPI |
true |
| UV luminescence | checkUVLuminiscence |
true |
| Protection fibers | checkFibers |
true |
| IR visibility | checkIRVisibility |
true |
| B900 IR | checkIRB900 |
true |
| Extended MRZ | checkExtMRZ |
true |
| Extended OCR | checkExtOCR |
true |
| Axial | checkAxial |
true |
| LetterScreen | checkLetterScreen |
false |
Liveness Checks
The "Liveness" validation comprises the set of checks to ensure the identity document is physically presented. See the table for all available liveness checks.
| Liveness check | Processing parameter | Default value |
|---|---|---|
| Electronic device | checkED |
true |
| Black and White Copy | checkBlackAndWhiteCopy |
true |
| Hologram detection | checkHolo |
true |
| OVI | checkOVI |
true |
| MLI | checkMLI |
true |
| Dynaprint | checkDynaprint |
true |
| Geometry | checkGeometry |
true |
Enable or Disable Checks
Most authenticity checks are enabled by default. To enable or disable concrete authenticity checks, use their corresponding parameters with necessary boolean values. For details, explore the Overview section. See the example below.
DocReader.shared.processParams.authenticityParams = AuthenticityParams.default()
DocReader.shared.processParams.authenticityParams?.livenessParams = LivenessParams.default()
DocReader.shared.processParams.authenticityParams?.livenessParams?.checkHolo = false
DocReader.shared.processParams.authenticityParams?.livenessParams?.checkED = false
DocReader.shared.processParams.authenticityParams?.livenessParams?.checkOVI = false
DocReader.shared.processParams.authenticityParams?.livenessParams?.checkMLI = false
DocReader.shared.processParams.authenticityParams?.livenessParams?.checkBlackAndWhiteCopy = false
DocReader.shared.processParams.authenticityParams?.livenessParams?.checkDynaprint = false
DocReader.shared.processParams.authenticityParams?.livenessParams?.checkGeometry = false
DocReader.shared.processParams.authenticityParams?.checkImagePatterns = false
DocReader.shared.processParams.authenticityParams?.checkPhotoEmbedding = false
DocReader.shared.processParams.authenticityParams?.checkBarcodeFormat = false
DocReader.shared.processParams.authenticityParams?.checkPhotoComparison = false
DocReader.shared.processParams.authenticityParams?.checkSecurityText = false
DocReader.shared.processParams.authenticityParams?.checkUVLuminiscence = false
DocReader.shared.processParams.authenticityParams?.checkFibers = false
DocReader.shared.processParams.authenticityParams?.checkExtMRZ = false
DocReader.shared.processParams.authenticityParams?.checkExtOCR = false
DocReader.shared.processParams.authenticityParams?.checkIRB900 = false
DocReader.shared.processParams.authenticityParams?.checkIRVisibility = false
DocReader.shared.processParams.authenticityParams?.checkIPI = false
DocReader.shared.processParams.authenticityParams?.checkAxial = false
DocReader.shared.processParams.authenticityParams?.checkLetterScreen = true
RGLAuthenticityParams *authenticityParams = [RGLAuthenticityParams defaultParams];
[RGLDocReader shared].processParams.authenticityParams = authenticityParams;
RGLLivenessParams *livenessParams = [RGLLivenessParams defaultParams];
[RGLDocReader shared].processParams.authenticityParams.livenessParams = livenessParams;
[RGLDocReader shared].processParams.authenticityParams.livenessParams.checkHolo = @NO;
[RGLDocReader shared].processParams.authenticityParams.livenessParams.checkED = @NO;
[RGLDocReader shared].processParams.authenticityParams.livenessParams.checkOVI = @NO;
[RGLDocReader shared].processParams.authenticityParams.livenessParams.checkMLI = @NO;
[RGLDocReader shared].processParams.authenticityParams.livenessParams.checkBlackAndWhiteCopy = @NO;
[RGLDocReader shared].processParams.authenticityParams.livenessParams.checkDynaprint = @NO;
[RGLDocReader shared].processParams.authenticityParams.livenessParams.checkGeometry = @NO;
[RGLDocReader shared].processParams.authenticityParams.checkImagePatterns = @NO;
[RGLDocReader shared].processParams.authenticityParams.checkPhotoEmbedding = @NO;
[RGLDocReader shared].processParams.authenticityParams.checkBarcodeFormat = @NO;
[RGLDocReader shared].processParams.authenticityParams.checkPhotoComparison = @NO;
[RGLDocReader shared].processParams.authenticityParams.checkSecurityText = @NO;
[RGLDocReader shared].processParams.authenticityParams.checkUVLuminiscence = @NO;
[RGLDocReader shared].processParams.authenticityParams.checkFibers = @NO;
[RGLDocReader shared].processParams.authenticityParams.checkExtMRZ = @NO;
[RGLDocReader shared].processParams.authenticityParams.checkExtOCR = @NO;
[RGLDocReader shared].processParams.authenticityParams.checkIRB900 = @NO;
[RGLDocReader shared].processParams.authenticityParams.checkIRVisibility = @NO;
[RGLDocReader shared].processParams.authenticityParams.checkIPI = @NO;
[RGLDocReader shared].processParams.authenticityParams.checkAxial = @NO;
[RGLDocReader shared].processParams.authenticityParams.checkLetterScreen = @YES;
val authenticityParams = AuthenticityParams.defaultParams()
authenticityParams.livenessParams = LivenessParams.defaultParams()
DocumentReader.Instance().processParams().authenticityParams = authenticityParams
authenticityParams.livenessParams?.checkHolo = false
authenticityParams.livenessParams?.checkED = false
authenticityParams.livenessParams?.checkOVI = false
authenticityParams.livenessParams?.checkMLI = false
authenticityParams.livenessParams?.checkBlackAndWhiteCopy = false
authenticityParams.livenessParams?.checkDynaprint = false
authenticityParams.livenessParams?.checkGeometry = false
authenticityParams.checkImagePatterns = false
authenticityParams.checkPhotoEmbedding = false
authenticityParams.checkBarcodeFormat = false
authenticityParams.checkPhotoComparison = false
authenticityParams.checkSecurityText = false
authenticityParams.checkUVLuminiscence = false
authenticityParams.checkFibers = false
authenticityParams.checkExtMRZ = false
authenticityParams.checkExtOCR = false
authenticityParams.checkIRB900 = false
authenticityParams.checkIRVisibility = false
authenticityParams.checkIPI = false
authenticityParams.checkAxial = false
authenticityParams.checkLetterScreen = true
AuthenticityParams authenticityParams = AuthenticityParams.defaultParams();
authenticityParams.livenessParams = LivenessParams.defaultParams();
DocumentReader.Instance().processParams().authenticityParams = authenticityParams;
authenticityParams.livenessParams.checkHolo = false;
authenticityParams.livenessParams.checkED = false;
authenticityParams.livenessParams.checkOVI = false;
authenticityParams.livenessParams.checkMLI = false;
authenticityParams.livenessParams.checkBlackAndWhiteCopy = false;
authenticityParams.livenessParams.checkDynaprint = false;
authenticityParams.livenessParams.checkGeometry = false;
authenticityParams.checkImagePatterns = false;
authenticityParams.checkPhotoEmbedding = false;
authenticityParams.checkBarcodeFormat = false;
authenticityParams.checkPhotoComparison = false;
authenticityParams.checkSecurityText = false;
authenticityParams.checkUVLuminiscence = false;
authenticityParams.checkFibers = false;
authenticityParams.checkExtMRZ = false;
authenticityParams.checkExtOCR = false;
authenticityParams.checkIRB900 = false;
authenticityParams.checkIRVisibility = false;
authenticityParams.checkIPI = false;
authenticityParams.checkAxial = false;
authenticityParams.checkLetterScreen = true;
DocumentReader.instance.processParams.authenticityParams.livenessParams.checkHolo = false;
DocumentReader.instance.processParams.authenticityParams.livenessParams.checkED = false;
DocumentReader.instance.processParams.authenticityParams.livenessParams.checkOVI = false;
DocumentReader.instance.processParams.authenticityParams.livenessParams.checkMLI = false;
DocumentReader.instance.processParams.authenticityParams.livenessParams.checkBlackAndWhiteCopy = false;
DocumentReader.instance.processParams.authenticityParams.livenessParams.checkDynaprint = false;
DocumentReader.instance.processParams.authenticityParams.livenessParams.checkGeometry = false;
DocumentReader.instance.processParams.authenticityParams.checkImagePatterns = false;
DocumentReader.instance.processParams.authenticityParams.checkPhotoEmbedding = false;
DocumentReader.instance.processParams.authenticityParams.checkBarcodeFormat = false;
DocumentReader.instance.processParams.authenticityParams.checkPhotoComparison = false;
DocumentReader.instance.processParams.authenticityParams.checkSecurityText = false;
DocumentReader.instance.processParams.authenticityParams.checkUVLuminiscence = false;
DocumentReader.instance.processParams.authenticityParams.checkFibers = false;
DocumentReader.instance.processParams.authenticityParams.checkExtMRZ = false;
DocumentReader.instance.processParams.authenticityParams.checkExtOCR = false;
DocumentReader.instance.processParams.authenticityParams.checkIRB900 = false;
DocumentReader.instance.processParams.authenticityParams.checkIRVisibility = false;
DocumentReader.instance.processParams.authenticityParams.checkIPI = false;
DocumentReader.instance.processParams.authenticityParams.checkAxial = false;
DocumentReader.instance.processParams.authenticityParams.checkLetterScreen = true;
DocumentReader.instance.processParams.authenticityParams.livenessParams.checkHolo = false
DocumentReader.instance.processParams.authenticityParams.livenessParams.checkED = false
DocumentReader.instance.processParams.authenticityParams.livenessParams.checkOVI = false
DocumentReader.instance.processParams.authenticityParams.livenessParams.checkMLI = false
DocumentReader.instance.processParams.authenticityParams.livenessParams.checkBlackAndWhiteCopy = false
DocumentReader.instance.processParams.authenticityParams.livenessParams.checkDynaprint = false
DocumentReader.instance.processParams.authenticityParams.livenessParams.checkGeometry = false
DocumentReader.instance.processParams.authenticityParams.checkImagePatterns = false
DocumentReader.instance.processParams.authenticityParams.checkPhotoEmbedding = false
DocumentReader.instance.processParams.authenticityParams.checkBarcodeFormat = false
DocumentReader.instance.processParams.authenticityParams.checkPhotoComparison = false
DocumentReader.instance.processParams.authenticityParams.checkSecurityText = false
DocumentReader.instance.processParams.authenticityParams.checkUVLuminiscence = false
DocumentReader.instance.processParams.authenticityParams.checkFibers = false
DocumentReader.instance.processParams.authenticityParams.checkExtMRZ = false
DocumentReader.instance.processParams.authenticityParams.checkExtOCR = false
DocumentReader.instance.processParams.authenticityParams.checkIRB900 = false
DocumentReader.instance.processParams.authenticityParams.checkIRVisibility = false
DocumentReader.instance.processParams.authenticityParams.checkIPI = false
DocumentReader.instance.processParams.authenticityParams.checkAxial = false
DocumentReader.instance.processParams.authenticityParams.checkLetterScreen = true
// Android
DocumentReader.Instance().ProcessParams().AuthenticityParams = AuthenticityParams.DefaultParams();
DocumentReader.Instance().ProcessParams().AuthenticityParams.LivenessParams = LivenessParams.DefaultParams();
DocumentReader.Instance().ProcessParams().AuthenticityParams.LivenessParams.CheckHolo = (Java.Lang.Boolean)false;
DocumentReader.Instance().ProcessParams().AuthenticityParams.LivenessParams.CheckED = (Java.Lang.Boolean)false;
DocumentReader.Instance().ProcessParams().AuthenticityParams.LivenessParams.CheckOVI = (Java.Lang.Boolean)false;
DocumentReader.Instance().ProcessParams().AuthenticityParams.LivenessParams.CheckMLI = (Java.Lang.Boolean)false;
DocumentReader.Instance().ProcessParams().AuthenticityParams.LivenessParams.CheckBlackAndWhiteCopy = (Java.Lang.Boolean)false;
DocumentReader.Instance().ProcessParams().AuthenticityParams.LivenessParams.CheckDynaprint = (Java.Lang.Boolean)false;
DocumentReader.Instance().ProcessParams().AuthenticityParams.LivenessParams.CheckGeometry = (Java.Lang.Boolean)false;
DocumentReader.Instance().ProcessParams().AuthenticityParams.CheckImagePatterns = (Java.Lang.Boolean)false;
DocumentReader.Instance().ProcessParams().AuthenticityParams.CheckPhotoEmbedding = (Java.Lang.Boolean)false;
DocumentReader.Instance().ProcessParams().AuthenticityParams.CheckBarcodeFormat = (Java.Lang.Boolean)false;
DocumentReader.Instance().ProcessParams().AuthenticityParams.CheckPhotoComparison = (Java.Lang.Boolean)false;
DocumentReader.Instance().ProcessParams().AuthenticityParams.CheckSecurityText = (Java.Lang.Boolean)false;
DocumentReader.Instance().ProcessParams().AuthenticityParams.CheckUVLuminiscence = (Java.Lang.Boolean)false;
DocumentReader.Instance().ProcessParams().AuthenticityParams.CheckFibers = (Java.Lang.Boolean)false;
DocumentReader.Instance().ProcessParams().AuthenticityParams.CheckExtMRZ = (Java.Lang.Boolean)false;
DocumentReader.Instance().ProcessParams().AuthenticityParams.CheckExtOCR = (Java.Lang.Boolean)false;
DocumentReader.Instance().ProcessParams().AuthenticityParams.CheckIRB900 = (Java.Lang.Boolean)false;
DocumentReader.Instance().ProcessParams().AuthenticityParams.CheckIRVisibility = (Java.Lang.Boolean)false;
DocumentReader.Instance().ProcessParams().AuthenticityParams.CheckIPI = (Java.Lang.Boolean)false;
DocumentReader.Instance().ProcessParams().AuthenticityParams.CheckAxial = (Java.Lang.Boolean)false;
DocumentReader.Instance().ProcessParams().AuthenticityParams.CheckLetterScreen = (Java.Lang.Boolean)true;
// iOS
RGLDocReader.Shared.ProcessParams.AuthenticityParams = RGLAuthenticityParams.DefaultParams();
RGLDocReader.Shared.ProcessParams.AuthenticityParams.LivenessParams = RGLLivenessParams.DefaultParams();
RGLDocReader.Shared.ProcessParams.AuthenticityParams.LivenessParams.CheckHolo = false;
RGLDocReader.Shared.ProcessParams.AuthenticityParams.LivenessParams.CheckED = false;
RGLDocReader.Shared.ProcessParams.AuthenticityParams.LivenessParams.CheckOVI = false;
RGLDocReader.Shared.ProcessParams.AuthenticityParams.LivenessParams.CheckMLI = false;
RGLDocReader.Shared.ProcessParams.AuthenticityParams.LivenessParams.CheckBlackAndWhiteCopy = false;
RGLDocReader.Shared.ProcessParams.AuthenticityParams.LivenessParams.CheckDynaprint = false;
RGLDocReader.Shared.ProcessParams.AuthenticityParams.LivenessParams.CheckGeometry = false;
RGLDocReader.Shared.ProcessParams.AuthenticityParams.CheckImagePatterns = false;
RGLDocReader.Shared.ProcessParams.AuthenticityParams.CheckPhotoEmbedding = false;
RGLDocReader.Shared.ProcessParams.AuthenticityParams.CheckBarcodeFormat = false;
RGLDocReader.Shared.ProcessParams.AuthenticityParams.CheckPhotoComparison = false;
RGLDocReader.Shared.ProcessParams.AuthenticityParams.CheckSecurityText = false;
RGLDocReader.Shared.ProcessParams.AuthenticityParams.CheckUVLuminiscence = false;
RGLDocReader.Shared.ProcessParams.AuthenticityParams.CheckFibers = false;
RGLDocReader.Shared.ProcessParams.AuthenticityParams.CheckExtMRZ = false;
RGLDocReader.Shared.ProcessParams.AuthenticityParams.CheckExtOCR = false;
RGLDocReader.Shared.ProcessParams.AuthenticityParams.CheckIRB900 = false;
RGLDocReader.Shared.ProcessParams.AuthenticityParams.CheckIRVisibility = false;
RGLDocReader.Shared.ProcessParams.AuthenticityParams.CheckIPI = false;
RGLDocReader.Shared.ProcessParams.AuthenticityParams.CheckAxial = false;
RGLDocReader.Shared.ProcessParams.AuthenticityParams.CheckLetterScreen = true;
DocumentReader.setProcessParams({
authenticityParams: {
livenessParams: {
checkHolo: false,
checkED: false,
checkOVI: false,
checkMLI: false,
checkBlackAndWhiteCopy: false,
checkDynaprint: false,
checkGeometry: false
},
checkImagePatterns: false,
checkPhotoEmbedding: false,
checkBarcodeFormat: false,
checkPhotoComparison: false,
checkSecurityText: false,
checkUVLuminiscence: false,
checkFibers: false,
checkExtMRZ: false,
checkExtOCR: false,
checkIRB900: false,
checkIRVisibility: false,
checkIPI: false,
checkAxial: false,
checkLetterScreen: true
}
}, _ => { }, _ => { })
DocumentReader.setProcessParams({
authenticityParams: {
livenessParams: {
checkHolo: false,
checkED: false,
checkOVI: false,
checkMLI: false,
checkBlackAndWhiteCopy: false,
checkGeometry: false,
checkDynaprint: false
},
checkImagePatterns: false,
checkPhotoEmbedding: false,
checkBarcodeFormat: false,
checkPhotoComparison: false,
checkSecurityText: false,
checkUVLuminiscence: false,
checkFibers: false,
checkExtMRZ: false,
checkExtOCR: false,
checkIRB900: false,
checkIRVisibility: false,
checkIPI: false,
checkAxial: false,
checkLetterScreen: true
}
})
DocumentReader.setProcessParams({
authenticityParams: {
livenessParams: {
checkHolo: false,
checkED: false,
checkOVI: false,
checkMLI: false,
checkBlackAndWhiteCopy: false,
checkDynaprint: false,
checkGeometry: false
},
checkImagePatterns: false,
checkPhotoEmbedding: false,
checkBarcodeFormat: false,
checkPhotoComparison: false,
checkSecurityText: false,
checkUVLuminiscence: false,
checkFibers: false,
checkExtMRZ: false,
checkExtOCR: false,
checkIRB900: false,
checkIRVisibility: false,
checkIPI: false,
checkAxial: false,
checkLetterScreen: true
}
}, function (m) { }, function (e) { })
By default, if the specific check is enabled but not performed due to some limitation, it's marked as WasNotDone. This applies only to the Photo Embedding Type and Liveness checks—if they are marked as WasNotDone, the overall security checks' status also shows up as not performed.
To override this behavior, use the strictSecurityChecks parameter. When enabled, this parameter marks security checks that don’t meet minimum requirements as Failed (instead of WasNotDone), which causes the overall security status to be failed.
DocReader.shared.processParams.strictSecurityChecks = true
[RGLDocReader shared].processParams.strictSecurityChecks = @YES;
DocumentReader.Instance().processParams().strictSecurityChecks = true
DocumentReader.Instance().processParams().strictSecurityChecks = true;
DocumentReader.instance.processParams.strictSecurityChecks = true;
DocumentReader.instance.processParams.strictSecurityChecks = true
DocumentReader.setProcessParams({
strictSecurityChecks: true,
}, (str) => { console.log(str) }, (error) => { console.log(error) });
DocumentReader.setProcessParams({
strictSecurityChecks: true
});
DocumentReader.setProcessParams({
strictSecurityChecks: true,
}, function (m) { }, function (e) { console.log(e); });
// Android
DocumentReader.Instance().ProcessParams().StrictSecurityChecks = (Java.Lang.Boolean)true;
// iOS
RGLDocReader.Shared.ProcessParams.StrictSecurityChecks = true;
Results
After the document processing is finished, the verification outcome is available in the Authenticity Result data structure. For details, see the links below.