MRZ Scanner JavaScript Edition API Reference
The MRZScanner
class is responsible for the main scanning process, including MRZ recognition, text parsing, and result display.
Constructor
MRZScanner
Syntax
new MRZScanner(config: MRZScannerConfig)
Parameters
config
: Assigns the MRZ Scanner license and configures the different settings of the MRZ Scanner, including the container, supported MRTD formats, and more. This config object is of type MRZScannerConfig.
Example
const mrzScanner = new Dynamsoft.MRZScanner({
license: "YOUR_LICENSE_KEY_HERE",
scannerViewConfig: {
// For custom scanning configuration, MRZScannerViewConfig goes in here
},
resultViewConfig: {
// For custom result configuration, MRZResultViewConfig goes in here
}
});
Methods
launch()
Starts the MRZ scanning workflow.
Syntax
launch(): Promise<MRZResult>
Returns
A Promise
resolving to a MRZResult
object.
Example
(async () => {
// Launch the scanner and wait for the result
try {
const result = await mrzScanner.launch();
console.log(result); // print the MRZResult to the console
} catch (error){
console.error(error);
}
})();
dispose()
Cleans up the MRZ Scanner resources and hides UI components.
Syntax
dispose(): void
Example
mrzScanner.dispose();
console.log("Scanner resources released.");
Configuration Interfaces
MRZScannerConfig
The MRZScannerConfig is responsible for assigning the MRZ Scanner license, configuring the MRTD formats, and setting the MRZScannerViewConfig and MRZResultViewConfig. Please note that the only thing that is required to be defined is the license. A MRZ Scanner instance must be initialized with a MRZScannerConfig object.
To get the full picture on how to use MRZScannerConfig, please visit the Customizing MRZ Scanner - MRZScannerConfig page.
Syntax
interface MRZScannerConfig {
license?: string; // license is absolutely required to be set at initialization
container?: HTMLElement | string; //
// Resource/Template specific configuration
templateFilePath?: string;
utilizedTemplateNames?: UtilizedTemplateNames;
engineResourcePaths?: EngineResourcePaths;
// Views Configuration
scannerViewConfig?: Omit<MRZScannerViewConfig, "templateFilePath" | "utilizedTemplateNames">;
resultViewConfig?: MRZResultViewConfig;
mrzFormatType?: Array<EnumMRZDocumentType>;
showResultView?: boolean;
}
Properties
Property | Type | Description |
---|---|---|
license |
string |
The license key for using the MRZScanner . |
container |
HTMLElement \ string |
The container element or selector for the MRZScanner UI. |
templateFilePath |
string |
The file path to the custom JSON template used to customize the scanning process. |
utilizedTemplateNames |
UtilizedTemplateNames |
Specifies MRZ scanning templates. |
engineResourcePaths |
EngineResourcePaths |
Paths to the necessary resources for the MRZ scanning engine. |
scannerViewConfig |
MRZScannerViewConfig |
Configuration settings for the MRZ scanner view. |
resultViewConfig |
MRZResultViewConfig |
Configuration settings for the MRZ result view. |
mrzFormatType |
EnumMRZDocumentType |
Specifies the MRTD formats that the application will support. |
showResultView |
boolean |
Determines whether the final result view (MRZResultView) will be shown or not. |
Example
const mrzConfig = {
license: "YOUR_LICENSE_KEY_HERE",
mrzFormatType: ["passport", "td1"], // set the MRTD formats to just passport and ID (TD1)
showResultView: false, // hide the final MRZResultView and go back to landing page once the MRZ result is in
// engineResourcePaths typically is only assigned when using a framework like React/Angular/Vue where the resources are not in the same location as the script reference
engineResourcePaths: {
std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std/dist/",
dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing/dist/",
core: "https://cdn.jsdelivr.net/npm/dynamsoft-core/dist/",
license: "https://cdn.jsdelivr.net/npm/dynamsoft-license/dist/",
cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router/dist/",
dlr: "https://cdn.jsdelivr.net/npm/dynamsoft-label-recognizer/dist/",
dcp: "https://cdn.jsdelivr.net/npm/dynamsoft-code-parser/dist/",
},
scannerViewConfig: {
// the MRZScannerViewConfig goes in here - see MRZScannerViewConfig section
},
resultViewConfig: {
// the MRZResultViewConfig goes in here - see MRZResultViewConfig section
}
};
// Initialize the Dynamsoft MRZ Scanner with the above MRZScannerConfig object
const mrzScanner = new Dynamsoft.MRZScanner(mrzConfig);
MRZScannerViewConfig
The MRZScannerViewConfig is used to configure the UI elements of the MRZScannerView. If the MRZScannerViewConfig is not assigned, then the library will use the default MRZScannerView. For the full details of the properties of the MRZScannerViewConfig, please read through the Customizing the MRZ Scanner - MRZScannerViewConfig page.
Syntax
interface MRZScannerViewConfig {
cameraEnhancerUIPath?: string;
container?: HTMLElement | string;
showScanGuide?: boolean;
showUploadImage?: boolean;
showFormatSelector?: boolean;
showSoundToggle?: boolean;
enableMultiFrameCrossFilter?: boolean; // false by default
}
Properties
Property | Type | Description |
---|---|---|
cameraEnhancerUIPath |
string |
Path to the custom Camera Enhancer UI (.html template file) for the scanner view. |
container |
HTMLElement \ string |
The container element or selector for the MRZScannerView UI. |
showScanGuide |
boolean |
Determines whether the scan guide frame will be displayed or not. |
showUploadImage |
boolean |
Determines the visibility of the “load image” icon to allow the user to select a static image from their local photo library. |
showFormatSelector |
boolean |
Determines the visibility of the format selector box that allows the user to restrict the MRTD format(s) that are being read. |
showSoundToggle |
boolean |
Determines the visibility of the “sound” icon that allows the user to play a beep sound once the MRZ is recognized. |
enableMultiFrameCrossFilter |
boolean |
Enables or disables the MultiFrameResultCrossFilter that can improve the accuracy of the MRZ result, but possibly at the cost of speed. |
Example
const mrzScanViewConfig = {
showScanGuide: true, // hides the scan guide frame; true by default
showUploadImage: true, // hides the load image icon that shows up in the toolbar at the top of the view; true by default
showFormatSelector: true, // hides the format selector box if more than two MRZ types are assigned; true by default
showSoundToggle: false, // hides the sound icon that allows the user to control whether a beep is played once an MRZ is recognized; true by default
enableMultiFrameCrossFilter: true, // turning the filter off could improve the speed but at the cost of result accuracy; true by default
};
const mrzConfig = {
license: "YOUR_LICENSE_KEY_HERE",
scannerViewConfig: mrzScanViewConfig
};
MRZResultViewConfig
The MRZResultViewConfig is used to configure the UI elements of the MRZResultView. If the MRZResultViewConfig is not assigned, then the library will use the default MRZResultView. For the full details of the properties of the MRZResultViewConfig, please read through the Customizing the MRZ Scanner - MRZResultViewConfig page.
Syntax
interface MRZResultViewConfig {
container?: HTMLElement | string;
toolbarButtonsConfig?: MRZResultViewToolbarButtonsConfig;
showOriginalImage?: boolean;
allowResultEditing?: boolean; // New option to control if result fields can be edited
onDone?: (result: MRZResult) => Promise<void>;
}
Properties
Property | Type | Description |
---|---|---|
container |
HTMLElement \ string |
The container element or selector for the MRZResultView UI. |
toolbarButtonsConfig |
MRZResultViewToolbarButtonsConfig |
Configures the main bottom toolbar of the result view. |
showOriginalImage |
boolean |
Determines whether the cropped image of the MRZ document will be displayed in the result view or not. |
allowResultEditing |
boolean |
Enables/disables the ability to edit the MRZ info after it is scanned. |
onDone |
Promise<void> |
Defines the action(s) to take once the user clicks the “Done” button in the result view. |
Example
const mrzResultViewConfig = {
showOriginalImage: false, // Hides the cropped image of the MRZ document in the result view; true by default
toolbarButtonsConfig: {
retake: {
label: "Re-scan", // Changes the text label of the retake button to "Re-scan"; string is "Re-take" by default
isHidden: true // Hides the retake button; false by default
},
done: {
label: "Return Home", // Changes the text label of the done button to "Return Home"; string is "Done" by default
isHidden: false // Hides the done button; false by default
}
},
/* onDone is a callback that allows you to define the action(s) to take once the user clicks the Done button and the scanner is closed. By default, nothing happens and the app goes back to the landing page. */
onDone: (result) => {
console.log(result.status.message);
console.log(result.data.firstName);
}
};
const mrzConfig = {
license: "YOUR_LICENSE_KEY_HERE",
resultViewConfig: mrzResultViewConfig
};
MRZResultViewToolbarButtonsConfig
The MRZResultViewToolbarButtonsConfig
is used to configure the buttons of the toolbar in the MRZResultView.
Syntax
interface MRZResultViewToolbarButtonsConfig {
retake?: ToolbarButtonConfig;
done?: ToolbarButtonConfig;
}
Properties
Property | Type | Description |
---|---|---|
retake |
ToolbarButtonConfig |
Configuration for the re-scan button of the toolbar. |
done |
ToolbarButtonConfig |
Configuration for the done button of the toolbar. |
Example
const mrzButtonConfig = {
retake: {
label: "Re-scan",
isHidden: false
},
done: {
label: "Return Home",
isHidden: false
}
};
const mrzResultViewConfig = {
toolbarButtonsConfig: mrzButtonConfig,
};
ToolbarButtonConfig
The interface used to configure the properties of the toolbar button. This interface is typically used in conjunction with the MRZResultViewToolbarButtonsConfig
.
Syntax
export interface ToolbarButtonConfig {
icon: string;
label: string;
className?: string;
isHidden?: boolean;
}
Properties
Property | Type | Description |
---|---|---|
icon |
string |
The path to a custom icon (png/svg) for the button. |
label |
string |
The text label of the button. |
className |
string |
Assigns a custom class to the button (usually to apply custom styling). |
isHidden |
boolean |
Hides/Shows the button in the toolbar. |
Example
See the example of MRZResultViewToolbarButtonsConfig
.
Result Interfaces
MRZResult
The MRZResult is the most basic interface that is used to represent the full MRZ result object. It comes with a result status, the original cropped image result, and the parsed MRZ info as a MRZData
object.
Syntax
export interface MRZResult {
status: ResultStatus;
originalImageResult?: DSImageData;
data?: MRZData;
}
Properties
Property | Type | Description |
---|---|---|
status |
ResultStatus |
The status of the MRZ result, which can be successful, cancelled (if the user closes the scanner), or failed (indicating that something has gone wrong during the scanning process). |
originalImageResult |
DSImageData |
A DSImageData object that represents the cropped image of the MRZ document. |
data |
MRZData |
Represents the parsed MRZ info. |
Example
(async () => {
// Launch the scanner and wait for the result
const result = await mrzScanner.launch();
console.log(result.status.message); // prints the result status message to the console
console.log(result.status.code); // prints the result status code to the console
console.log(result.data); // prints the entire MRZData object of the result to the console
})();
MRZData
MRZData is used to represent the parsed fields of the MRZ result. These fields include the first name, last name, sex, document number, and more.
Syntax
export interface MRZData {
[EnumMRZData.InvalidFields]?: EnumMRZData[]; //invalidFields
[EnumMRZData.DocumentType]: string; // documentType
[EnumMRZData.DocumentNumber]: string; // documentNumber
[EnumMRZData.MRZText]: string; // mrzText
[EnumMRZData.FirstName]: string; // firstName
[EnumMRZData.LastName]: string; // lastName
[EnumMRZData.Age]: number; // age
[EnumMRZData.Sex]: string; // sex
[EnumMRZData.IssuingState]: string; // issuingState
[EnumMRZData.Nationality]: string; // nationality
[EnumMRZData.DateOfBirth]: MRZDate; // dateOfBirth
[EnumMRZData.DateOfExpiry]: MRZDate; // dateOfExpiry
}
Properties
Property | Type | Description |
---|---|---|
documentType |
string |
The type of MRTD that the MRZ document is. |
documentNumber |
string |
The MRZ document number. |
mrzText |
string |
The raw unparsed text of the MRZ. |
firstName |
string |
The first name of the MRZ document holder. |
lastName |
string |
The last name of the MRZ document holder. |
age |
string |
The age of the MRZ document holder. |
sex |
string |
The sex of the MRZ document holder. |
issuingState |
string |
The issuing state of the MRZ document. |
nationality |
string |
The nationality of the MRZ document holder. |
dateOfBirth |
MRZDate |
The date of birth of the MRZ document holder. |
dateOfExpiry |
MRZDate |
The date of expiry of the MRZ document. |
Example
(async () => {
// Launch the scanner and wait for the result
const result = await mrzScanner.launch();
console.log(result.data.firstName); // prints the first name
console.log(result.data.lastName); // prints the last name
console.log(result.data.sex); // prints the sex
console.log(result.data.nationality); // prints the nationality
console.log(result.data.documentNumber); // prints the MRZ document number
})();
MRZDate
MRZDate is used to represent the date fields of a MRZData
object.
Syntax
interface MRZDate {
year: number;
month: number;
day: number;
}
Properties
Property | Type | Description |
---|---|---|
year |
number |
The year of the date. |
month |
number |
The month of the date. |
day |
number |
The day of the date. |
Example
(async () => {
// Launch the scanner and wait for the result
const result = await mrzScanner.launch();
console.log(result.data.dateOfBirth.year); // prints the year of the date of birth
console.log(result.data.dateOfBirth.month); // prints the month of the date of birth
console.log(result.data.dateOfBirth.day); // prints the day of the date of birth
})();
ResultStatus
ResultStatus is used to represent the status of the MRZ Result. This status can be successful, cancelled if the user closes the scanner, or failed if something went wrong during the scanning process. The code of the result status is a EnumResultStatus
.
Syntax
type ResultStatus = {
code: EnumResultStatus;
message?: string;
};
Example
Please see the example of MRZResult.