UNPKG

@microblink/blinkinput-in-browser-sdk

Version:

A simple barcode scanning library for WebAssembly-enabled browsers.

233 lines (232 loc) 10 kB
/** * Copyright (c) Microblink Ltd. All rights reserved. */ import { CapturedFrame } from "./FrameCapture"; import { MetadataCallbacks } from "./MetadataCallbacks"; import { ClearTimeoutCallback } from "./ClearTimeoutCallback"; import { WasmType } from "./WasmType"; /** * Specifies the orientation of the contents of the image. * This is important for some recognizers, especially when * performing recognition on the mobile device. */ export declare enum ImageOrientation { /** * Image contents are rotated 90 degrees left. * This usually happens on mobile devices when capturing image while * device is held in "portrait" orientation, while device camera sensor * is mounted horizontally (i.e. produced image is in "landscape" orienation). */ RotatedLeft90 = 0, /** * Image contents are not rotated in any manner. * This is the default for images captured using HTML canvas, as * used in FrameCapture class. * This orientation also usually happens on mobile devices when capturing * image while device is held in "landscape" orientation, while device * camera sensor is mounted horizontally (i.e. also in same orientation). */ NoRotation = 1, /** * Image contents are rotated 90 degrees right. * This usually happens on mobile devices when capturing image while * device is held in "reverse-portrait" orientation, while device camera sensor * is mounted horizontally (i.e. produced image is in "landscape" orienation). */ RotatedRight90 = 2, /** * Image contents are rotated 180 degrees, i.e. image contents are "upside down". * This usually happens on mobile devices when capturing image while * device is held in "reverse-landscape" orientation, while device camera sensor * is mounted horizontally (i.e. produced image is in "landscape" orienation). */ Rotated180 = 3 } /** * Specifies the state of the recognition result. */ export declare enum RecognizerResultState { /** Nothing has been recognized. */ Empty = 0, /** Something has been recognized, but some mandatory data is still missing. */ Uncertain = 1, /** All required data has been recognized. */ Valid = 2, /** Single stage of a multi-stage recognition is finished. */ StageValid = 3 } /** * Specifies an abstract object placed on the WebAssembly heap. * Objects placed on the WebAssembly heap are not cleaned up by the * garbage collector of the JavaScript engine. The memory used by * the object must be cleaned up manually by calling the delete() method. */ export interface WasmNativeObject { /** * Cleans up the object from the WebAssembly heap. */ delete(): Promise<void>; } /** * Specifies the abstract recognition result. */ export interface RecognizerResult { /** State of the recognition result. See the documentation for RecognizerResultState for more information. */ readonly state: RecognizerResultState; } /** * Specifies the abstract settings for the Recognizer object. */ export interface RecognizerSettings { } /** * Specifies an abstract Recognizer object. The Recognizer object is the basic unit of processing. */ export interface Recognizer extends WasmNativeObject { /** * Name of this recognizer. */ readonly recognizerName: string; /** * Returns the currently applied settings to the specific recognizer. */ currentSettings(): Promise<RecognizerSettings>; /** * Applies the new settings to the specific recognizer. * Note: if the recognizer is associated with RecognizerRunner, this method will fail. * @param newSettings New settings to be applied to the recognizer. */ updateSettings(newSettings: RecognizerSettings): Promise<void>; /** * Returns the current result of the recognition. */ getResult(): Promise<RecognizerResult>; /** * Returns the JSON representation of the recognizer's result. * The JSON will be digitally signed and can be used to verify * that the result was provided by the SDK and that it hasn't been * manually altered. * If the SDK does not have this feature compiled into the WASM, this * method will return null. */ toJSON(): Promise<string | null>; } /** * Specifies a main Recognizer orchestrator object. */ export interface RecognizerRunner extends WasmNativeObject { /** * Starts the recognition of the given image using recognizer objects currently associated * with the RecognizerRunner. * @param image Image to be processed. * @returns Promise that will resolve when image processing finishes. */ processImage(image: CapturedFrame): Promise<RecognizerResultState>; /** * Reconfigures the instance of RecognizerRunner with new recognizers. The currently associated * recognizer objects are un-associated from this RecognizerRunner and are elligible for calling * the updateSettings() method on them after that. * @param recognizers Array of recognizer objects that should be associated with the RecognizerRunner. * @param allowMultipleResults Whether or not it is allowed to return multiple results from single image. * See README.md for more details about this option. */ reconfigureRecognizers(recognizers: Array<Recognizer>, allowMultipleResults: boolean): Promise<void>; /** * Sets the new callbacks for obtaining recognition event. Make sure you call this method while image processing is * not in progress, otherwise you will have undefined behaviour. * @param metadataCallbacks Callback functions that will be called when certain recognition events occur. * * For more information, check the documentation of MetadataCallbacks class. */ setMetadataCallbacks(metadataCallbacks: MetadataCallbacks): Promise<void>; /** * Resets the state of all recognizers in current recognition chain, i.e. deletes the cached data from multiple * recognitions. * @param hardReset If set to false, combined recognizers will not be reset. If set to true, all recognizers will be * reset. */ resetRecognizers(hardReset: boolean): Promise<void>; /** * If enabled, recognizers will be instructed to only perform object detection, but not the entire * recognition process. This is useful for testing your implementations of MetadataCallbacks without * the need for the entire process to complete. Also, VideoRecognizers sets this to true only if in * DetectionTest mode of video recognition. * @param detectionOnly Should recognizers perform only object detection. */ setDetectionOnlyMode(detectionOnly: boolean): Promise<void>; /** * Sets or removes the ClearTimeoutCallback. */ setClearTimeoutCallback(clearTimeoutCallback: ClearTimeoutCallback | null): Promise<void>; /** * Sets whether camera preview displaying the image being recognized is being mirrored horizontally. * If enabled, coordinates returned via metadatacallbacks will be adjusted accordingly due to the * image being processed being different of image being displayed. * The camera preview is usually mirrored when using front-facing camera. * @param mirrored Whether or not metadatacallbacks should adjust coordinates for mirrored image. */ setCameraPreviewMirrored(mirrored: boolean): Promise<void>; } /** * @hidden * A proxy object for accessing the WebAssembly module. * Only for internal use. It's API may change in the future without any notice. * Please do not invoke methods directly on the instance of this interface. */ export interface WasmModuleProxy { createRecognizerRunner(recognizers: Array<Recognizer>, allowMultipleResults: boolean, metadataCallbacks: MetadataCallbacks): Promise<RecognizerRunner>; newRecognizer(className: string, ...constructorArgs: any[]): Promise<Recognizer>; } /** * Specifies a main object that is used for communication with the WebAssembly module. * This object is usually given as a parameter to functions that interop with the WebAssembly module. * You can obtain an instance of this object after a promise from MicroblinkSDK.loadWasmModule is successfully * resolved. */ export interface WasmSDK { /** * @hidden * A proxy object to the WebAssmebly module. * Only for internal use. It's API may change in the future without any notice. */ readonly mbWasmModule: WasmModuleProxy; delete: () => void; /** * The type of the WASM that was actually loaded. */ loadedWasmType: WasmType; showOverlay: boolean; } /** * Specifies a date object, as parsed from some documents. * Unlike JavaScript Date object, it does not depend on time zone. */ export interface MBDate { /** Day in month. */ readonly day: number; /** Month in year. */ readonly month: number; /** Year */ readonly year: number; /** Original string on the document from which date was parsed. */ readonly originalString: string; /** Indicates whether date was parsed successfully. */ readonly successfullyParsed: boolean; /** Indicates whether object is empty. Note that it is possible to successfully parse an empty date. */ readonly empty: boolean; } /** * Specifies a digital signature of the specific recognizer result. */ export interface DigitalSignature { /** Version of the digital signature. */ readonly version: number; /** The digital signature of the recognition results. */ readonly signature: Uint8Array; } export interface DigitalSignatureOptions { /** * Whether or not recognition result should be signed. */ allowSignature: boolean; }