dynamsoft-label-recognizer
Version:
Dynamsoft Label Recognizer (DLR) is an SDK designed to recognize meaningful zonal text or symbols in an image (Label). Common scenarios include price tags in supermarkets, inventory labels in warehouses, VIN codes on car windshields, driver licenses, pass
12 lines (11 loc) • 3.16 kB
JavaScript
/*!
* Dynamsoft JavaScript Library
* @product Dynamsoft Label Recognizer JS Edition
* @website http://www.dynamsoft.com
* @copyright Copyright 2024, Dynamsoft Corporation
* @author Dynamsoft
* @version 3.4.32
* @fileoverview Dynamsoft JavaScript Library for Barcode Reader
* More info on dlr JS: https://www.dynamsoft.com/label-recognition/docs/web/programming/javascript/
*/
!function(){"use strict";let e={};const t=self;t.dlrWorkerVersion="3.4.32";const r=t.checkAndAutoLoadCaffeModel=async(t,r)=>{if(!e[t]){let a={Letter:2711347,Number:2626880,NumberLetter:2733480,NumberUppercase:2679209,Uppercase:2659096,MRZ:2681184,VIN:2679232}[t];e[t]=(async()=>{try{let o,s,n;const d=new TextDecoder,l=r+t+".data",c=await new Promise(((e,o)=>{const s=new XMLHttpRequest;s.responseType="arraybuffer",s.onload=()=>{s.status<200||s.status>=300?e({ok:!1,status:s.status}):e({ok:!0,arrayBuffer:()=>s.response})},s.onerror=s.onabort=()=>{o({ok:!1,status:s.status})},s.onloadstart=()=>{postMessage({type:"event",id:-1,body:{loaded:0,total:a||0,tag:"starting",resourcesPath:r+t+".data"}})},s.onloadend=()=>{postMessage({type:"event",id:-1,body:{loaded:a||0,total:a||0,tag:"completed",resourcesPath:r+t+".data"}})};let n=Date.now();s.onprogress=e=>{if(e.lengthComputable&&(a=e.total),a){const t=Date.now();n+500<t&&(postMessage({type:"event",id:-1,body:{total:a,loaded:e.loaded,tag:"in progress",resourcesPath:l}}),n=t)}},s.open("GET",l,!0),s.send()}));if(!c.ok)throw new Error(`Network error. ${l} Status: ${c.status}.`);o=await c.arrayBuffer();const f=d.decode(new Uint8Array(o,0,8));if("DLR_MDL "===f){{let e=0;const t=new Uint8Array(o,8,8);for(let r=7;r>=0;--r)e=256*e+t[r];const r=d.decode(new Uint8Array(o,16,e));s=JSON.parse(r),n=16+e}let r=e=>{const t=s[e];if(!t)throw new Error(`File name '${e}' not found.`);return new Uint8Array(o,n+t[0],t[1])},a=JSON.parse(d.decode(r(t+".config.json")));const l=a.mainModel,c=a.assistModels,f=a.modelFilter;{const e=r(l+".prototxt"),a=r(l+".txt"),o=r(l+".caffemodel");ep(),wasmImports.emscripten_bind_DlrWasm_appendCaffeModelBuffer_7(es(t),setBufferIntoWasm(e,0),e.length,setBufferIntoWasm(a,1),a.length,setBufferIntoWasm(o,2),o.length)}if(c)for(let e of c){const a=t+e,o=l+e,s=r(o+".prototxt"),n=r(o+".txt"),d=r(o+".caffemodel");wasmImports.emscripten_bind_DlrWasm_appendCaffeModelBuffer_7(a,s,s.length,n,n.length,d,d.length)}if(f){const e=r(f+".txt");wasmImports.emscripten_bind_DlrWasm_appendModelFilterFileBuffer_3(t,e,e.length)}e[t]=Promise.resolve({errorCode:0,errorString:"Successful.",isModel:!0})}else{if("CDLR_MDL"!==f)throw new Error("Model data type incorrect.");{const r=new Uint8Array(o),a=[68,76,82,95,77,68,76,32];for(let e=0;e<8;e++)r[e]=a[e];let s=t;t.endsWith(".data")||(s+=".data"),ep();let n=JSON.parse(UTF8ToString(wasmImports.emscripten_bind_DlrWasm_AppendConfusableCharactersBuffer_3(es(s),setBufferIntoWasm(r,0),r.length)));e[t]=n}}return e[t]}catch(r){throw delete e[t],new Error(r)}})()}await e[t]};Object.assign(mapController,{dlr_loadData:async(t,a)=>{try{await r(t.dataName,t.dataPath);let o=await e[t.dataName];handleTaskRes(a,{success:!0,result:o})}catch(e){return void handleTaskErr(a,e)}}})}();