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 table with the complete list of all available authenticity checks with their default values, brief descriptions, and links to code snippets and details.
Authenticity check | Default value | Brief description |
---|---|---|
Liveness → Hologram detection | true |
Check of holographic effect and the shape of hologram image. |
Liveness → Electronic device | true |
Validation of the image, taken from the electronic device's display. |
Liveness → OVI | true |
Optically Variable Ink objects check. |
Liveness → MLI | true |
Multiple Laser Images secure printing. |
Image patterns | true |
Check of the unique image patterns on the document's laminated layer. |
Photo embedding type | true |
Check of the affixed or imprinted photo. |
Barcode format | true |
Check of the barcode number, format, and data. |
Portrait comparison | true |
Comparing the photo on the document with the portrait from another source. |
UV luminescence | true |
Check of the paper and materials in UV light. |
Protection fibers | true |
Check of the specific secure fibers in mixture of the document protection material. |
Extended MRZ | true |
Thorough and multi-step check of the Machine Readable Zone. |
Extended OCR | true |
Thorough and multi-step check of the Optical Character Recognition data. |
B900 IR | true |
Infrared check of the text, printed in B900 secure ink. |
IR visibility | true |
Comparing representations of the secure elements in infrared and visible light. |
IPI text | true |
Visualizing and checking the Invisible Personal Information, applied to the holder's photo. |
Axial | true |
Using axial white light to check the material integrity. |
LetterScreen | false |
Checking the data of the (ghost) portrait according to the LetterScreen++ technology. |
Liveness
Document Liveness Check is a complex set of authenticity verifications, ensuring that the identity document is physically presented. It includes:
- Hologram detection
- Electronic device capture
- Optically Variable Ink (OVI)
- Multiple Laser Images (MLI)
During the document processing, the flashlight on your device will be turned on and used by the Document Reader SDK.
Hologram Detection
In this check, the presence of holographic effect and the shape of hologram image are analyzed.
To enable, use the checkHolo
parameter:
DocReader.shared.processParams.authenticityParams = AuthenticityParams.default()
DocReader.shared.processParams.authenticityParams?.livenessParams = LivenessParams.default()
DocReader.shared.processParams.authenticityParams?.livenessParams?.checkHolo = 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 = @YES;
val authenticityParams = AuthenticityParams.defaultParams()
authenticityParams.livenessParams = LivenessParams.defaultParams()
authenticityParams.livenessParams?.checkHolo = true
DocumentReader.Instance().processParams().authenticityParams = authenticityParams
AuthenticityParams authenticityParams = AuthenticityParams.defaultParams();
authenticityParams.livenessParams = LivenessParams.defaultParams();
authenticityParams.livenessParams.checkHolo = true;
DocumentReader.Instance().processParams().authenticityParams = authenticityParams;
DocumentReader.instance.processParams.authenticityParams.livenessParams.checkHolo = true;
DocumentReader.setProcessParams({
authenticityParams: {
livenessParams: {
checkHolo: true
}
}
}, _ => { }, _ => { })
DocumentReader.setProcessParams({
authenticityParams: {
livenessParams: {
checkHolo: true
}
}
})
DocumentReader.setProcessParams({
authenticityParams: {
livenessParams: {
checkHolo: true
}
}
}, function (m) { }, function (e) { })
// Android
DocumentReader.Instance().ProcessParams().AuthenticityParams = AuthenticityParams.DefaultParams();
DocumentReader.Instance().ProcessParams().AuthenticityParams.LivenessParams = LivenessParams.DefaultParams();
DocumentReader.Instance().ProcessParams().AuthenticityParams.LivenessParams.CheckHolo = (Java.Lang.Boolean)true;
// iOS
RGLDocReader.Shared.ProcessParams.AuthenticityParams = RGLAuthenticityParams.DefaultParams();
RGLDocReader.Shared.ProcessParams.AuthenticityParams.LivenessParams = RGLLivenessParams.DefaultParams();
RGLDocReader.Shared.ProcessParams.AuthenticityParams.LivenessParams.CheckHolo = true;
Electronic Device
In this check, the image, captured by the device's camera from the computer's monitor or other external display, is validated.
To enable, use the checkED
parameter:
DocReader.shared.processParams.authenticityParams = AuthenticityParams.default()
DocReader.shared.processParams.authenticityParams?.livenessParams = LivenessParams.default()
DocReader.shared.processParams.authenticityParams?.livenessParams?.checkED = 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.checkED = @YES;
val authenticityParams = AuthenticityParams.defaultParams()
authenticityParams.livenessParams = LivenessParams.defaultParams()
authenticityParams.livenessParams?.checkED = true
DocumentReader.Instance().processParams().authenticityParams = authenticityParams
AuthenticityParams authenticityParams = AuthenticityParams.defaultParams();
authenticityParams.livenessParams = LivenessParams.defaultParams();
authenticityParams.livenessParams.checkED = true;
DocumentReader.Instance().processParams().authenticityParams = authenticityParams;
DocumentReader.instance.processParams.authenticityParams.livenessParams.checkED = true;
DocumentReader.setProcessParams({
authenticityParams: {
livenessParams: {
checkED: true
}
}
}, _ => { }, _ => { })
DocumentReader.setProcessParams({
authenticityParams: {
livenessParams: {
checkED: true
}
}
})
DocumentReader.setProcessParams({
authenticityParams: {
livenessParams: {
checkED: true
}
}
}, function (m) { }, function (e) { })
// Android
DocumentReader.Instance().ProcessParams().AuthenticityParams = AuthenticityParams.DefaultParams();
DocumentReader.Instance().ProcessParams().AuthenticityParams.LivenessParams = LivenessParams.DefaultParams();
DocumentReader.Instance().ProcessParams().AuthenticityParams.LivenessParams.CheckED = (Java.Lang.Boolean)true;
// iOS
RGLDocReader.Shared.ProcessParams.AuthenticityParams = RGLAuthenticityParams.DefaultParams();
RGLDocReader.Shared.ProcessParams.AuthenticityParams.LivenessParams = RGLLivenessParams.DefaultParams();
RGLDocReader.Shared.ProcessParams.AuthenticityParams.LivenessParams.CheckED = true;
OVI
Optically Variable Ink objects change their color and appearance under different illumination conditions.
To enable, use the checkOVI
parameter:
DocReader.shared.processParams.authenticityParams = AuthenticityParams.default()
DocReader.shared.processParams.authenticityParams?.livenessParams = LivenessParams.default()
DocReader.shared.processParams.authenticityParams?.livenessParams?.checkOVI = 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.checkOVI = @YES;
val authenticityParams = AuthenticityParams.defaultParams()
authenticityParams.livenessParams = LivenessParams.defaultParams()
authenticityParams.livenessParams?.checkOVI = true
DocumentReader.Instance().processParams().authenticityParams = authenticityParams
AuthenticityParams authenticityParams = AuthenticityParams.defaultParams();
authenticityParams.livenessParams = LivenessParams.defaultParams();
authenticityParams.livenessParams?.checkOVI = true;
DocumentReader.Instance().processParams().authenticityParams = authenticityParams;
DocumentReader.instance.processParams.authenticityParams.livenessParams.checkOVI = true;
DocumentReader.setProcessParams({
authenticityParams: {
livenessParams: {
checkOVI: true
}
}
}, _ => { }, _ => { })
DocumentReader.setProcessParams({
authenticityParams: {
livenessParams: {
checkOVI: true
}
}
})
DocumentReader.setProcessParams({
authenticityParams: {
livenessParams: {
checkOVI: true
}
}
}, function (m) { }, function (e) { })
// Android
DocumentReader.Instance().ProcessParams().AuthenticityParams = AuthenticityParams.DefaultParams();
DocumentReader.Instance().ProcessParams().AuthenticityParams.LivenessParams = LivenessParams.DefaultParams();
DocumentReader.Instance().ProcessParams().AuthenticityParams.LivenessParams.CheckOVI = (Java.Lang.Boolean)true;
// iOS
RGLDocReader.Shared.ProcessParams.AuthenticityParams = RGLAuthenticityParams.DefaultParams();
RGLDocReader.Shared.ProcessParams.AuthenticityParams.LivenessParams = RGLLivenessParams.DefaultParams();
RGLDocReader.Shared.ProcessParams.AuthenticityParams.LivenessParams.CheckOVI = true;
MLI
Multiple Laser Images is the technology of secure printing, resulting in different graphics depending on the viewing angle.
To enable, use the checkMLI
parameter:
DocReader.shared.processParams.authenticityParams = AuthenticityParams.default()
DocReader.shared.processParams.authenticityParams?.livenessParams = LivenessParams.default()
DocReader.shared.processParams.authenticityParams?.livenessParams?.checkMLI = 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.checkMLI = @YES;
val authenticityParams = AuthenticityParams.defaultParams()
authenticityParams.livenessParams = LivenessParams.defaultParams()
authenticityParams.livenessParams?.checkMLI = true
DocumentReader.Instance().processParams().authenticityParams = authenticityParams
AuthenticityParams authenticityParams = AuthenticityParams.defaultParams();
authenticityParams.livenessParams = LivenessParams.defaultParams();
authenticityParams.livenessParams.checkMLI = true;
DocumentReader.Instance().processParams().authenticityParams = authenticityParams;
DocumentReader.instance.processParams.authenticityParams.livenessParams.checkMLI = true;
DocumentReader.setProcessParams({
authenticityParams: {
livenessParams: {
checkMLI: true
}
}
}, _ => { }, _ => { })
DocumentReader.setProcessParams({
authenticityParams: {
livenessParams: {
checkMLI: true
}
}
})
DocumentReader.setProcessParams({
authenticityParams: {
livenessParams: {
checkMLI: true
}
}
}, function (m) { }, function (e) { })
// Android
DocumentReader.Instance().ProcessParams().AuthenticityParams = AuthenticityParams.DefaultParams();
DocumentReader.Instance().ProcessParams().AuthenticityParams.LivenessParams = LivenessParams.DefaultParams();
DocumentReader.Instance().ProcessParams().AuthenticityParams.LivenessParams.CheckMLI = (Java.Lang.Boolean)true;
// iOS
RGLDocReader.Shared.ProcessParams.AuthenticityParams = RGLAuthenticityParams.DefaultParams();
RGLDocReader.Shared.ProcessParams.AuthenticityParams.LivenessParams = RGLLivenessParams.DefaultParams();
RGLDocReader.Shared.ProcessParams.AuthenticityParams.LivenessParams.CheckMLI = true;
Image Patterns
Many personal documents have the laminated layer with unique image patterns, standing out by their shape, size, and color.
To enable, use the checkImagePatterns
parameter:
DocReader.shared.processParams.authenticityParams = AuthenticityParams.default()
DocReader.shared.processParams.authenticityParams?.checkImagePatterns = true
RGLAuthenticityParams *authenticityParams = [RGLAuthenticityParams defaultParams];
[RGLDocReader shared].processParams.authenticityParams = authenticityParams;
[RGLDocReader shared].processParams.authenticityParams.checkImagePatterns = @YES;
val authenticityParams = AuthenticityParams.defaultParams()
authenticityParams.checkImagePatterns = true
DocumentReader.Instance().processParams().authenticityParams = authenticityParams
AuthenticityParams authenticityParams = AuthenticityParams.defaultParams();
authenticityParams.checkImagePatterns = true;
DocumentReader.Instance().processParams().authenticityParams = authenticityParams;
DocumentReader.instance.processParams.authenticityParams.checkImagePatterns = true;
DocumentReader.setProcessParams({
authenticityParams: {
checkImagePatterns: true
}
}, _ => { }, _ => { })
DocumentReader.setProcessParams({
authenticityParams: {
checkImagePatterns: true
}
})
DocumentReader.setProcessParams({
authenticityParams: {
checkImagePatterns: true
}
}, function (m) { }, function (e) { })
// Android
DocumentReader.Instance().ProcessParams().AuthenticityParams = AuthenticityParams.DefaultParams();
DocumentReader.Instance().ProcessParams().AuthenticityParams.CheckImagePatterns = (Java.Lang.Boolean)true;
// iOS
RGLDocReader.Shared.ProcessParams.AuthenticityParams = RGLAuthenticityParams.DefaultParams();
RGLDocReader.Shared.ProcessParams.AuthenticityParams.CheckImagePatterns = true;
Photo Embedding Type
This check controls the type of embedding the photo (affixed or printed) in the document of concrete type according to the template from the database.
To enable, use the checkPhotoEmbedding
parameter:
DocReader.shared.processParams.authenticityParams = AuthenticityParams.default()
DocReader.shared.processParams.authenticityParams?.checkPhotoEmbedding = true
RGLAuthenticityParams *authenticityParams = [RGLAuthenticityParams defaultParams];
[RGLDocReader shared].processParams.authenticityParams = authenticityParams;
[RGLDocReader shared].processParams.authenticityParams.checkPhotoEmbedding = @YES;
val authenticityParams = AuthenticityParams.defaultParams()
authenticityParams.checkPhotoEmbedding = true
DocumentReader.Instance().processParams().authenticityParams = authenticityParams
AuthenticityParams authenticityParams = AuthenticityParams.defaultParams();
authenticityParams.checkPhotoEmbedding = true;
DocumentReader.Instance().processParams().authenticityParams = authenticityParams;
DocumentReader.instance.processParams.authenticityParams.checkPhotoEmbedding = true;
DocumentReader.setProcessParams({
authenticityParams: {
checkPhotoEmbedding: true
}
}, _ => { }, _ => { })
DocumentReader.setProcessParams({
authenticityParams: {
checkPhotoEmbedding: true
}
})
DocumentReader.setProcessParams({
authenticityParams: {
checkPhotoEmbedding: true
}
}, function (m) { }, function (e) { })
// Android
DocumentReader.Instance().ProcessParams().AuthenticityParams = AuthenticityParams.DefaultParams();
DocumentReader.Instance().ProcessParams().AuthenticityParams.CheckPhotoEmbedding = (Java.Lang.Boolean)true;
// iOS
RGLDocReader.Shared.ProcessParams.AuthenticityParams = RGLAuthenticityParams.DefaultParams();
RGLDocReader.Shared.ProcessParams.AuthenticityParams.CheckPhotoEmbedding = true;
Barcode Format
In this check, the number and type of barcodes for the secure document are validated, together with their structure and encoded data.
To enable, use the checkBarcodeFormat
parameter:
DocReader.shared.processParams.authenticityParams = AuthenticityParams.default()
DocReader.shared.processParams.authenticityParams?.checkBarcodeFormat = true
RGLAuthenticityParams *authenticityParams = [RGLAuthenticityParams defaultParams];
[RGLDocReader shared].processParams.authenticityParams = authenticityParams;
[RGLDocReader shared].processParams.authenticityParams.checkBarcodeFormat = @YES;
val authenticityParams = AuthenticityParams.defaultParams()
authenticityParams.checkBarcodeFormat = true
DocumentReader.Instance().processParams().authenticityParams = authenticityParams
AuthenticityParams authenticityParams = AuthenticityParams.defaultParams();
authenticityParams.checkBarcodeFormat = true;
DocumentReader.Instance().processParams().authenticityParams = authenticityParams;
DocumentReader.instance.processParams.authenticityParams.checkBarcodeFormat = true;
DocumentReader.setProcessParams({
authenticityParams: {
checkBarcodeFormat: true
}
}, _ => { }, _ => { })
DocumentReader.setProcessParams({
authenticityParams: {
checkBarcodeFormat: true
}
})
DocumentReader.setProcessParams({
authenticityParams: {
checkBarcodeFormat: true
}
}, function (m) { }, function (e) { })
// Android
DocumentReader.Instance().ProcessParams().AuthenticityParams = AuthenticityParams.DefaultParams();
DocumentReader.Instance().ProcessParams().AuthenticityParams.CheckBarcodeFormat = (Java.Lang.Boolean)true;
// iOS
RGLDocReader.Shared.ProcessParams.AuthenticityParams = RGLAuthenticityParams.DefaultParams();
RGLDocReader.Shared.ProcessParams.AuthenticityParams.CheckBarcodeFormat = true;
Portrait Comparison
This check compares the photo extracted from the document data page in white light with the portrait from another source. The photos are compared with the help of Regula Face SDK.
To enable, use the checkPhotoComparison
parameter:
DocReader.shared.processParams.authenticityParams = AuthenticityParams.default()
DocReader.shared.processParams.authenticityParams?.checkPhotoComparison = true
RGLAuthenticityParams *authenticityParams = [RGLAuthenticityParams defaultParams];
[RGLDocReader shared].processParams.authenticityParams = authenticityParams;
[RGLDocReader shared].processParams.authenticityParams.checkPhotoComparison = @YES;
val authenticityParams = AuthenticityParams.defaultParams()
authenticityParams.checkPhotoComparison = true
DocumentReader.Instance().processParams().authenticityParams = authenticityParams
AuthenticityParams authenticityParams = AuthenticityParams.defaultParams();
authenticityParams.checkPhotoComparison = true;
DocumentReader.Instance().processParams().authenticityParams = authenticityParams;
DocumentReader.instance.processParams.authenticityParams.checkPhotoComparison = true;
DocumentReader.setProcessParams({
authenticityParams: {
checkPhotoComparison: true
}
}, _ => { }, _ => { })
DocumentReader.setProcessParams({
authenticityParams: {
checkPhotoComparison: true
}
})
DocumentReader.setProcessParams({
authenticityParams: {
checkPhotoComparison: true
}
}, function (m) { }, function (e) { })
// Android
DocumentReader.Instance().ProcessParams().AuthenticityParams = AuthenticityParams.DefaultParams();
DocumentReader.Instance().ProcessParams().AuthenticityParams.CheckPhotoComparison = (Java.Lang.Boolean)true;
// iOS
RGLDocReader.Shared.ProcessParams.AuthenticityParams = RGLAuthenticityParams.DefaultParams();
RGLDocReader.Shared.ProcessParams.AuthenticityParams.CheckPhotoComparison = true;
UV Luminescence
The security documents are mostly printed on UV dull paper and must not fluoresce under ultraviolet light. Additionally, the verification reveals suspicious unevenness of the materials.
To enable, use the checkUVLuminiscence
parameter:
DocReader.shared.processParams.authenticityParams = AuthenticityParams.default()
DocReader.shared.processParams.authenticityParams?.checkUVLuminiscence = true
RGLAuthenticityParams *authenticityParams = [RGLAuthenticityParams defaultParams];
[RGLDocReader shared].processParams.authenticityParams = authenticityParams;
[RGLDocReader shared].processParams.authenticityParams.checkUVLuminiscence = @YES;
val authenticityParams = AuthenticityParams.defaultParams()
authenticityParams.checkUVLuminiscence = true
DocumentReader.Instance().processParams().authenticityParams = authenticityParams
AuthenticityParams authenticityParams = AuthenticityParams.defaultParams();
authenticityParams.checkUVLuminiscence = true;
DocumentReader.Instance().processParams().authenticityParams = authenticityParams;
DocumentReader.instance.processParams.authenticityParams.checkUVLuminiscence = true;
DocumentReader.setProcessParams({
authenticityParams: {
checkUVLuminiscence: true
}
}, _ => { }, _ => { })
DocumentReader.setProcessParams({
authenticityParams: {
checkUVLuminiscence: true
}
})
DocumentReader.setProcessParams({
authenticityParams: {
checkUVLuminiscence: true
}
}, function (m) { }, function (e) { })
// Android
DocumentReader.Instance().ProcessParams().AuthenticityParams = AuthenticityParams.DefaultParams();
DocumentReader.Instance().ProcessParams().AuthenticityParams.CheckUVLuminiscence = (Java.Lang.Boolean)true;
// iOS
RGLDocReader.Shared.ProcessParams.AuthenticityParams = RGLAuthenticityParams.DefaultParams();
RGLDocReader.Shared.ProcessParams.AuthenticityParams.CheckUVLuminiscence = true;
Protection Fibers in UV
Documents' security paper may contain specific flexible fibers in its mixture. Their size, shape, and luminescent properties under UV lighting can be assessed.
To enable, use the checkFibers
parameter:
DocReader.shared.processParams.authenticityParams = AuthenticityParams.default()
DocReader.shared.processParams.authenticityParams?.checkFibers = true
RGLAuthenticityParams *authenticityParams = [RGLAuthenticityParams defaultParams];
[RGLDocReader shared].processParams.authenticityParams = authenticityParams;
[RGLDocReader shared].processParams.authenticityParams.checkFibers = @YES;
val authenticityParams = AuthenticityParams.defaultParams()
authenticityParams.checkFibers = true
DocumentReader.Instance().processParams().authenticityParams = authenticityParams
AuthenticityParams authenticityParams = AuthenticityParams.defaultParams();
authenticityParams.checkFibers = true;
DocumentReader.Instance().processParams().authenticityParams = authenticityParams;
DocumentReader.instance.processParams.authenticityParams.checkFibers = true;
DocumentReader.setProcessParams({
authenticityParams: {
checkFibers: true
}
}, _ => { }, _ => { })
DocumentReader.setProcessParams({
authenticityParams: {
checkFibers: true
}
})
DocumentReader.setProcessParams({
authenticityParams: {
checkFibers: true
}
}, function (m) { }, function (e) { })
// Android
DocumentReader.Instance().ProcessParams().AuthenticityParams = AuthenticityParams.DefaultParams();
DocumentReader.Instance().ProcessParams().AuthenticityParams.CheckFibers = (Java.Lang.Boolean)true;
// iOS
RGLDocReader.Shared.ProcessParams.AuthenticityParams = RGLAuthenticityParams.DefaultParams();
RGLDocReader.Shared.ProcessParams.AuthenticityParams.CheckFibers = true;
Extended MRZ
This check verifies the size of MRZ lines, their relative position, clues of possible alteration, etc.
To enable, use the checkExtMRZ
parameter:
DocReader.shared.processParams.authenticityParams = AuthenticityParams.default()
DocReader.shared.processParams.authenticityParams?.checkExtMRZ = true
RGLAuthenticityParams *authenticityParams = [RGLAuthenticityParams defaultParams];
[RGLDocReader shared].processParams.authenticityParams = authenticityParams;
[RGLDocReader shared].processParams.authenticityParams.checkExtMRZ = @YES;
val authenticityParams = AuthenticityParams.defaultParams()
authenticityParams.checkExtMRZ = true
DocumentReader.Instance().processParams().authenticityParams = authenticityParams
AuthenticityParams authenticityParams = AuthenticityParams.defaultParams();
authenticityParams.checkExtMRZ = true;
DocumentReader.Instance().processParams().authenticityParams = authenticityParams;
DocumentReader.instance.processParams.authenticityParams.checkExtMRZ = true;
DocumentReader.setProcessParams({
authenticityParams: {
checkExtMRZ: true
}
}, _ => { }, _ => { })
DocumentReader.setProcessParams({
authenticityParams: {
checkExtMRZ: true
}
})
DocumentReader.setProcessParams({
authenticityParams: {
checkExtMRZ: true
}
}, function (m) { }, function (e) { })
// Android
DocumentReader.Instance().ProcessParams().AuthenticityParams = AuthenticityParams.DefaultParams();
DocumentReader.Instance().ProcessParams().AuthenticityParams.CheckExtMRZ = (Java.Lang.Boolean)true;
// iOS
RGLDocReader.Shared.ProcessParams.AuthenticityParams = RGLAuthenticityParams.DefaultParams();
RGLDocReader.Shared.ProcessParams.AuthenticityParams.CheckExtMRZ = true;
Extended OCR
This check controls the quality of personal data printing and positioning.
To enable, use the checkExtOCR
parameter:
DocReader.shared.processParams.authenticityParams = AuthenticityParams.default()
DocReader.shared.processParams.authenticityParams?.checkExtOCR = true
RGLAuthenticityParams *authenticityParams = [RGLAuthenticityParams defaultParams];
[RGLDocReader shared].processParams.authenticityParams = authenticityParams;
[RGLDocReader shared].processParams.authenticityParams.checkExtOCR = @YES;
val authenticityParams = AuthenticityParams.defaultParams()
authenticityParams.checkExtOCR = true
DocumentReader.Instance().processParams().authenticityParams = authenticityParams
AuthenticityParams authenticityParams = AuthenticityParams.defaultParams();
authenticityParams.checkExtOCR = true;
DocumentReader.Instance().processParams().authenticityParams = authenticityParams;
DocumentReader.instance.processParams.authenticityParams.checkExtOCR = true;
DocumentReader.setProcessParams({
authenticityParams: {
checkExtOCR: true
}
}, _ => { }, _ => { })
DocumentReader.setProcessParams({
authenticityParams: {
checkExtOCR: true
}
})
DocumentReader.setProcessParams({
authenticityParams: {
checkExtOCR: true
}
}, function (m) { }, function (e) { })
// Android
DocumentReader.Instance().ProcessParams().AuthenticityParams = AuthenticityParams.DefaultParams();
DocumentReader.Instance().ProcessParams().AuthenticityParams.CheckExtOCR = (Java.Lang.Boolean)true;
// iOS
RGLDocReader.Shared.ProcessParams.AuthenticityParams = RGLAuthenticityParams.DefaultParams();
RGLDocReader.Shared.ProcessParams.AuthenticityParams.CheckExtOCR = true;
B900 Ink in IR
The most common ink to use for the MRZ and personal data printing is B900. Infrared lighting reveals the security elements, demonstrating the high contrast level.
To enable, use the checkIRB900
parameter:
DocReader.shared.processParams.authenticityParams = AuthenticityParams.default()
DocReader.shared.processParams.authenticityParams?.checkIRB900 = true
RGLAuthenticityParams *authenticityParams = [RGLAuthenticityParams defaultParams];
[RGLDocReader shared].processParams.authenticityParams = authenticityParams;
[RGLDocReader shared].processParams.authenticityParams.checkIRB900 = @YES;
val authenticityParams = AuthenticityParams.defaultParams()
authenticityParams.checkIRB900 = true
DocumentReader.Instance().processParams().authenticityParams = authenticityParams
AuthenticityParams authenticityParams = AuthenticityParams.defaultParams();
authenticityParams.checkIRB900 = true;
DocumentReader.Instance().processParams().authenticityParams = authenticityParams;
DocumentReader.instance.processParams.authenticityParams.checkIRB900 = true;
DocumentReader.setProcessParams({
authenticityParams: {
checkIRB900: true
}
}, _ => { }, _ => { })
DocumentReader.setProcessParams({
authenticityParams: {
checkIRB900: true
}
})
DocumentReader.setProcessParams({
authenticityParams: {
checkIRB900: true
}
}, function (m) { }, function (e) { })
// Android
DocumentReader.Instance().ProcessParams().AuthenticityParams = AuthenticityParams.DefaultParams();
DocumentReader.Instance().ProcessParams().AuthenticityParams.CheckIRB900 = (Java.Lang.Boolean)true;
// iOS
RGLDocReader.Shared.ProcessParams.AuthenticityParams = RGLAuthenticityParams.DefaultParams();
RGLDocReader.Shared.ProcessParams.AuthenticityParams.CheckIRB900 = true;
IR Visibility
This check validates the visibility of different elements (especially photo and images) under infrared light and compares to their representations in visible light.
To enable, use the checkIRVisibility
parameter:
DocReader.shared.processParams.authenticityParams = AuthenticityParams.default()
DocReader.shared.processParams.authenticityParams?.checkIRVisibility = true
RGLAuthenticityParams *authenticityParams = [RGLAuthenticityParams defaultParams];
[RGLDocReader shared].processParams.authenticityParams = authenticityParams;
[RGLDocReader shared].processParams.authenticityParams.checkIRVisibility = @YES;
val authenticityParams = AuthenticityParams.defaultParams()
authenticityParams.checkIRVisibility = true
DocumentReader.Instance().processParams().authenticityParams = authenticityParams
AuthenticityParams authenticityParams = AuthenticityParams.defaultParams();
authenticityParams.checkIRVisibility = true;
DocumentReader.Instance().processParams().authenticityParams = authenticityParams;
DocumentReader.instance.processParams.authenticityParams.checkIRVisibility = true;
DocumentReader.setProcessParams({
authenticityParams: {
checkIRVisibility: true
}
}, _ => { }, _ => { })
DocumentReader.setProcessParams({
authenticityParams: {
checkIRVisibility: true
}
})
DocumentReader.setProcessParams({
authenticityParams: {
checkIRVisibility: true
}
}, function (m) { }, function (e) { })
// Android
DocumentReader.Instance().ProcessParams().AuthenticityParams = AuthenticityParams.DefaultParams();
DocumentReader.Instance().ProcessParams().AuthenticityParams.CheckIRVisibility = (Java.Lang.Boolean)true;
// iOS
RGLDocReader.Shared.ProcessParams.AuthenticityParams = RGLAuthenticityParams.DefaultParams();
RGLDocReader.Shared.ProcessParams.AuthenticityParams.CheckIRVisibility = true;
IPI
This check visualizes the Invisible Personal Information, applied to the holder's photo. In most cases, the hidden data is the document number or the holder's first and last name.
To enable, use the checkIPI
parameter:
DocReader.shared.processParams.authenticityParams = AuthenticityParams.default()
DocReader.shared.processParams.authenticityParams?.checkIPI = true
RGLAuthenticityParams *authenticityParams = [RGLAuthenticityParams defaultParams];
[RGLDocReader shared].processParams.authenticityParams = authenticityParams;
[RGLDocReader shared].processParams.authenticityParams.checkIPI = @YES;
val authenticityParams = AuthenticityParams.defaultParams()
authenticityParams.checkIPI = true
DocumentReader.Instance().processParams().authenticityParams = authenticityParams
AuthenticityParams authenticityParams = AuthenticityParams.defaultParams();
authenticityParams.checkIPI = true;
DocumentReader.Instance().processParams().authenticityParams = authenticityParams;
DocumentReader.instance.processParams.authenticityParams.checkIPI = true;
DocumentReader.setProcessParams({
authenticityParams: {
checkIPI: true
}
}, _ => { }, _ => { })
DocumentReader.setProcessParams({
authenticityParams: {
checkIPI: true
}
})
DocumentReader.setProcessParams({
authenticityParams: {
checkIPI: true
}
}, function (m) { }, function (e) { })
// Android
DocumentReader.Instance().ProcessParams().AuthenticityParams = AuthenticityParams.DefaultParams();
DocumentReader.Instance().ProcessParams().AuthenticityParams.CheckIPI = (Java.Lang.Boolean)true;
// iOS
RGLDocReader.Shared.ProcessParams.AuthenticityParams = RGLAuthenticityParams.DefaultParams();
RGLDocReader.Shared.ProcessParams.AuthenticityParams.CheckIPI = true;
Axial
This check detects the areas of the laminate film unevenness by applying the illumination scheme with coinciding angles of illumination and observation under visible white light.
To enable, use the checkAxial
parameter:
DocReader.shared.processParams.authenticityParams = AuthenticityParams.default()
DocReader.shared.processParams.authenticityParams?.checkAxial = true
RGLAuthenticityParams *authenticityParams = [RGLAuthenticityParams defaultParams];
[RGLDocReader shared].processParams.authenticityParams = authenticityParams;
[RGLDocReader shared].processParams.authenticityParams.checkAxial = @YES;
val authenticityParams = AuthenticityParams.defaultParams()
authenticityParams.checkAxial = true
DocumentReader.Instance().processParams().authenticityParams = authenticityParams
AuthenticityParams authenticityParams = AuthenticityParams.defaultParams();
authenticityParams.checkAxial = true;
DocumentReader.Instance().processParams().authenticityParams = authenticityParams;
DocumentReader.instance.processParams.authenticityParams.checkUVLuminiscence = true;
DocumentReader.setProcessParams({
authenticityParams: {
checkAxial: true
}
}, _ => { }, _ => { })
DocumentReader.setProcessParams({
authenticityParams: {
checkAxial: true
}
})
DocumentReader.setProcessParams({
authenticityParams: {
checkAxial: true
}
}, function (m) { }, function (e) { })
// Android
DocumentReader.Instance().ProcessParams().AuthenticityParams = AuthenticityParams.DefaultParams();
DocumentReader.Instance().ProcessParams().AuthenticityParams.CheckAxial = (Java.Lang.Boolean)true;
// iOS
RGLDocReader.Shared.ProcessParams.AuthenticityParams = RGLAuthenticityParams.DefaultParams();
RGLDocReader.Shared.ProcessParams.AuthenticityParams.CheckAxial = true;
LetterScreen
Some documents have the secondary (ghost) portrait formed by the wavy lines of the personal data, according to the LetterScreen++ technology.
To enable, use the checkLetterScreen
parameter:
DocReader.shared.processParams.authenticityParams = AuthenticityParams.default()
DocReader.shared.processParams.authenticityParams?.checkLetterScreen = true
RGLAuthenticityParams *authenticityParams = [[RGLAuthenticityParams alloc] init];
[RGLDocReader shared].processParams.authenticityParams = authenticityParams;
[RGLDocReader shared].processParams.authenticityParams.checkLetterScreen = @YES;
val authenticityParams = AuthenticityParams.defaultParams()
authenticityParams.checkLetterScreen = true
DocumentReader.Instance().processParams().authenticityParams = authenticityParams
AuthenticityParams authenticityParams = AuthenticityParams.defaultParams();
authenticityParams.checkLetterScreen = true;
DocumentReader.Instance().processParams().authenticityParams = authenticityParams;
DocumentReader.instance.processParams.authenticityParams.checkLetterScreen = true;
DocumentReader.setProcessParams({
authenticityParams: {
checkLetterScreen: true
}
}, _ => { }, _ => { })
DocumentReader.setProcessParams({
authenticityParams: {
checkLetterScreen: true
}
})
DocumentReader.setProcessParams({
authenticityParams: {
checkLetterScreen: true
}
}, function (m) { }, function (e) { })
// Android
DocumentReader.Instance().ProcessParams().AuthenticityParams = AuthenticityParams.DefaultParams();
DocumentReader.Instance().ProcessParams().AuthenticityParams.CheckLetterScreen = (Java.Lang.Boolean)true;
// iOS
RGLDocReader.Shared.ProcessParams.AuthenticityParams = RGLAuthenticityParams.DefaultParams();
RGLDocReader.Shared.ProcessParams.AuthenticityParams.CheckLetterScreen = 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.