idData library
The following sections describe the properties and methods in the IdData library.
The idData library extends the function set introduced in the idData library of the ScanW wrapper library. The library exports the capability to automatically detect the current card type by setting the current region. The term Region refers to a collection of countries in the same vicinity, and in the near future, as more and more countries are added to the analyzing engine database, this term will converge to the five major continents.
idData library functions
Section titled “idData library functions”The following idData library functions are described in this section:
Country2Id
Section titled “Country2Id”Gets the Country ID number
Syntax
Country2Id (CountryName As String) As LongParameters
| Parameter | Description |
|---|---|
| [in] CountryName | The country name as retrieved from the AcuFill SDK |
Return Values
| Value | Description |
|---|---|
| ID_ERR_NO_MATCH | The CountryName parameter doesn’t contain the country name |
RegionSet
Section titled “RegionSet”The AcuFill SDK can automatically detect the card type using the following steps:
- Set the region number.
- Run the AutoDetectStateEx function (as described in the ScanW.pdf programming reference) after scanning the image.
Currently, the regions that support autodetection are:
| ID | Region |
|---|---|
| 0 | USA (DEFAULT) |
| 1 | Canada |
| 4 | Australia |
| 5 | Asia |
The autodetection will support additional regions in the upcoming versions. For a complete list of the regions and their related states, see Appendix A.
Note: Upon invocation of the library, the default region is set to USA (Region Number 0).
Syntax
RegionSet (RegionId As Integer) As LongParameters
| Parameter | Description |
|---|---|
| [in] RegionId | The current region ID |
Return Values
| Value | Description |
|---|---|
| ID_ERR_AUTO_DETECT_NOT_SUPPORTED | The RegionId parameter doesn’t support auto detection |
| ID_ERR_NO_MATCH | The RegionId parameter is not a valid region identifier |
| ID_TRUE | Region setting successful |
RegionSetDetectionSequence
Section titled “RegionSetDetectionSequence”Like the RegionSet function, this function will do the same but this time the AcuFill SDK will try to find the card type in all the given regions IDs in this function. For example, if call this function with a 0 and 1 (for USA and Canada, respectively) and now whenever you call the DetectStateEx function with USA or Canadian cards, it will find the card.
Syntax
RegionSetDetectionSequence RegionSetDetectionSequence (lRegionId0 As Long, lRegionId1 As Long, lRegionId2 As Long, lRegionId3 As Long, lRegionId4 As Long, lRegionId5 As Long, lRegionId6 As Long) As LongParameters
| Parameter | Description |
|---|---|
| [in] RegionId0 | The current region ID |
| [in] RegionId1 | The current region ID |
| [in] RegionId2 | Not currently supported |
| [in] RegionId3 | Not currently supported |
| [in] RegionId4 | The current region ID |
| [in] RegionId5 | The current region ID |
| [in] RegionId6 | The current region ID |
Return Values
| Value | Description |
|---|---|
| ID_ERR_AUTO_DETECT_NOT_SUPPORTED | The RegionId parameter doesn’t support auto detection |
| ID_ERR_NO_MATCH | The RegionId parameter is not a valid region identifier |
| ID_TRUE | Region setting successful |
RegionGetFirst
Section titled “RegionGetFirst”The AcuFill SDK divides the supported countries into several major regions. The regions are organized in a list that can be retrieved by calling to this function once, and then continuously calling the function RegionGetNext().
Note: The list size and order may vary in the future, as the AcuFill SDK will include more and more regions. For example, regions 0 and 1 (USA and Canada respectively) are designated to be unified into a single region (North America region) in later versions. Therefore, you should never fix the region values in your code and always retrieve it using the function RegionGetFirst and RegionGetNext.
Syntax
RegionGetFirst () As LongReturn Values
Returns the value of the first region in the AcuFill SDK region list
RegionGetNext
Section titled “RegionGetNext”Retrieves the region list by:
- Calls the function RegionGetFirst once
- Calls RegionGetNext continuously (in a loop) until the value ID_ERR_NO_NEXT_COUNTRY is returned. For each call, the function returns the ID of the next region.
Syntax
RegionGetNext () As LongReturn Values
| Value | Description |
|---|---|
| ID_ERR_NO_MATCH | The RegionGetFirst function was not previously called |
| ID_ERR_NO_NEXT_COUNTRY | The list has ended (the last region was retrieved in the previous function call). Otherwise, the function returns the value of the next region ID. |
RegionGetNameById
Section titled “RegionGetNameById”Converts region enum values into the region string name. This function, combined with the RegionGetFirst and RegionGetNext functions, builds the region name list.
Syntax
RegionGetNameById (RegionId As Integer, RegionName As String) As LongParameters
| Value | Description |
|---|---|
| [in] RegionId | The region’s numeric value |
| [out] RegionName | A string that accepts the region name |
Return Values
| Value | Description |
|---|---|
| ID_ERR_NO_MATCH | The RegionId parameter is not a valid region enum |
| ID_TRUE | Region found; the RegionName string returns loaded with the region name |
RegionGetIdByName
Section titled “RegionGetIdByName”Converts the region name values into a region ID
Syntax
RegionGetIdByName (RegionName As String, RegionId As Integer) As LongParameters
| Value | Description |
|---|---|
| [in] RegionName | The region name |
| [out] RegionId | An integer that accepts the region ID |
Return Values
| Value | Description |
|---|---|
| ID_ERR_NO_MATCH | The RegionName parameter is not a valid region enumeration |
| ID_TRUE | Region found; the RegionId string returns the match region ID number with the RegionID |
RegionAutoDetectSupport
Section titled “RegionAutoDetectSupport”Detects whether a document of a specific state can be automatically detected by the AutoDetectStateEx function after scanning the document. If so, AutoDetectStateEx will return the proper state enum, and this value can be used as an input parameter to the ProcState function, which retrieves the data from the image.
Note: If RegionAutoDetectSupport returns ID_FALSE, then skip the call to AutoDetectStateEx and call ProcState directly, while setting the stateID parameter manually.
Syntax
RegionAutoDetectSupport (RegionId As Integer) As LongParameters
| Value | Description |
|---|---|
| [in] RegionId | The region enumeration value |
Return Values
| Value | Description |
|---|---|
| ID_ERR_NO_MATCH | The RegionId parameter does not contain a valid region enum. |
| ID_TRUE | The RegionId parameter represents a region that supports autodetection. |
| ID_FALSE | The RegionId parameter represents a region that does not support autodetection. |
RegionByCountry
Section titled “RegionByCountry”Detects the region that contains the country
For a complete list of the regions and their related states, see Appendix A.
Syntax
RegionByCountry (Country As Integer) As LongParameters
| Setting | Description |
|---|---|
| [in] Country | Constant value of a country |
Return values
| Value | Description |
|---|---|
| ID_ERR_NO_MATCH | The Country parameter does not contain a valid country ID. Otherwise, this returns the region ID that contains the input country |
RegionGetFirstCountry
Section titled “RegionGetFirstCountry”Gets the list of countries in the region (when used with RegionGetNextCountry)
Syntax
RegionGetFirstCountry (region As Integer) As LongParameters
| Setting | Description |
|---|---|
| [in] region | The region ID that contains the country list |
Return Values
| Value | Description |
|---|---|
| ID_TRUE | Function succeeded |
| ID_ERR_NO_MATCH | The value in region is not a valid region ID. Otherwise, the function returns the first country ID in the region. |
RegionGetNextCountry
Section titled “RegionGetNextCountry”Use this function (combined with RegionGetFirstCountry) to obtain the list of countries in the region. Call RegionGetFirstCountry once, then call RegionGetNextCountry continuously in a loop and store the returned value until the ID_ERR_NO_NEXT_COUNTRY value is returned.
You can use the following strategy to build a complete region, country, and state tree:
- Retrieve the full region list using RegionGetFirst and RegionGetNext functions.
- For each Region, retrieve the full countries list using RegionGetFirstCountry and RegionGetNextCountry functions.
- For each Country, retrieve the full state list using GetFirstStateByCountry and GetNextStateByCountry functions.
Syntax
RegionGetNextCountry (region As Integer) As LongParameters
| Setting | Description |
|---|---|
| [in] region | The region ID that contains the country list |
Return Values
| Value | Description |
|---|---|
| ID_TRUE | Function succeeded |
| ID_ERR_NO_MATCH | Value in region not a valid region ID. Otherwise, the function returns the next country ID in the region. |
| ID_ERR_NO_NEXT_COUNTRY | No next country in list; last call retrieved the last country in the list |
Id2Country2
Section titled “Id2Country2”Converts the country ID number to the country name, in two letters (as defined by ISO 3166) For a complete list of the regions and their related states, see Appendix A.
Syntax
Id2Country2 (id As Integer, country As String) As LongParameters
| Setting | Description |
|---|---|
| [in] id | The country ID number |
| [out] country | The country name in a 2 letter format (ISO 3166) |
Return Values
| Value | Description |
|---|---|
| ID_TRUE | Function succeeded |
| ID_ERR_NO_MATCH | The value in id is not a valid country ID |
Id2Country3
Section titled “Id2Country3”Converts between the country ID number and the country name. The returned name is the country name in three letters as defined by ISO 3166 spec.
For a complete list of the regions and their related states, see Appendix A.
Syntax
Id2Country3 (id As Integer, country As String) As LongParameters
| Setting | Description |
|---|---|
| [in] id | The country ID number |
| [out] country | The country name in a three-letter format (ISO 3166) |
Return Values
| Value | Description |
|---|---|
| ID_TRUE | Function succeeded |
| ID_ERR_NO_MATCH | The value in id is not a valid country ID |
GetFaceImageBuffer
Section titled “GetFaceImageBuffer”Extracts the face image from the document image to the given buffer
The source document image can be an existing image file (in BMP format) or the last scanned document (stored in the internal image buffer). If the SourceFile parameter is an empty string, then the image is taken from the internal image buffer. If this parameter contains the full name of a valid image file, then this file is used.
Syntax
GetFaceImageBuffer (Source As String, buffer As String, FileType As String, StateID as Integer) As LongParameters
| Setting | Description |
|---|---|
| [in] Source | Name of the source driver’s license image file |
| [in] buffer | A string buffer that contains the image content upon a successful return |
| [in] FileType | Sets the buffer image format. May be one of the following strings (case-insensitive): BMP | PNG | JPG | PCX | PSD | TIF |
| [in] StateID | The state ID |
Return Values
| Value | Description |
|---|---|
| ID_TRUE | Function succeeded |
| ID_FALSE | Function failed |
GetSignatureImageBuffer
Section titled “GetSignatureImageBuffer”Extracts the signature image from the document image to the given buffer
The source document image can be an existing image file (in BMP format) or the last scanned document (stored in the internal image buffer). If the SourceFile parameter is an empty string, then the image is taken from the internal image buffer. If this parameter contains the full name of a valid image file, then this file is used.
Syntax
GetSignatureImageBuffer (Source As String, buffer As String, FileType As String, StateID As Integer) As LongParameters
| Setting | Description |
|---|---|
| [in] Source | Name of the source driver’s license image file |
| [in] buffer | A string buffer that contains the image content upon a successful return |
| [in] FileType | Sets the buffer image format. May be one of the following strings (case-insensitive): BMP | PNG | JPG | PCX | PSD | TIF |
| [in] StateID | The state ID |
Return Values
| Value | Description |
|---|---|
| ID_TRUE | Function succeeded |
| ID_FALSE | Function failed |
GetFaceImageBufferEx
Section titled “GetFaceImageBufferEx”Extracts the face image from the document image to the given buffer. The source document image can be an existing image file (in BMP format) or the last scanned document (stored in the internal image buffer). If the SourceFile parameter is an empty string, then the image is taken from the internal image buffer. If this parameter contains the full name of a valid image file, then this file is used.
You can change the color and DPI of the original image and get it with the new color and DPI according to the given values in the new buffer image.
Syntax
pGetFaceImageBufferEx (Source As String, buffer As String,FileType As String, StateID as Integer, ToColor as Integer,ToDPI as Integer) As LongParameters
| Setting | Description |
|---|---|
| [in] Source | Name of the source driver’s license image file |
| [in] buffer | A string buffer that contains the image content upon a successful return |
| [in] FileType | Sets the buffer image format. May be one of the following strings (case insensitive): BMP | PNG | JPG | PCX | PSD | TIF |
| [in] StateID | The state ID |
| [In] ToColor | Set the new Image scheme. Values: |
| [in] ToDPI | Sets the new Image DPI. A value of 0 indicates no DPI modification. |
Return Values
| Value | Description |
|---|---|
| ID_TRUE | Function succeeded |
| ID_FALSE | Function failed |
GetSignatureImageBufferEx
Section titled “GetSignatureImageBufferEx”Extracts the signature image from the document image to the given buffer. The source document image can be an existing image file (in BMP format) or the last scanned document (stored in the internal image buffer). If the SourceFile parameter is an empty string, then the image is taken from the internal image buffer. If this parameter contains the full name of a valid image file, then this file is used.
You can change the color and DPI of the original image and get it with the new color and DPI according to the given values in the new buffer image.
Syntax
GetSignatureImageBufferEx (Source As String, buffer As String, FileType As String, StateID As Integer, ToColor as Integer, ToDPI as Integer) As LongParameters
| Setting | Description |
|---|---|
| [in] Source | Name of the source driver’s license image file |
| [in] buffer | A string buffer that contains the image content upon a successful return |
| [in] FileType | Sets the buffer image format. May be one of the following strings (case insensitive): BMP | PNG | JPG | PCX | PSD | TIF |
| [in] StateID | The state ID |
| [In] ToColor | Set the new Image scheme. Values: |
| [in] ToDPI | Set the new Image DPI. A value of 0 indicates no DPI modification. |
Return Values
| Value | Description |
|---|---|
| ID_TRUE | Function succeeded |
| ID_FALSE | Function failed |
GetFaceImageDuplex
Section titled “GetFaceImageDuplex”Gets the face image without knowing whether it is located (on front or back)
Note: Duplex scanning is only available with ScanShell 800DX/800DXN/3100D/3100DN.
Use this function to extract the image rectangle of the person’s face from the source ID image. The source image can be either:
-
Internal Image - The last scanned image (stored in the internal memory). This image will be used only if the SourceFileName string is empty.
-
External Image File - The full file name is given in SourceFileName parameter. If an external file is used as the source image, it must be a 24-bit image (true color) and have a resolution of 300dpi. The source and file destination can be one of the following formats: BMP, TIFF, JPG, PCX, TGA, PNG, PSD.
Note: Use the proper file extension (for example, .bmp for bitmap, .jpg for Jpeg) to specify the image format.
Syntax
GetFaceImageDuplex (SourceFileName As String, BackSourceFileName As String, DestFileName As String, stateId As Integer) As LongParameters
| Parameter | Description |
|---|---|
| [in] SourceFileName | Null-terminated string that contains the full path of the scanned ID image. If this string is empty the internal image is used as the image source. |
| [in] BackSourceFileName | Null-terminated string that contains the full path of the scanned back side ID image. If this string is empty the internal image is used as the image source. |
| [in] DestFileName | Null-terminated string that contains the full name of the destination image file that will contain the face image from the ID document. |
| [in] stateId | The state index value as defined in the idLibDef.bas file |
Return Values
| Value | Description |
|---|---|
| ID_TRUE | Function succeeded |
| ID_FALSE | Internal processing error |
| LICENSE_INVALID | Library not initialized with proper license |
| ID_ERR_FILE_OPEN | Failed to load source image (if SourceFileName is not empty) |
| INVALID_INTERNAL_IMAGE | No internal image loaded; attempted to use internal image without first scanning image |
| ID_ERR_STATE_NOT_SUPORTED | Requested state not supported |
| ID_BAD_DESTINATION_FILE | Bad destination path (couldn’t create the destination file) |
| ID_ERR_FILE_OPEN | Bad source image file (used only when using a file as the source image); source file is missing or can’t be accessed for reading |
| INVALID_INTERNAL_IMAGE | Bad internal image (used only when extracting the face image from the image stored in the internal buffer); no image in buffer |
| ID_ERR_FACE_IMAGE_ NOT_FOUND | Analyzer can’t detect the face image in the driver’s license image |
| ID_ERR_CANNOT_DELETE_ DESTINATION_IMAGE | A file with the same name as the destination file already exists and can’t be overwritten |
| ID_ERR_CANNOT_COPY_ TO_DESTINATION | Destination file can’t be opened for write on the disk |
GetSignatureImageDuplex
Section titled “GetSignatureImageDuplex”Gets the signature image without knowing whether it is located (on front or back)
Note: Duplex scanning is only available with ScanShell 800DX/800DXN/3100D/3100DN.
Use this function to extract the image rectangle of the person’s signature from the source ID image. The source image can be either:
-
Internal Image - The last scanned image (stored in the internal memory). This image will be used only if the SourceFileName string is empty.
-
External Image File - The full file name is given in SourceFileName parameter. If an external file is used as the source image, it must be a 24-bit image (true color) and have a resolution of 300 DPI. The source and file destination can be in one of the following formats: BMP, TIFF, JPG, PCX, TGA, PNG, and PSD.
Note: Use the proper file extension (for example, .bmp for bitmap, .jpg for Jpeg) to specify the image format.
Syntax
GetSignatureImageDuplex (SourceFileName As String, BackSourceFileName As String, DestFileName As String, stateId As StringParameters
| Parameter | Description |
|---|---|
| [in] SourceFileName | Null-terminated string that contains the full path of the scanned ID image. If this string is empty the internal image is used as the image source. |
| [in] BackSourceFileName | Null-terminated string that contains the full path of the scanned back side ID image. If this string is empty the internal image is used as the image source. |
| [in] DestFileName | Null-terminated string that contains the full name of the destination image file that will contain the face image from the ID document. |
| [in] stateId | The state index value as defined in the idLibDef.bas file |
Return Values
| Value | Description |
|---|---|
| ID_TRUE | Function succeeded |
| ID_FALSE | Internal processing error |
| LICENSE_INVALID | Library not initialized with proper license |
| ID_ERR_FILE_OPEN | Failed to load source image (if SourceFileName is not empty) |
| INVALID_INTERNAL_IMAGE | No internal image loaded. This value returns when attempting to use the internal image without scanning an image first |
| ID_ERR_STATE_ NOT_SUPORTED | Requested state not supported |
| ID_BAD_DESTINATION_FILE | Bad destination path (couldn’t create the destination file) |
| ID_ERR_FILE_OPEN | Bad source image file (used only when using a file as the source image). This value returns if the source file is missing or can’t be accessed for reading |
| INVALID_INTERNAL_IMAGE | Bad internal image (used only when extracting the face image from the image stored in the internal buffer). This value returns if there is no image in the buffer. |
| ID_ERR_SIGNATURE_IMAGE_ NOT_FOUND | Analyzer can’t detect the signature image in the driver’s license |
| ID_ERR_CANNOT_DELETE_ DESTINATION_IMAGE | A file with the same name as the destination file already exists and can’t be overwritten |
| ID_ERR_CANNOT_COPY_ TO_DESTINATION | Destination file can’t be opened for write on the disk |
DetectProcessAndCompareEX
Section titled “DetectProcessAndCompareEX”Detects and processes a card with two sides that each of the sides can contain text and/or barcode data
After using this function, you can get the fields data from the idData and Barcode classes (using the ScanShell 3000D/ScanShell 800DX only). To use the internal image (after scanning a card), ImageA and ImageB should be empty strings.
Syntax
DetectProcessAndCompareEX (ImageA As String, ImageB As String, state As Integer, ImageA_assignment As Integer, angleA As Integer, angleB As Integer, reserved As Integer) As LongParameters
| Parameter | Description |
|---|---|
| [in] ImageA | Full name of the source driver’s license image file (Side A) |
| [in] ImageB | Full name of the source driver’s license image file (Side B) |
| [in] State | StateID can be -1 for auto detect state |
| [in,out] ImageA_assignment | |
| [in,out] angleA | Contains the angle that has been used to rotate image A |
| [in,out] angleB | Contains the angle that has been used to rotate image B |
| [in] reserved | Use the value 0 |
Return Values
| Value | Description |
|---|---|
| stateID | Function succeeded |
| -1 | Function failed |
DetectProcessAndCompareEX2
Section titled “DetectProcessAndCompareEX2”Detects and processes a card with two sides that each of the sides can contain text and/or barcode data. After using this function, you can get the fields data from the idData and Barcode classes (using the ScanShell 3000D/ScanShell 800DX only). To use the internal image (after scanning a card), ImageA and ImageB should be empty strings.
Syntax
DetectProcessAndCompareEX2 (ImageA As String, ImageB As String, state As Integer, ImageA_assignment As Integer, angleA As Integer, angleB As Integer, defaultBarcode As Integer, reserved As Integer) As LongParameters
| Parameter | Description |
|---|---|
| [in] ImageA | Full name of the source driver’s license image file (Side A) |
| [in] ImageB | Full name of the source driver’s license image file (Side B) |
| [in] State | StateID can be -1 for auto detect state |
| [in,out] ImageA_assignment | |
| [in,out] angleA | Contains the angle that has been used to rotate image A |
| [in,out] angleB | Contains the angle that has been used to rotate image B |
| [in] defaultBarcode | Use the 2D or 1D barcode as the first extraction process: 0=2D and 1=1D |
Return Values
| Value | Description |
|---|---|
| stateID | Function succeeded |
| -1 | Function failed |
DetectProcessDuplex
Section titled “DetectProcessDuplex”Detects the front side and extracts the data from the two sides of a card. After using this function, you can get the fields value from the idData class (using ScanShell 3000D/ScanShell 800DX only). To use the internal image (after scanning a card), ImageA and ImageB should be empty strings.
Syntax
DetectProcessDuplex(ImageA As String, ImageB As String, state As Integer, ImageA_assignment As Integer, angleA As Integer, angleB As Integer, reserved As Integer) As LongParameters
| Parameter | Description |
|---|---|
| [in] ImageA | Full name of the source driver’s license image file (Side A) |
| [in] ImageB | Full name of the source driver’s license image file (Side B) |
| [in] State | StateID can be -1 for auto detect state |
| [in,out] ImageA_assignment | |
| [in,out] angleA | Contains the angle that has been used to rotate image A |
| [in,out] angleB | Contains the angle that has been used to rotate image B |
| [in] reserved | Use the value 0 |
Return Values
| Value | Description |
|---|---|
| stateID | Function succeeded |
| -1 | Function failed |
DetectProcessDuplexEX
Section titled “DetectProcessDuplexEX”Detects the front side and extracts the data from the two sides of a card. After using this function, you can get the fields value from the idData class (using ScanShell 3000D/ScanShell 800DX only). To use the internal image (after scanning a card), ImageA and ImageB should be empty strings.
Syntax
DetectProcessDuplexEx(ImageA As String, ImageB As String, state As Integer, ImageA_assignment As Integer, angleA As Integer, angleB As Integer, reserved As Integer) As LongParameters
| Parameter | Description |
|---|---|
| [in] ImageA | Full name of the source driver’s license image file (Side A) |
| [in] ImageB | Full name of the source driver’s license image file (Side B) |
| [in] State | StateID can be -1 for auto detect state |
| [in,out] ImageA_assignment | |
| [in,out] angleA | Contains the angle that has been used to rotate image A |
| [in,out] angleB | Contains the angle that has been used to rotate image B |
| [in] reserved | Use the value 0 |
Return Values
| Value | Description |
|---|---|
| stateID | Function succeeded |
| -1 | Function failed |
ProcMRZ
Section titled “ProcMRZ”Scans a full image and extract only the MRZ as raw data. To use the internal image (after scanning a card), FileName should be an empty string.
Syntax
ProcMRZ (FileName As String, rotationAngle As Integer) As LongParameters
| Parameter | Description |
|---|---|
| [in] FileName | Full name of the source driver’s license image file (Side A) |
| [in,out] rotationAngle | Contains the angle that has been used to rotate the image |
Return Values
| Value | Description |
|---|---|
| 1 | Function succeeded |
| -1 | Function failed |
ResetIDFields
Section titled “ResetIDFields”Clears data from all the fields in the idData class
Syntax
ResetIDFields()Parameters
None
Return Values
None
GetCountryIDByStateID
Section titled “GetCountryIDByStateID”Gets the country ID by a given state ID
Syntax
GetCountryIDByStateID (StateID As Integer)Parameters
| Parameter | Description |
|---|---|
| [in] StateID | Integer value of the StateId |
Return Values
| Value | Description |
|---|---|
| Integer value | Country ID |
ActivateDmAuthentication
Section titled “ActivateDmAuthentication”Activates the watermark detection and attempts to load and initialize the Digimarc™ library for watermark detection and verification
This library is installed in the AcuFill SDK folder if the proper checkbox is selected while installing the AcuFill SDK. The mechanism verifies the content of the following fields:
- Driver license number
- Jurisdiction (Issuing State)
- Date of birth
- Issue date
Call this function only once (normally in the after initializing the idCard library by calling ScanW.IdCard.InitLibrary()).
Important: It is important to locate the AcuFill SDK files (and the Digimarc™ files) where the main application executable reside.
After the mechanism is activated, the Driver license AcuFill SDK will automatically verify each of the four fields after the text extraction is done. The result of this verification can be retrieved by reading the relevant properties (for example, LicenseAuthentication*,* StateAuthentication).
Syntax
ActivateDmAuthentication (Activate as BOOLEAN)Parameters
| Parameter | Description |
|---|---|
| [in] Activate | Indicates whether to activate/deactivate watermark detection mechanism TRUE | FALSE |
Return Values
| Value | Description |
|---|---|
| ID_TRUE (1) | Operation completed successfully |
| ID_ERR_DM_LIBRARY_NOT_FOUND (-24) | Could not find Digimarc™ files in the application folder |
RefreshAuthenticationStatus
Section titled “RefreshAuthenticationStatus”Refreshes the values of the verification properties
Call this function before reading these values of the properties (for example, LicenseAuthentication, StateAuthentication) to get the current reading verification results.
Syntax
RefreshAuthenticationStatus ()Parameters
None
Return Values
None
GetFaceImageEx
Section titled “GetFaceImageEx”This function is similar to the GetFace function but can extract more than one face image from the card. The imageType value can be 0 to get the regular face image, or 1 to get face image with the background. This function with ImageType other than a 0 value, will work only for supported cards. For now only “Spain Police” cards are supported by this function.
Syntax
GetFaceImageEx (Source As String, Dest As String, idState As Long, ImageType As Long) As LongParameters
| Value | Description |
|---|---|
| [in] szSourceFile | Full name of the source driver’s license image file |
| [in] szDestFile | Full name of the destination face image |
| [in] stateID | The state ID |
| [in] ImageType | The face image type to extract |
Return Values
| Value | Description |
|---|---|
| ID_ERR_FILE_OPEN | Can’t open input image file |
| INVALID_INTERNAL_IMAGE | Invalid internal image file |
| ID_ERR_CANNOT_DELETE_DESTINATION_IMAGE | Destination file already exists and can’t be overwritten |
| ID_ERR_CANNOT_COPY_TO_DESTINATION | Failed to copy face image file to destination file |
| ID_ERR_FACE_IMAGE_NOT_FOUND | Failed to extract face image; couldn’t locate face rectangle |
| ID_FALSE | Image processing failed |
| ID_TRUE | Function completed successfully |
GetMRZChecksumVerified
Section titled “GetMRZChecksumVerified”Verifies the field value with its checksum digit on the MRZ line (from which it was taken)
Syntax
int GetMRZChecksumVerified (int FieldIndex)Parameters
| Parameter | Description |
|---|---|
| [in] FieldIndex | Constant value of the field |
Return Values
| Value | Description |
|---|---|
| 1 | Verification success |
| 0 | Verification failed |
| -1 | Not verified |
GetFaceAndSignatureImagesOnly
Section titled “GetFaceAndSignatureImagesOnly”This function is similar to the GetFace function but will extract the face and signature images. The imageType value can be 0 to get the regular face image, or 1 to get face image with the background. This function with ImageType other than a 0 value, will work only for supported cards. Currently only “Spain Police” cards are supported by this function.
Syntax
GetFaceAndSignatureImagesOnly (Source As String, FaceDest As String, SignatureDest As String, idState As Long, ImageType As Long) As LongParameters
| Value | Description |
|---|---|
| [in] szSourceFile | Full name of the source driver’s license image file |
| [in] szFaceDest | Full name of the destination face image |
| [in] szSignatureDest | Full name of the destination signature image |
| [in] stateID | The state ID |
| [in] ImageType | The face image type to extract |
Return Values
| Value | Description |
|---|---|
| ID_ERR_FILE_OPEN | Cannot open input image file |
| INVALID_INTERNAL_IMAGE | Invalid internal image file |
| ID_ERR_CANNOT_DELETE_ DESTINATION_IMAGE | Destination file already exists and can’t be overwritten |
| ID_ERR_CANNOT_COPY_ TO_DESTINATION | Failed to copy face image file to destination file |
| ID_ERR_FACE_IMAGE_ NOT_FOUND | Failed to extract face image; couldn’t locate face rectangle |
| ID_FALSE | Image processing failed |
| ID_TRUE | Function completed successfully |
SetBrightnessForFaceImage
Section titled “SetBrightnessForFaceImage”Sets the brightness of the face image returned by any call to get the face image later
Syntax
SetBrightnessForFaceImage (int nBrightness)Parameters
| Value | Description |
|---|---|
| [in] nBrightness | A value between 0 – 100 that sets the brightness |
SetFieldToBeErasedFromImage
Section titled “SetFieldToBeErasedFromImage”Causes the indicated fields to be erased from the image when called before ID card processing
Syntax
void SetFieldToBeErasedFromImage(int nFieldIndex,bool bErase)Parameters
| Parameter | Description |
|---|---|
| [in] nFieldIndex | The index of the field to be erased. Note: This should correspond to the field number in IDcardExp.h in the AcuFill SDK folder. |
| [in] bErase | Adds or removes a field to the list of erased fields TRUE | FALSE |
Return Values
None
GetFrontBackData
Section titled “GetFrontBackData”Gets the data on the front and back sides of the processed card
Syntax
void GetFrontBackData (int iFrontBack, int& iTemplate, int& iMRZ,int& iBarCode)Parameters
| Parameter | Description |
|---|---|
| [out] iTemplate | Set by the AcuFill SDK to one of the values in the following table: |
| [out] iMRZ | Set by the AcuFill SDK to one of the values in the preceding table |
| [out] iBarCode | Set by the AcuFill SDK to one of the values in the preceding table |
| [in] iFrontBack | 0 = Front, 1 = Back |
Return Values
None
IdData library properties
Section titled “IdData library properties”IdCountry
Section titled “IdCountry”Returns the full name of the country that issued the document (read-only)
Syntax
IdCountry As StringParameters
None
Return Values
Returns the IdCountry value in string format
CountryShort
Section titled “CountryShort”Returns the name abbreviation of the country that issued the document (read-only)
Original
Section titled “Original”Returns general data field from the document (read-only)
Address6
Section titled “Address6”Returns general data field from the document (read-only)
DateOfBirth4
Section titled “DateOfBirth4”Returns the date of birth with year in a 4-digit format (read-only)
ExpirationDate4
Section titled “ExpirationDate4”Returns an expiration date with year in a 4-digit format (read-only)
IssueDate4
Section titled “IssueDate4”Returns an issue date with year in a 4-digit format (read-only)
GeneralWaterMark
Section titled “GeneralWaterMark”Returns the status of the general watermark indication on the card (read-only)
Note: If this value (integer) indicates an error, then the values of the tested fields are not valid.
Return Values
| Value | Description |
|---|---|
| DM_SUCCESS (1) | Watermark exists on the card and read successfully |
| DM_ERROR_DEBUGGER_PRESENT (-24) | Cannot continue to process watermark because of a debugger presence (security issue). This is not an error as the detection will work normally after the debugger is turned off |
| DM_ERROR_LIB_NOT_FOUND (-1) | Could not find Digimarc™ library files |
| DM_ERROR_BAD_IMAGE_NAME (-2) | Internal error |
| DM_ERROR_WM_NOT_FOUND (-3) | Could not find watermark indication on the driver license card |
| DM_ERROR_WM_NOT_SUPPORTED (-4) | Watermark is not supported on this driver license card |
| DM_ERROR_FAIL_TO_GET_IMAGE_HANDLE (-23) | Internal error |
| DM_ERROR_FAIL_TO_LOAD_IMAGE (-22) | Internal error |
IssueDateAuthentication
Section titled “IssueDateAuthentication”Integer that reports the verification results of the Issue Date field (read-only)
Note: The content of this property is valid only if the GeneralWaterMark property is DM_SUCCESS.
Return Values
| Value | Description |
|---|---|
| DM_SUCCESS (1) | Field content authenticated and matches the field value embedded in the watermark |
| DM_FAILED (0) | Field content not authenticated and does not match the field value embedded in the watermark. |
| DM_ERROR_WM_NOT_FOUND (-3) | Digimarc™ library is missing; authentication failed |
DobDateAuthentication
Section titled “DobDateAuthentication”Integer that reports the verification results of the Date of Birth field (read-only)
Note: The content of this property is valid only if the GeneralWaterMark property is DM_SUCCESS.
Return Values
| Value | Description |
|---|---|
| DM_SUCCESS (1) | Field content authenticated and matches the field value embedded in the watermark |
| DM_FAILED (0) | Field content not authenticated and does not match the field value embedded in the watermark. |
| DM_ERROR_WM_NOT_FOUND (-3) | Digimarc™ library is missing; authentication failed |
LicenseAuthentication
Section titled “LicenseAuthentication”Integer that reports the verification results of the License field (read-only)
Note: The content of this property is valid only if the GeneralWaterMark property is DM_SUCCESS.
Return Values
| Value | Description |
|---|---|
| DM_SUCCESS (1) | Field content authenticated and matches the field value embedded in the watermark |
| DM_FAILED (0) | Field content not authenticated and does not match the field value embedded in the watermark. |
| DM_ERROR_WM_NOT_FOUND (-3) | Digimarc™ library is missing; authentication failed |
StateAuthentication
Section titled “StateAuthentication”Integer that reports the verification results of the State field (read-only)
Note: The content of this property is valid only if the GeneralWaterMark property is DM_SUCCESS.
Return Values
| Value | Description |
|---|---|
| DM_SUCCESS (1) | Field content authenticated and matches the field value embedded in the watermark |
| DM_FAILED (0) | Field content not authenticated and does not match the field value embedded in the watermark. |
| DM_ERROR_WM_NOT_FOUND (-3) | Digimarc™ library is missing; authentication failed |
DocType
Section titled “DocType”Returns template name of the last processed image (read-only)
Syntax
DocType As StringParameters
None
Return Values
Returns the DocType value
NameFirst_NonMRZ
Section titled “NameFirst_NonMRZ”Returns first name data from the document and not from the MRZ lines (read-only)
Syntax
NameFirst_NonMRZ As StringParameters
None
Return Values
Returns the NameFirst_NonMRZ value
NameLast_NonMRZ
Section titled “NameLast_NonMRZ”Returns last name data from the document and not from the MRZ lines (read-only)
Syntax
NameLast_NonMRZ As StringParameters
None
Return Values
Returns the NameLast_NonMRZ value
NameSuffix
Section titled “NameSuffix”Returns suffix name data from the document and not from the MRZ lines (read-only)
Syntax
NameSuffix As StringParameters
None
Return Values
Returns the NameSuffix value
NameLast1
Section titled “NameLast1”Returns last name 1 data from the document (primarily used in Spain cards that contain more than one last name) (read-only)
Syntax
NameLast1 As StringNameLast2
Section titled “NameLast2”Returns last name 2 data from the document (primarily used in Spain cards that contain more than one last name) (read-only)
DatesFormat
Section titled “DatesFormat”Extracts the date fields in the required format (also applies to passport date fields) (read-only)
Return Values
| Value | Description |
|---|---|
| EXTRACT_DATE_FORMAT_NONE | 0 (Use the default date extraction) |
| EXTRACT_DATE_FORMAT_MDY | 1 (mm-dd-yy) |
| EXTRACT_DATE_FORMAT_DMY | 2 (dd-mm-yy) |
| EXTRACT_DATE_FORMAT_YMD | 3 (yy-mm-dd) |
| EXTRACT_DATE_FORMAT_YDM | 4 (yy-dd-mm) |
MotherName
Section titled “MotherName”Returns the Mother Name data from the document (read-only)
FatherName
Section titled “FatherName”Returns the Father Name data from the document (read-only)
IssueDateLocal
Section titled “IssueDateLocal”Returns the Issue Date Local data from the document (Issue Date in a local format or language) (read-only)
DateOfBirthLocal
Section titled “DateOfBirthLocal”Returns the Issue Date of Birth Local data from the document (Date of Birth in a local format or language) (read-only)
Nationality
Section titled “Nationality”Returns the Nationality data from the document (read-only)
PlaceOfIssue
Section titled “PlaceOfIssue”Returns the Place of Issue data from the document (read-only)
PlaceOfBirth
Section titled “PlaceOfBirth”Returns the Place of Birth data from the document (read-only)
Syntax