UNPKG

@microblink/blinkinput-in-browser-sdk

Version:

A simple barcode scanning library for WebAssembly-enabled browsers.

125 lines (102 loc) 3.8 kB
/** * Copyright (c) Microblink Ltd. All rights reserved. */ import { Recognizer, RecognizerResult, RecognizerSettings, WasmSDK } from "../../MicroblinkSDK/DataStructures"; import { BarcodeData } from "./BarcodeData"; /** * A settings object that is used for configuring the BarcodeRecognizer. */ export class BarcodeRecognizerSettings implements RecognizerSettings { /** * Enables scanning of barcodes with inverse intensity values * (e.g. white barcode on black background). */ shouldScanInverse = false; /** * Enable slower, but more thorough scanning, thus giving the higher * possibility of successful scan. * * NOTE: this option has no effect on PDF417 barcode scanning */ slowerThoroughScan = true; /** * Allow scanning PDF417 barcodes which don't have quiet zone * surrounding it (e.g. text concatenated with barcode). This * option can significantly increase recognition time. */ nullQuietZoneAllowed = false; /** * Enable decoding of non-standard PDF417 barcodes, but without * guarantee that all data will be read. This option should be enabled * for PDF417 barcode that has missing rows (i.e. not whole barcode is * printed) */ uncertainDecodingAllowed = true; /** * Allow enabling the autodetection of image scale when scanning barcodes. * If set to true, prior reading barcode, image scale will be * corrected. This enabled correct reading of barcodes on high * resolution images but slows down the recognition process. * * NOTE: This setting is applied only for Code39 and Code128 barcode scanning. */ useAutoScale = true; /** * Enable reading code39 barcode contents as extended data. For more information about code39 * extended data (a.k.a. full ASCII mode), see https://en.wikipedia.org/wiki/Code_39#Full_ASCII_Code_39 */ readCode39AsExtendedData = false; /** Should Code 128 1D barcode be scanned. */ scanCode128 = false; /** Should Code 39 1D barcode be scanned. */ scanCode39 = false; /** Should EAN 13 1D barcode be scanned. */ scanEAN13 = false; /** Should EAN 8 1D barcode be scanned. */ scanEAN8 = false; /** Should ITF 1D barcode be scanned. */ scanITF = false; /** Should PDF417 2D barcode be scanned. */ scanPDF417 = false; /** Should QR code be scanned. */ scanQRCode = false; /** Should UPC A 1D barcode be scanned. */ scanUPCA = false; /** Should UPC E 1D barcode be scanned. */ scanUPCE = false; } /** * The result of image recognition when using the BarcodeRecognizer. */ export interface BarcodeRecognizerResult extends RecognizerResult { /** Result of barcode recognition */ readonly barcodeData: BarcodeData; } /** * Recognizer that can perform recognition of any supported barcode type. */ export interface BarcodeRecognizer extends Recognizer { /** Returns the currently applied BarcodeRecognizerSettings. */ currentSettings(): Promise< BarcodeRecognizerSettings > /** Applies new settings to the recognizer. */ updateSettings( newSettings: BarcodeRecognizerSettings ): Promise< void >; /** Returns the current result of the recognition. */ getResult(): Promise< BarcodeRecognizerResult >; } /** * This function is used to create a new instance of `BarcodeRecognizer`. * @param wasmSDK Instance of WasmSDK which will be used to communicate with the WebAssembly module. */ export async function createBarcodeRecognizer( wasmSDK: WasmSDK ): Promise< BarcodeRecognizer > { return wasmSDK.mbWasmModule.newRecognizer( "BarcodeRecognizer" ) as Promise< BarcodeRecognizer >; }