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) • 9.32 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(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("dynamsoft-core")):"function"==typeof define&&define.amd?define(["exports","dynamsoft-core"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).Dynamsoft=e.Dynamsoft||{},e.Dynamsoft.DLR={}),e.Dynamsoft.Core)}(this,(function(e,t){"use strict";const r="undefined"==typeof self,s="function"==typeof importScripts,a=(()=>{if(!s){if(!r&&document.currentScript){let e=document.currentScript.src,t=e.indexOf("?");if(-1!=t)e=e.substring(0,t);else{let t=e.indexOf("#");-1!=t&&(e=e.substring(0,t))}return e.substring(0,e.lastIndexOf("/")+1)}return"./"}})(),n=e=>{if(null==e&&(e="./"),r||s);else{let t=document.createElement("a");t.href=e,e=t.href}return e.endsWith("/")||(e+="/"),e};t.CoreModule.engineResourcePaths.dlr={version:"3.4.32",path:a,isInternal:!0},null==t.CoreModule.engineResourcePaths.dlrData&&(t.CoreModule.engineResourcePaths.dlrData={version:"1.0.11",path:n(a+"../../dynamsoft-label-recognizer-data@1.0.11/dist/"),isInternal:!0}),t.workerAutoResources.dlr={js:!0,wasm:!0,deps:["license","dip","dnn"]},t.workerAutoResources.dnn={wasm:!0,deps:["dip"]};const o="1.4.21";"string"!=typeof t.CoreModule.engineResourcePaths.std&&t.compareVersion(t.CoreModule.engineResourcePaths.std.version,o)<0&&(t.CoreModule.engineResourcePaths.std={version:o,path:n(a+`../../dynamsoft-capture-vision-std@${o}/dist/`),isInternal:!0});const c="2.4.31";(!t.CoreModule.engineResourcePaths.dip||"string"!=typeof t.CoreModule.engineResourcePaths.dip&&t.compareVersion(t.CoreModule.engineResourcePaths.dip.version,c)<0)&&(t.CoreModule.engineResourcePaths.dip={version:c,path:n(a+`../../dynamsoft-image-processing@${c}/dist/`),isInternal:!0});const i="1.0.20";(!t.CoreModule.engineResourcePaths.dnn||"string"!=typeof t.CoreModule.engineResourcePaths.dnn&&t.compareVersion(t.CoreModule.engineResourcePaths.dnn.version,i)<0)&&(t.CoreModule.engineResourcePaths.dnn={version:i,path:n(a+`../../dynamsoft-capture-vision-dnn@${i}/dist/`),isInternal:!0});let l=!1;class u{static getVersion(){const e=t.innerVersions.dlr&&t.innerVersions.dlr.wasm,r=t.innerVersions.dlr&&t.innerVersions.dlr.worker;return`3.4.32(Worker: ${r||"Not Loaded"}, Wasm: ${e||"Not Loaded"})`}static async loadRecognitionData(e,r){return await t.loadWasm("dlr"),await new Promise(((s,a)=>{let n=t.getNextTaskID();t.mapTaskCallBack[n]=async e=>{if(e.success){const t=e.result;if(0!==t.errorCode){let e=new Error(t.errorString);return e.errorCode=t.errorCode,a(e)}return t.isModel||(l=!0),s(t)}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,a(t)}},r&&!r.endsWith("/")&&(r+="/");const o=t.handleEngineResourcePaths(t.CoreModule.engineResourcePaths);r||"ConfusableChars"!==e||(r=o.dlr),t.worker.postMessage({type:"dlr_loadData",id:n,body:{dataName:e,dataPath:r||o.dlrData}})}))}}t.mapPackageRegister.dlr={loadRecognitionData:u.loadRecognitionData,get bLoadConfusableCharsData(){return l}};const h={filterVINResult:function(e){let t="";if(18===e.characterResults.length){let t=e.characterResults[9].location.points[0].x-e.characterResults[8].location.points[1].x;t<2&&(t=2);let r=e.characterResults[1].location.points[0].x-e.characterResults[0].location.points[1].x,s=e.characterResults[17].location.points[0].x-e.characterResults[16].location.points[1].x,a=2===t?3:t;if(r-t>=a&&s-t<a)e.characterResults.shift();else if(s-t>=a&&r-t<a)e.characterResults.pop();else{e.characterResults[0].characterHConfidence>e.characterResults[17].characterHConfidence?e.characterResults.pop():e.characterResults.shift()}}else if(19===e.characterResults.length){let t=e.characterResults[10].location.points[0].x-e.characterResults[9].location.points[1].x;t<2&&(t=2);let r,s,a,n=e.characterResults[1].location.points[0].x-e.characterResults[0].location.points[1].x,o=e.characterResults[18].location.points[0].x-e.characterResults[17].location.points[1].x,c=e.characterResults[2].location.points[0].x-e.characterResults[1].location.points[1].x,i=e.characterResults[17].location.points[0].x-e.characterResults[16].location.points[1].x,l=2===t?3:t;if("1"===e.characterResults[1].characterH||"1"===e.characterResults[2].characterH||"1"===e.characterResults[16].characterH||"1"===e.characterResults[17].characterH){for(let t=9;t<e.characterResults.length;t++)if("1"!==e.characterResults[t].characterH){a=e.characterResults[t].location.points[1].x-e.characterResults[t].location.points[0].x;break}"1"===e.characterResults[1].characterH&&(r=a-(e.characterResults[1].location.points[1].x-e.characterResults[1].location.points[0].x)+3),"1"===e.characterResults[2].characterH&&(r=a-(e.characterResults[2].location.points[1].x-e.characterResults[2].location.points[0].x)+3),"1"===e.characterResults[16].characterH&&(s=a-(e.characterResults[16].location.points[1].x-e.characterResults[16].location.points[0].x)+3),"1"===e.characterResults[17].characterH&&(s=a-(e.characterResults[17].location.points[1].x-e.characterResults[17].location.points[0].x)+3)}if(c-t>=(r||l)&&i-t<(s||l))e.characterResults.splice(0,2);else if(i-t>=(s||l)&&c-t<(r||l))e.characterResults.splice(17,2);else if(n>t&&o>t)e.characterResults.pop(),e.characterResults.shift();else{let t=e.characterResults[0].characterHConfidence+e.characterResults[1].characterHConfidence,r=e.characterResults[17].characterHConfidence+e.characterResults[18].characterHConfidence,s=e.characterResults[0].characterHConfidence+e.characterResults[18].characterHConfidence,a=Math.min(t,r,s);a===t?e.characterResults.splice(0,2):a===r?e.characterResults.splice(17,2):a===s&&(e.characterResults.pop(),e.characterResults.shift())}}for(let r of e.characterResults)t+=r.characterH;return t},checkValidVIN:function(e){if(!e||17!=e.length)return!1;return(e=>{const t=new Map([["A",1],["B",2],["C",3],["D",4],["E",5],["F",6],["G",7],["H",8],["J",1],["K",2],["L",3],["M",4],["N",5],["P",7],["R",9],["S",2],["T",3],["U",4],["V",5],["W",6],["X",7],["Y",8],["Z",9],["1",1],["2",2],["3",3],["4",4],["5",5],["6",6],["7",7],["8",8],["9",9]]),r=[8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2];let s=0;for(let a=0;a<e.length;a++){let n=t.get(e[a]);n&&(s+=n*r[a])}return s%11})(e).toString()===e[8]},checkValidMRP:function(e){if(!e||44!=e.length)return!1;const t=(e,t,r)=>{const s=new Map([["<",0],["0",0],["1",1],["2",2],["3",3],["4",4],["5",5],["6",6],["7",7],["8",8],["9",9],["A",10],["B",11],["C",12],["D",13],["E",14],["F",15],["G",16],["H",17],["I",18],["J",19],["K",20],["L",21],["M",22],["N",23],["O",24],["P",25],["Q",26],["R",27],["S",28],["T",29],["U",30],["V",31],["W",32],["X",33],["Y",34],["Z",35]]),a=[7,3,1];let n=0;for(let o=t,c=0;o<=r;o++){let t=s.get(e[o]);t&&(n+=t*a[c%3]),c++}return n%10},r=e.slice(0,10)+e.slice(13,20)+e.slice(21,43),s=t(e,0,8).toString(),a=t(e,13,18).toString(),n=t(e,21,26).toString(),o=t(e,28,41).toString(),c=t(r,0,r.length).toString();return s===e[9]&&a===e[19]&&n===e[27]&&o===e[42]&&c===e[43]},checkValidMRV:function(e){if(!e||44!=e.length&&36!=e.length)return!1;const t=(e,t,r)=>{const s=new Map([["<",0],["0",0],["1",1],["2",2],["3",3],["4",4],["5",5],["6",6],["7",7],["8",8],["9",9],["A",10],["B",11],["C",12],["D",13],["E",14],["F",15],["G",16],["H",17],["I",18],["J",19],["K",20],["L",21],["M",22],["N",23],["O",24],["P",25],["Q",26],["R",27],["S",28],["T",29],["U",30],["V",31],["W",32],["X",33],["Y",34],["Z",35]]),a=[7,3,1];let n=0;for(let o=t,c=0;o<=r;o++){let t=s.get(e[o]);t&&(n+=t*a[c%3]),c++}return n%10},r=t(e,0,8).toString(),s=t(e,13,18).toString(),a=t(e,21,26).toString();return r===e[9]&&s===e[19]&&a===e[27]},checkValidIDCard:function(e,t){if(!e||30!=e.length&&36!=e.length)return!1;const r=(e,t,r)=>{const s=new Map([["<",0],["0",0],["1",1],["2",2],["3",3],["4",4],["5",5],["6",6],["7",7],["8",8],["9",9],["A",10],["B",11],["C",12],["D",13],["E",14],["F",15],["G",16],["H",17],["I",18],["J",19],["K",20],["L",21],["M",22],["N",23],["O",24],["P",25],["Q",26],["R",27],["S",28],["T",29],["U",30],["V",31],["W",32],["X",33],["Y",34],["Z",35]]),a=[7,3,1];let n=0;for(let o=t,c=0;o<=r;o++){let t=s.get(e[o]);t&&(n+=t*a[c%3]),c++}return n%10};if(30===e.length){if(t&&e===t){return r(e,5,13).toString()===e[14]}if(t&&e!==t){const s=`${t.substring(5,30)}${e.substring(0,7)}${e.substring(8,15)}${e.substring(18,29)}`;return r(s,0,s.length-1).toString()===e[29]}}else if(36===e.length){const t=r(e,0,8).toString(),s=r(e,13,18).toString(),a=r(e,21,26).toString(),n=`${e.substring(0,10)}${e.substring(13,20)}${e.substring(21,28)}`,o=r(n,0,n.length-1).toString();return t===e[9]&&s===e[19]&&a===e[27]&&o===e[35]}}};var d;e.EnumRawTextLineStatus=void 0,(d=e.EnumRawTextLineStatus||(e.EnumRawTextLineStatus={}))[d.RTLS_LOCALIZED=0]="RTLS_LOCALIZED",d[d.RTLS_RECOGNITION_FAILED=1]="RTLS_RECOGNITION_FAILED",d[d.RTLS_RECOGNITION_SUCCEEDED=2]="RTLS_RECOGNITION_SUCCEEDED",t.mapTaskCallBack[-1]=async e=>{u.onDataLoadProgressChanged&&u.onDataLoadProgressChanged(e.resourcesPath,e.tag,{loaded:e.loaded,total:e.total})},e.LabelRecognizerModule=u,e.utilsFuncs=h}));