ID Scanning And Verification
Get Started With ID Capture
Quick overview
ID Capture provides the capability to scan personal identification documents, such as identity cards, passports or visas. In this guide you will learn step by step how to add ID Capture to your application. Roughly, the steps are:
Note
Using ID Capture at the same time as other modes (e.g. Barcode Capture or Text Capture) is currently not supported.
Create a DataCaptureContext.
Access a Camera.
Use IdCaptureSettings to configure the scan process.
Implement an IdCaptureListener to receive scan results.
Set up DataCaptureView and IdCaptureOverlay to see the camera feed and the scan UI.
Begin the scanning by adding an IdCapture to DataCaptureContext and starting a camera.
Prerequisites
Before starting with adding a capture mode, make sure that you have a valid Scandit Data Capture SDK license key and that you added the necessary dependencies. If you have not done that yet, check out this guide.
Note
You can retrieve your Scandit Data Capture SDK license key, by signing in to your account at ssl.scandit.com/dashboard/sign-in.
Please note that your license may support only a subset of ID Capture features. If you would like to use additional features please contact us at support@scandit.com.
Configure and Initialize the Library
The library needs to be configured and initialized before it can be used, this is done via the configure function.
The configuration expects a valid Scandit Data Capture SDK license key as part of the options.
The ConfigureOptions.libraryLocation configuration option must be provided and point to the location of the Scandit Data Capture library/engine location (external WebAssembly files): scandit-datacapture-sdk*.min.js and scandit-datacapture-sdk*.wasm. WebAssembly requires these separate files which are loaded by our main library at runtime. They can be found inside the engine folder in the library you either added and installed via npm or access via a CDN; if you added and installed the library, these files should be put in a path that’s accessible to be downloaded by the running library script. The configuration option that you provide should then point to the folder containing these files, either as a path of your website or an absolute URL (like the CDN one). By default the library will look at the root of your website. If you use a CDN to access the library, you will want to set this to the following values depending on the data capture mode you are using:
for barcode capture: https://cdn.jsdelivr.net/npm/scandit-web-datacapture-barcode@6.x/build/engine/, https://unpkg.com/browse/scandit-web-datacapture-barcode@6.x/build/engine/, or similar.
for ID capture: https://cdn.jsdelivr.net/npm/scandit-web-datacapture-id@6.x/build/engine/, https://unpkg.com/browse/scandit-web-datacapture-id@6.x/build/engine/, or similar.
Please ensure that the library version of the imported library corresponds to the version of the external Scandit Data Capture library/engine files retrieved via the libraryLocation option, either by ensuring the served files are up-to-date or the path/URL specifies a specific version. In case a common CDN is used here (jsDelivr or UNPKG) the library will automatically internally set up the correct URLs pointing directly at the files needed for the matching library version. It is highly recommended to handle the serving of these files yourself on your website/server, ensuring optimal compression, correct wasm files MIME type, no request redirections and correct caching headers usage; thus resulting in faster loading.
We recommended to call configure as soon as possible in your application so that the files are already downloaded and initialized when the capture process is started.
For ID Capture, the result of idCaptureLoader() must be passed to the ConfigureOptions.moduleLoaders option. In this example, we will scan VIZ documents, so we also need to set IdCaptureLoaderOptions.enableVIZDocuments to true:
import * as SDCCore from "scandit-web-datacapture-core";
import { idCaptureLoader } from "scandit-web-datacapture-id";
await SDCCore.configure({
licenseKey: "-- ENTER YOUR SCANDIT LICENSE KEY HERE --",
libraryLocation: "/engine/",
moduleLoaders: [idCaptureLoader({ enableVIZDocuments: true })],
});
Note
You must await the returned promise as shown to be able to continue.
Server side rendering and Server side generation
If you use a web framework that renders also on the server (SSR or SSG) it’s recommended to execute the library only on the client turning off the rendering on the server.
- For more information:
Show loading status with default UI
To show some feedback to the user about the loading status you have two options: use the default UI provided with the SDK or subscribe to the loading status and update your own custom UI. Let’s see how we you can show the default UI first:
const view = new SDCCore.DataCaptureView();
view.connectToElement(document.getElementById("data-capture-view"));
view.showProgressBar();
view.setProgressBarMessage("Loading ...");
await SDCCore.configure({
licenseKey: "-- ENTER YOUR SCANDIT LICENSE KEY HERE --",
libraryLocation: "/engine/",
moduleLoaders: [idCaptureLoader({ enableVIZDocuments: true })],
});
view.hideProgressBar()
const context: Scandit.DataCaptureContext = await SDCCore.DataCaptureContext.create();
await view.setContext(context);
Show loading status with custom UI
You can also just subscribe for the loading status of the library by simply attaching a listener like this:
SDCCore.loadingStatus.subscribe((info) => {
// updateUI(info.percentage, info.loadedBytes)
});
await SDCCore.configure({
licenseKey: "SCANDIT_LICENSE_KEY",
libraryLocation: "/engine",
moduleLoaders: [barcodeCaptureLoader()]
});
Note
We suggest to serve the library files with the proper headers Content-Length and Content-Encoding if any compression is present. In case of totally missing information we will show an estimated progress
Create the Data Capture Context
The first step to add capture capabilities to your application is to create a new data capture context.
// the license key used in configure() will be used
const context = await SDCCore.DataCaptureContext.create();
Add the Camera
You need to also create the Camera:
const camera = SDCCore.Camera.default;
await context.setFrameSource(camera);
const cameraSettings = SDCCore.IdCapture.recommendedCameraSettings;
// Depending on the use case further camera settings adjustments can be made here.
if (camera != null) {
await camera.applySettings(cameraSettings);
}
Create ID Capture Settings
Use IdCaptureSettings to configure the types of documents that you’d like to scan. Check IdDocumentType for all the available options.
Warning
Using IdDocumentType.DLVIZ or IdDocumentType.IdCardVIZ together with any MRZ document (IdDocumentType.IdCardMRZ, IdDocumentType.VisaMRZ, IdDocumentType.PassportMRZ, IdDocumentType.SwissDLMRZ) while SupportedSides.FrontAndBack is enabled is currently not supported.
const settings = new SDCId.IdCaptureSettings();
settings.supportedDocuments = [
SDCId.IdDocumentType.IdCardVIZ,
SDCId.IdDocumentType.AAMVABarcode,
SDCId.IdDocumentType.DLVIZ,
]
Implement the Listener
To receive scan results, implement IdCaptureListener. A result is delivered as CapturedId. This class contains data common for all kinds of personal identification documents. For more specific information use its non-null result properties (for example CapturedId.aamvaBarcodeResult).
const listener = {
didCaptureId: (idCapture, session) => {
if (session.newlyCapturedId.aamvaBarcodeResult != null) {
// Handle the information extracted.
}
},
didFailWithError: (idCapture, error, session) => {
// Handle the error.
}
};
Create a new ID Capture mode with the chosen settings. Then register the listener:
const idCapture = await SDCId.IdCapture.forContext(context, settings);
idCapture.addListener(listener);
Use a Capture View to Visualize the Scan Process
When using the built-in camera as frame source, you will typically want to display the camera preview on the screen together with UI elements that guide the user through the capturing process. To do that, add a DataCaptureView to your view hierarchy:
const view = await SDCCore.DataCaptureView.forContext(context);
view.connectToElement(htmlElement);
Then create an instance of IdCaptureOverlay attached to the view:
let overlay = await SDCId.IdCaptureOverlay.withIdCaptureForView(idCapture, dataCaptureView);
Turn on the Camera
Finally, turn on the camera to start scanning:
await camera.switchToDesiredState(SDCCore.FrameSourceState.On);
And this is it. You can now scan documents.
Capture both the front and the back side of documents
By default, when IdDocumentType.DLVIZ or IdDocumentType.IdCardVIZ are selected, Id Capture scans only the front side of documents. Sometimes however, you may be interested in extracting combined information from both the front and the back side.
Currently the combined result contains the following information: * AAMVA-compliant documents (for example US Driver’s Licenses): the human-readable front side of the document and the data encoded in the PDF417 barcode in the back; * European IDs: the human-readable sections of the front and the back side, and the data encoded in the Machine Readable Zone (MRZ); * Other documents: the human-readable section of the front and the back side (if present).
First, enable scanning of both sides of documents in IdCaptureSettings:
settings.supportedDocuments = [SDCId.IdDocumentType.IdCardVIZ, SDCId.IdDocumentType.DLVIZ];
settings.supportedSides = SDCId.SupportedSides.FrontAndBack;
Start by scanning the front side of a document. After you receive the result in IdCaptureListener, inspect VIZResult.isBackSideCaptureSupported. If scanning of the back side of your document is supported, flip the document and capture the back side as well. The next result that you receive is a combined result that contains the information from both sides. You may verify this by checking VIZResult.capturedSides. After both sides of the document are scanned, you may proceed with another document.
Sometimes, you may not be interested in scanning the back side of a document, after you completed the front scan. For example, your user may decide to cancel the process. Internally, Id Capture maintains the state of the scan, that helps it to provide better combined results. To abandon capturing the back of a document, reset this state by calling:
await idCapture.reset();
Otherwise, Id Capture may assume that the front side of a new document is actually the back side of an old one, and provide you with nonsensical results.
Use ID Validate to detect fake IDs
ID Validate is a fake ID detection software. It currently supports documents that follow the Driver License/Identification Card specification by the American Association of Motor Vehicle Administrators (AAMVA).
The following two verifiers are available:
AamvaVizBarcodeComparisonVerifier: Validates the authenticity of the document by comparing the data from the VIZ and from the barcode on the back.
AamvaBarcodeVerifier: Validates the authenticity of the document by scanning the barcode on the back.
To enable ID Validate for your subscription, please reach out to support@scandit.com.
List of supported documents
Machine Readable Zone documents (MRZ)
Scandit ID Capture supports all versions of Machine Readable Travel Documents (MRTD) specified by the International Civil Aviation Organization (ICAO). This includes all documents of the types TD1 (ID cards), TD2 (other official travel documents), TD3/MRP (passports) and MRV (visas). In addition, ID Capture supports some non-ICAO standards. A non-exhaustive list of supported documents can be found below.
Region |
Supported Document Types |
---|---|
Worldwide |
Passport (TD3) |
Europe |
All ID Cards (TD1/TD2) |
USA |
|
Canada |
Enhanced Driver’s License (TD1) |
Switzerland |
Driver’s License (non-ICAO) |
Asia |
|
More information can be found in the API documentation of CapturedId and MRZResult.
Barcode ID Formats
ID Capture supports the following documents with PDF417 barcodes:
Country |
Supported Document Types |
---|---|
USA |
|
Argentina |
ID Card (Documento Nacional de Identidad): the PDF417 on the front side of the document. More information can be found in the API Documentation of CapturedId and ArgentinaIdBarcodeResult. |
Colombia |
ID Card (Cédula de Ciudadanía): the PDF417 on the back side of the document. More information can be found in the API Documentation of CapturedId and ColombiaIdBarcodeResult. |
South Africa |
|
Human-readable texts
ID Capture supports the scanning of human-readable texts (for example a Visual Inspection Zone (VIZ)) from both the front and the back side of documents. More information can be found here. The full list of supported documents can be found below.
Asia:
Country
Supported Document Types
Afghanistan
ID Card
Armenia
ID Card
Azerbaijan
ID Card
Bangladesh
ID Card, Passport
Brunei
ID Card
Cambodia
ID Card, Passport
China
Passport
Hong Kong
ID Card
India
PAN Card, Voter ID, Passport
India - Karnataka
Driver’s License
India - Maharashtra
Driver’s License
Indonesia
Driver’s License, ID Card, Passport
Japan
Passport
Kyrgyzstan
ID Card
Malaysia
Driver’s License, Refugee ID, MyKid, i-Kad, MyTentera, MyKad, Passport, MyPR, MyKAS
Maldives
ID Card
Myanmar
Driver’s License, Passport
Nepal
Passport
Pakistan
Consular ID, ID Card, Passport
Pakistan - Punjab
Driver’s License
Philippines
Driver’s License, Professional ID, ID Card, Passport, Multipurpose ID, Social Security Card
Singapore
Driver’s License, S Pass, Fin Card, Employment Pass, Resident ID, Work Permit, ID Card, Passport
Sri Lanka
Driver’s License, ID Card, Passport
Thailand
Alien ID, ID Card, Passport
Uzbekistan
Passport
Europe:
Country
Supported Document Types
Albania
Driver’s License, ID Card, Passport
Austria
Driver’s License, ID Card, Passport
Belarus
Driver’s License, ID Card, Passport
Belgium
Driver’s License, Residence Permit, Resident ID, ID Card, Passport, Minors ID
Bosnia And Herzegovina
ID Card, Driver’s License, Passport
Bulgaria
ID Card, Driver’s License, Passport
Croatia
Driver’s License, ID Card, Passport
Cyprus
Driver’s License, ID Card, Residence Permit, Passport
Czechia
Driver’s License, ID Card, Residence Permit, Passport
Denmark
Driver’s License, Passport
Estonia
Driver’s License, ID Card, Passport
Finland
Alien ID, Driver’s License, ID Card, Passport, Residence Permit
France
Driver’s License, ID Card
Georgia
Driver’s License, ID Card
Germany
Driver’s License, ID Card, Residence Permit, Passport
Greece
Driver’s License, ID Card, Residence Permit, Passport
Hungary
Driver’s License, ID Card, Passport
Ireland
Driver’s License, Public Services Card, Passport Card, Passport
Italy
Driver’s License, ID Card, Residence Permit
Kosovo
Driver’s License, ID Card, Passport
Latvia
Alien ID, ID Card, Driver’s License, Passport
Liechtenstein
ID Card
Lithuania
Driver’s License, ID Card, Passport, Residence Permit
Luxembourg
Driver’s License, ID Card, Residence Permit, Passport
Malta
Driver’s License, ID Card, Residence Permit
Montenegro
Driver’s License, ID Card, Passport
Netherlands
Driver’s License, ID Card, Residence Permit, Passport
North Macedonia
ID Card, Driver’s License, Passport
Norway
Driver’s License, ID Card, Residence Permit, Passport
Poland
Driver’s License, ID Card, Passport
Portugal
Driver’s License, ID Card, Passport
Romania
Driver’s License, ID Card, Passport
Russia
Driver’s License, Passport
Serbia
ID Card, Driver’s License, Passport
Slovakia
Driver’s License, ID Card, Residence Permit, Passport
Slovenia
Driver’s License, ID Card, Residence Permit, Passport
Spain
Alien ID, Driver’s License, ID Card, Passport, Residence Permit
Sweden
Driver’s License, ID Card, Passport, Residence Permit, Social Security Card
Switzerland
Driver’s License, ID Card, Residence Permit, Passport
UK
Driver’s License, Residence Permit, Proof of Age Card, Passport
Ukraine
Temporary Residence Permit, Driver’s License, Residence Permit, Passport, ID Card
Latin America & the Caribbean:
Country
Supported Document Types
Argentina
Alien ID, ID Card, Passport
Bahamas
Driver’s License
Bolivia
Driver’s License, ID Card, Minors ID
Brazil
Driver’s License
Brazil - Rio De Janeiro
ID Card
Brazil - Sao Paolo
ID Card
Chile
Alien ID, ID Card, Driver’s License, Passport
Colombia
Alien ID, Driver’s License, ID Card, Passport, Minors ID
Costa Rica
ID Card
Cuba
Passport
Dominican Republic
ID Card, Passport
Ecuador
Driver’s License, ID Card
El Salvador
ID Card
Guatemala
Driver’s License, Consular ID, ID Card, Passport
Guyana
ID Card
Haiti
Driver’s License, ID Card, Passport
Jamaica
Driver’s License, Passport
Mexico
Voter ID, Passport
Mexico - Aguascalientes
Driver’s License
Mexico - Baja California
Driver’s License
Mexico - Chiapas
Driver’s License
Mexico - Chihuahua
Driver’s License
Mexico - Ciudad De Mexico
Driver’s License
Mexico - Coahuila
Driver’s License
Mexico - Colima
Driver’s License
Mexico - Durango
Driver’s License
Mexico - Guanajuato
Driver’s License
Mexico - Hidalgo
Driver’s License
Mexico - Jalisco
Driver’s License
Mexico - Mexico
Driver’s License
Mexico - Michoacan
Driver’s License
Mexico - Morelos
Driver’s License
Mexico - Nuevo Leon
Driver’s License
Mexico - Oaxaca
Driver’s License
Mexico - Quintana Roo Solidaridad
Driver’s License
Mexico - San Luis Potosi
Driver’s License
Mexico - Tamaulipas
Driver’s License
Mexico - Tlaxcala
Driver’s License
Mexico - Zacatecas
Driver’s License
Nicaragua
ID Card
Panama
Driver’s License, ID Card, Residence Permit, Temporary Residence Permit
Paraguay
Driver’s License, ID Card
Peru
Driver’s License, ID Card, Passport
Puerto Rico
Driver’s License
Saint Kitts And Nevis
Driver’s License
Trinidad And Tobago
Driver’s License, ID Card, Passport
Uruguay
ID Card
Venezuela
Driver’s License, ID Card, Passport
The Middle East & Africa:
Country
Supported Document Types
Algeria
Driver’s License, ID Card, Passport
Bahrain
ID Card (incl. Arabic script)
Botswana
ID Card
Burkina Faso
ID Card
Cameroon
ID Card
Egypt
ID Card (incl. Arabic script)
Eswatini
Passport
Ghana
Driver’s License, ID Card, Passport
Israel
Driver’s License
Ivory Coast
Driver’s License, ID Card
Jordan
ID Card (incl. Arabic script)
Kenya
ID Card, Passport
Kuwait
Driver’s License, Resident ID (incl. Arabic script), ID Card (incl. Arabic script)
Lebanon
ID Card (incl. Arabic script)
Libya
Passport (incl. Arabic script)
Mauritius
ID Card
Morocco
Driver’s License, ID Card
Mozambique
ID Card
Nigeria
Driver’s License, ID Card, Voter ID, Passport
Oman
Resident ID (incl. Arabic script), ID Card (incl. Arabic script)
Palestine
Passport (incl. Arabic script)
Qatar
Driver’s License, Residence Permit (incl. Arabic script), Passport (incl. Arabic script)
Rwanda
ID Card
Saudi Arabia
Driver’s License (incl. Arabic script), Resident ID (incl. Arabic script), Passport (incl. Arabic script)
Senegal
ID Card
South Africa
Driver’s License, ID Card, Passport
Sudan
Passport
Syria
Passport (incl. Arabic script), ID Card (incl. Arabic script)
Tanzania
Driver’s License
Togo
ID Card
Tunisia
Driver’s License, Passport (incl. Arabic script)
Turkey
Driver’s License, ID Card, Passport
UAE
Driver’s License, Resident ID (incl. Arabic script), Passport (incl. Arabic script), ID Card (incl. Arabic script)
Uganda
Driver’s License, ID Card
Zimbabwe
ID Card, Passport
Northern America:
Country
Supported Document Types
Canada
Tribal ID, Residence Permit, Passport
Canada - Alberta
Driver’s License, ID Card
Canada - British Columbia
Driver’s License, ID Card, Public Services Card
Canada - Manitoba
Driver’s License, ID Card
Canada - New Brunswick
Driver’s License
Canada - Newfoundland And Labrador
Driver’s License
Canada - Nova Scotia
Driver’s License
Canada - Ontario
Driver’s License, Health Insurance Card, ID Card
Canada - Quebec
Driver’s License
Canada - Saskatchewan
Driver’s License
Canada - Yukon
Driver’s License
USA
Green Card, Work Permit, Border Crossing Card, Global Entry Card, Veteran ID, Passport, Uniformed Services ID, Military ID, Passport Card
USA - Alabama
Driver’s License*, ID Card*
USA - Alaska
Driver’s License, ID Card
USA - Arizona
Driver’s License*, ID Card*
USA - Arkansas
Driver’s License*, ID Card*
USA - California
Driver’s License*, ID Card*
USA - Colorado
Driver’s License*, ID Card
USA - Connecticut
Driver’s License*, ID Card
USA - Delaware
Driver’s License*
USA - District Of Columbia
Driver’s License*, ID Card*
USA - Florida
Driver’s License*, ID Card*
USA - Georgia
Driver’s License*, ID Card*
USA - Hawaii
Driver’s License*, ID Card
USA - Idaho
Driver’s License*, ID Card
USA - Illinois
Driver’s License*, ID Card*
USA - Indiana
Driver’s License, ID Card
USA - Iowa
Driver’s License*, ID Card*
USA - Kansas
Driver’s License*, ID Card*
USA - Kentucky
Driver’s License*, ID Card*
USA - Louisiana
Driver’s License
USA - Maine
Driver’s License*, ID Card
USA - Maryland
Driver’s License*, ID Card*
USA - Massachusetts
Driver’s License*, ID Card*
USA - Michigan
Driver’s License*, ID Card*
USA - Minnesota
Driver’s License*, ID Card*
USA - Mississippi
Driver’s License*, ID Card*
USA - Missouri
Driver’s License*, ID Card*
USA - Montana
Driver’s License, ID Card
USA - Nebraska
Driver’s License*, ID Card
USA - Nevada
Driver’s License*, ID Card*
USA - New Hampshire
Driver’s License*
USA - New Jersey
Driver’s License*, ID Card*
USA - New Mexico
Driver’s License*, ID Card
USA - New York
Driver’s License*, ID Card*
USA - New York City
ID Card
USA - North Carolina
Driver’s License*, ID Card*
USA - North Dakota
Driver’s License*
USA - Ohio
Driver’s License*, ID Card*
USA - Oklahoma
Driver’s License*, ID Card*
USA - Oregon
Driver’s License*, ID Card
USA - Pennsylvania
Driver’s License*, ID Card*
USA - Rhode Island
Driver’s License*, ID Card
USA - South Carolina
Driver’s License*, ID Card*
USA - South Dakota
Driver’s License*
USA - Tennessee
Driver’s License*, ID Card*
USA - Texas
Driver’s License*, ID Card*
USA - Utah
Driver’s License*, ID Card*
USA - Vermont
Driver’s License
USA - Virginia
Driver’s License*, ID Card
USA - Washington
Driver’s License*, ID Card*
USA - West Virginia
Driver’s License
USA - Wisconsin
Driver’s License*, ID Card
USA - Wyoming
Driver’s License, ID Card
*vertical format also supported
Oceania:
Country
Supported Document Types
Australia
Passport
Australia - Australian Capital Territory
Driver’s License
Australia - New South Wales
Driver’s License, ID Card
Australia - Northern Territory
Driver’s License, Proof of Age Card
Australia - Queensland
Driver’s License
Australia - South Australia
Driver’s License, Proof of Age Card
Australia - Tasmania
Driver’s License
Australia - Victoria
Driver’s License, Proof of Age Card
Australia - Western Australia
Driver’s License
New Zealand
Driver’s License, Passport