International ID/Passports
Model V2. Published on May 10, 2024.
Introduction
FormX is a powerful tool that can extract information from a variety of identity documents including passports, ID cards, and driver's licenses.
Supported Countries and ID Types
The following countries and ID types are currently supported by FormX:
Country | Type |
---|---|
All countries | Passport, Driver's License, Identity Cards |
Hong Kong | Identity Card |
Taiwan | National Identification Card |
Macau | Identity Card |
Singapore | NRIC, Work passes |
The list of supported countries and ID types is constantly growing, so if the one you need is not listed, please contact us for more information.
How to Use FormX
- Log in to the FormX Portal.
- Go to the Extractors page and click on "Create new extractor."
- Choose "Government ID/Passport" and give your extractor a name.
- Your extractor is now set up! To test it out, simply drag and drop a photo into the "Test" tab to view the extracted result.
Attributes
There are general attributes Formx will return for all types of ID/passport if such data exists.
Some document types may have additional attributes. Check it out below.
General attributes
These are the general attributes:
Attribute name | Meaning | Value |
---|---|---|
type_of_id | The type of document | type.country.subdivision e.g. id.hkg , driverslicense.usa.ny , other |
name | Full name of the holder | String, Variable length in latin script |
surname | Surname/Family name of the holder | String, Variable length in latin script |
given_name | Given names of the holder | String, Variable length in latin script |
name_non_latin | Name of the holder in non-latin script | String, Variable length in non-latin script |
surname_non_latin | Surname/Family name of the holder in non-latin script | String, Variable length in non-latin script |
given_name_non_latin | given names of the holder in non-latin script | String, Variable length in non-latin script |
date_of_birth | Date of birth of the holder | YYYY-MM-DD or YYYY-MM or YYYY |
date_of_issue | Issue date of the document | YYYY-MM-DD |
date_of_expiry | Expiry date of the document | YYYY-MM-DD |
sex | Sex or gender of the holder | M, F, or X |
place_of_birth | City or State of the holder’s birthplace | String, Variable length |
nationality | Nationality of the holder as printed on the document | String, Variable length |
nationality_code | Nationality of the holder in 3-letter code as defined in ICAO Doc 9303-3 | String, three letters |
issuing_authority | Issuing organization of the document as printed in the document | String, Variable length |
personal_number | Personal identification number given to holder by the issuing State or organization. | String, Variable length e.g. HKID number: A123456(7) |
document_number | The number given by the issuer to identify the document | String, Variable length |
portrait | The bounding box of the portrait of the holder | Array [x1,y1,x2,y2] |
signature | The bounding box of the signature of the holder | Array [x1,y1,x2,y2] |
address | Address of the holder | String, Variable length |
Passport attributes
If the uploaded document has type_of_id = "passport"
, these are the attributes one can get.
Attribute name | Meaning | Value |
---|---|---|
type_of_id | The type of document | String, "passport" |
surname | Surname or family name of the holder | String, Variable length in latin script |
given_name | Given names of the holder | String, Variable length in latin script |
surname_non_latin | Surname or family name of the holder in non-latin script | String, Variable length in non-latin script |
given_name_non_latin | Given name of the holder in non-latin script | String, Variable length in non-latin script |
type | Passport type | String, Variable length |
country_code | Country code | String, Variable length |
passport_number | Passport number | String, Variable length |
personal_number | Personal identification number given to holder by the issuing State or organization. | String, Variable length e.g. HKID number: A123456(7) |
nationality_alpha_3 | Nationality of the passport holder as listed in MRZ. It follows the standard of ISO 3166 alpha 3 with modification. | String, 1-3 characters |
nationality | A conversion of nationality_alpha_3 to its English counterparts by FormX | String, Variable length |
sex | Sex or gender of the holder | M, F, or X |
date_of_birth | Date of birth of the holder | YYYY-MM-DD or YYYY-MM or YYYY |
date_of_expiry | Expiry date of the document | YYYY-MM-DD |
place_of_birth | City or State of the holder’s birthplace | String, Variable length |
portrait | The bounding box of the portrait of the holder | Array [x1,y1,x2,y2] |
signature | The bounding box of the signature of the holder | Array [x1,y1,x2,y2] |
mrz_upper_line | The upper line of MRZ | String, Variable length |
mrz_lower_line | The second line of MRZ | String, Variable length |
mrz_validation | Validation results of a series of checking done by FormX to validate the information extracted from MRZ. | Dictionary with validation items in boolean. An example:{ "is_passport_number_valid": true, "is_date_of_birth_valid": true, "is_date_of_expiry_valid": true, "is_personal_number_valid": true, "is_composite_check_digit_valid": true } |
Hong Kong ID attributes
If the uploaded document has type_of_id = "id.hkg"
, these are the attributes one can get.
Attribute Name | Meaning | Data Type |
---|---|---|
type_of_id | The type of document | String, "id.hkg" |
chinese_commercial_code | A numeric or alphanumeric code used for administrative identification in Hong Kong | String, variable length |
name | Full name of the holder | String, variable length |
name_non_latin | Name of the holder in non-Latin script | String, variable length |
is_permanent_resident | Permanent resident status | Boolean |
sex | Sex or gender of the holder | M, F, or X |
date_of_birth | Date of birth of the holder | String, YYYY-MM-DD |
date_of_issue | Issue date of the document | String, YYYY-MM-DD |
personal_number | Personal identification number | String, variable length |
portrait | Portrait photo | String If a portrait photo is detected, value "portrait" will be returned |
Macau ID attributes
If the uploaded document has type_of_id = "id.mac"
, these are the attributes one can get.
Attribute Name | Meaning | Data Type |
---|---|---|
type_of_id | The type of document | String, "id.mac" |
given_name | Given name of the holder | String, variable length |
given_name_non_latin | Given name of the holder in non-Latin script | String, variable length |
chin_commercial_code_given_names | Chinese commercial code for given names | String, variable length |
date_of_birth | Date of birth of the holder | String, YYYY-MM-DD |
surname | Surname/Family name of the holder | String, variable length |
surname_non_latin | Surname/Family name of the holder in non-Latin script | String, variable length |
chin_commercial_code_surname | Chinese commercial code for surname | String, variable length |
is_permanent_resident | Permanent resident status | Boolean |
sex | Sex or gender of the holder (M, F, X) | M, F, or X |
date_of_expiry | Expiry date of the document | String, YYYY-MM-DD |
date_of_issue | Issue date of the document | String, YYYY-MM-DD |
date_of_first_issue | Date of first issue of the document | String, YYYY-MM-DD |
height | Height of the holder in meters | Float |
personal_number | Personal identification number | String, variable length |
signature | Signature of the holder | String If a signature is detected, value "signature" will be returned |
portrait | Portrait photo | String If a portrait photo is detected, value "portrait" will be returned |
Taiwan ID attributes
If the uploaded document has type_of_id = "id.twn"
, these are the attributes one can get.
Attribute Name | Meaning | Data Type |
---|---|---|
type_of_id | The type of document | String, id.twn |
name | Full name of the holder | String, variable length |
date_of_birth | Date of birth of the holder | String, YYYY-MM-DD |
personal_number | Personal identification number | String, variable length |
sex | Sex or gender of the holder | M, F, or X |
date_of_issue | Issue date of the document | String, YYYY-MM-DD |
portrait | Portrait photo | String If a portrait photo is detected, value "portrait" will be returned |
Singapore NRIC attributes
FormX returns a different set of attributes for the front and the back of a Singapore NRIC.
If the uploaded document has type_of_id = "id.sgp"
and form_type = "nric_front"
, these are the attributes one can get.
Attribute Name | Meaning | Data Type |
---|---|---|
type_of_id | The type of document | String, "id.sgp" |
form_type | Specific form type of the document | String, "nric_front" |
name | Full name of the holder | String, variable length |
personal_number | Personal identification number | String, variable length |
date_of_birth | Date of birth of the holder | String, YYYY-MM-DD |
sex | Sex or gender of the holder | M, F, or X |
place_of_birth | Place of birth of the holder | String, variable length |
race | Race of the holder | String, variable length |
If the uploaded document has type_of_id = "id.sgp"
and form_type = "nric_back"
, these are the attributes one can get.
Attribute Name | Meaning | Data Type |
---|---|---|
type_of_id | The type of document | String, "id.sgp" |
form_type | Specific form type of the document | String, "nric_back" |
personal_number | Personal identification number | String, variable length |
address | Residential address of the holder | String, variable length |
postal_code | Postal code of the holder's address | String, variable length |
date_of_issue | Issue date of the document | String, YYYY-MM-DD |
Thailand ID attributes
If the uploaded document has type_of_id = "id.tha"
and form_type = "thai_national_id_card"
, these are the attributes one can get.
Attribute Name | Meaning | Data Type |
---|---|---|
type_of_id | The type of document | String, "id.tha" |
form_type | Specific form type of the document | String, "thai_national_id_card" |
personal_number | Personal identification number | String, variable length |
request_number | Request number associated with the ID | String, variable length |
name_non_latin | Full name of the holder in non-Latin script | String, variable length |
given_name | Given name of the holder | String, variable length |
surname | Surname of the holder | String, variable length |
date_of_birth | Date of birth of the holder | String, YYYY-MM-DD |
religion | Religion of the holder | String, variable length |
address | Residential address of the holder | String, variable length |
date_of_issue | Issue date of the document | String, YYYY-MM-DD |
date_of_expiry | Expiry date of the document | String, YYYY-MM-DD |
portrait | Portrait photo | String If a portrait photo is detected, value "portrait" will be returned |
signature | Signature of the holder | String If a portrait photo is detected, value "signature" will be returned |
ID Liveness Detection
In most KYC processes, they require users to take pictures of their IDs using their phone cameras. FormX provide detection models to flag images that are in high risk of fraud. There are three ID spoofing types that our models can detect:
- Color Copy
- This involves scanned images, or scanned images printed on paper in color.
- Greyscale Copy
- Scanned copies in greyscale
- Screen Replay
- Photos of IDs displayed on the screen of another device.
To learn more about this feature, please refer to the ID Liveness Detection (Beta) page.
Updated 7 months ago