dynamsoft-mrz-scanner
Version:
Dynamsoft MRZ Scanner JavaScript Edition is a ready-to-use SDK for web applications that accurately recognizes and parses Machine-Readable Zones on Machine-Readable Travel Documents.
260 lines (252 loc) • 8.35 kB
TypeScript
import { DSImageData, CapturedResult, CaptureVisionRouter, CameraEnhancer, CameraView, EngineResourcePaths } from 'dynamsoft-capture-vision-bundle';
import * as dynamsoftCaptureVisionBundle from 'dynamsoft-capture-vision-bundle';
export { dynamsoftCaptureVisionBundle as Dynamsoft };
declare enum EnumMRZScanMode {
Passport = "passport",
TD1 = "td1",
TD2 = "td2",
PassportAndTD1 = "passportAndTd1",
PassportAndTD2 = "passportAndTd2",
TD1AndTD2 = "td1AndTd2",
All = "all"
}
declare enum EnumMRZDocumentType {
Passport = "passport",
TD1 = "td1",
TD2 = "td2"
}
declare enum EnumMRZScannerViews {
Scanner = "scanner",
Result = "scan-result"
}
declare const DEFAULT_TEMPLATE_NAMES: {
passport: string;
td1: string;
td2: string;
passportAndTd1: string;
passportAndTd2: string;
td1AndTd2: string;
all: string;
};
type UtilizedTemplateNames = Record<EnumMRZScanMode, string>;
declare enum EnumResultStatus {
RS_SUCCESS = 0,
RS_CANCELLED = 1,
RS_FAILED = 2
}
type ResultStatus = {
code: EnumResultStatus;
message?: string;
};
type ToolbarButtonConfig = Pick<ToolbarButton, "icon" | "label" | "className" | "isHidden">;
interface ToolbarButton {
id: string;
icon: string;
label: string;
onClick?: () => void | Promise<void>;
className?: string;
isDisabled?: boolean;
isHidden?: boolean;
}
declare enum EnumMRZData {
InvalidFields = "invalidFields",
DocumentType = "documentType",
DocumentNumber = "documentNumber",
MRZText = "mrzText",
FirstName = "firstName",
LastName = "lastName",
Age = "age",
Sex = "sex",
IssuingState = "issuingState",
IssuingStateRaw = "issuingStateRaw",
Nationality = "nationality",
NationalityRaw = "nationalityRaw",
DateOfBirth = "dateOfBirth",
DateOfExpiry = "dateOfExpiry"
}
interface MRZResult {
status: ResultStatus;
originalImageResult?: DSImageData;
data?: MRZData;
imageData?: boolean;
_imageData?: DSImageData;
}
interface MRZData {
[EnumMRZData.InvalidFields]?: EnumMRZData[];
[EnumMRZData.DocumentType]: string;
[EnumMRZData.DocumentNumber]: string;
[EnumMRZData.MRZText]: string;
[EnumMRZData.FirstName]: string;
[EnumMRZData.LastName]: string;
[EnumMRZData.Age]: number;
[EnumMRZData.Sex]: string;
[EnumMRZData.IssuingState]: string;
[EnumMRZData.IssuingStateRaw]: string;
[EnumMRZData.Nationality]: string;
[EnumMRZData.NationalityRaw]: string;
[EnumMRZData.DateOfBirth]: MRZDate;
[EnumMRZData.DateOfExpiry]: MRZDate;
}
interface MRZDate {
year: number;
month: number;
day: number;
}
declare const MRZDataLabel: Record<EnumMRZData, string>;
declare function displayMRZDate(date: MRZDate): string;
interface MRZScannerViewConfig {
cameraEnhancerUIPath?: string;
uiPath?: string;
container?: HTMLElement | string;
templateFilePath?: string;
utilizedTemplateNames?: UtilizedTemplateNames;
mrzFormatType?: EnumMRZDocumentType | Array<EnumMRZDocumentType>;
showScanGuide?: boolean;
showUploadImage?: boolean;
showFormatSelector?: boolean;
showSoundToggle?: boolean;
showPoweredByDynamsoft?: boolean;
enableMultiFrameCrossFilter?: boolean;
uploadAcceptedTypes?: string;
uploadFileConverter?: (file: File) => Promise<Blob>;
}
declare class MRZScannerView {
private resources;
private config;
private isSoundFeedbackOn;
private scanModeManager;
private currentScanMode;
private resizeTimer;
private capturedResultItems;
private originalImageData;
private initialized;
private initializedDCE;
private DCE_ELEMENTS;
private currentScanResolver?;
private loadingScreen;
private showScannerLoadingOverlay;
private hideScannerLoadingOverlay;
private handleResize;
constructor(resources: SharedResources, config: MRZScannerViewConfig);
initialize(): Promise<void>;
private initializeElements;
private setupScanModeSelector;
private assignDCEClickEvents;
private handleCloseBtn;
private attachOptionClickListeners;
private highlightCameraAndResolutionOption;
private toggleSelectCameraBox;
private relaunch;
private uploadFile;
private toggleSoundFeedback;
private calculateScanRegion;
private toggleScanGuide;
openCamera(): Promise<void>;
closeCamera(hideContainer?: boolean): Promise<void>;
pauseCamera(): void;
stopCapturing(): void;
handleMRZResult(result: CapturedResult): Promise<void>;
private initializeScanModeManager;
private getScanMode;
private DCEShowToast;
private firstFrame;
private startCapturing;
private toggleScanDocType;
launch(): Promise<MRZResult>;
}
interface MRZResultViewToolbarButtonsConfig {
cancel?: ToolbarButton;
rescan?: ToolbarButtonConfig;
done?: ToolbarButtonConfig;
}
interface MRZResultViewConfig {
container?: HTMLElement | string;
toolbarButtonsConfig?: MRZResultViewToolbarButtonsConfig;
showOriginalImage?: boolean;
showMRZText?: boolean;
allowResultEditing?: boolean;
emptyResultMessage?: string;
onDone?: (result: MRZResult) => Promise<void>;
onCancel?: (result: MRZResult) => Promise<void>;
_isFileMode?: boolean;
}
declare class MRZResultView {
private resources;
private config;
private scannerView;
private currentScanResultViewResolver?;
private editedFields;
constructor(resources: SharedResources, config: MRZResultViewConfig, scannerView: MRZScannerView);
launch(): Promise<MRZResult>;
private handleRescan;
private handleCancel;
private handleDone;
private createControls;
private handleFieldEdit;
private createMRZDataDisplay;
initialize(): Promise<void>;
hideView(): void;
dispose(preserveResolver?: boolean): void;
}
interface MRZScannerConfig {
license?: string;
container?: HTMLElement | string;
templateFilePath?: string;
utilizedTemplateNames?: UtilizedTemplateNames;
engineResourcePaths?: EngineResourcePaths;
scannerViewConfig?: Omit<MRZScannerViewConfig, "templateFilePath" | "utilizedTemplateNames">;
resultViewConfig?: MRZResultViewConfig;
mrzFormatType?: Array<EnumMRZDocumentType>;
showResultView?: boolean;
}
interface SharedResources {
cvRouter?: CaptureVisionRouter;
cameraEnhancer?: CameraEnhancer;
cameraView?: CameraView;
result?: MRZResult;
onResultUpdated?: (result: MRZResult) => void;
}
declare class MRZScanner {
private config;
private scannerView?;
private resultView?;
private resources;
private isInitialized;
private isCapturing;
private loadingScreen;
private isDynamsoftResourcesLoaded;
protected isFileMode: boolean;
private showLoadingOverlay;
private hideLoadingOverlay;
constructor(config: MRZScannerConfig);
initialize(): Promise<{
resources: SharedResources;
components: {
scannerView?: MRZScannerView;
resultView?: MRZResultView;
};
}>;
private initializeDynamsoftResources;
private initializeDCVResources;
private shouldCreateDefaultContainer;
private createDefaultMRZScannerContainer;
private checkForTemporaryLicense;
private validateViewConfigs;
private showResultView;
private initializeMRZScannerConfig;
private createViewContainers;
dispose(): void;
/**
* Processes an uploaded image file
* @param imageOrFile The file to process
* @returns Promise with the document result
*/
private processUploadedFile;
launch(imageOrFile: Blob | string | DSImageData | HTMLImageElement | HTMLVideoElement | HTMLCanvasElement): Promise<MRZResult>;
}
declare const DynamsoftMRZScanner: {
MRZScanner: typeof MRZScanner;
MRZScannerView: typeof MRZScannerView;
MRZResultView: typeof MRZResultView;
};
export { DEFAULT_TEMPLATE_NAMES, DynamsoftMRZScanner, EnumMRZData, EnumMRZDocumentType, EnumMRZScanMode, EnumMRZScannerViews, EnumResultStatus, MRZData, MRZDataLabel, MRZDate, MRZResult, MRZResultView, MRZResultViewConfig, MRZResultViewToolbarButtonsConfig, MRZScanner, MRZScannerView, MRZScannerViewConfig, ResultStatus, ToolbarButton, ToolbarButtonConfig, UtilizedTemplateNames, displayMRZDate };