Table of contents

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.