UNPKG

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) 8.77 kB
/*! * 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/ */ import{CoreModule as t,workerAutoResources as e,compareVersion as r,mapPackageRegister as s,innerVersions as a,loadWasm as n,getNextTaskID as c,mapTaskCallBack as o,handleEngineResourcePaths as i,worker as l}from"dynamsoft-core";const h="undefined"==typeof self,u="function"==typeof importScripts,R=(()=>{if(!u){if(!h&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})(),d=t=>{if(null==t&&(t="./"),h||u);else{let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t};t.engineResourcePaths.dlr={version:"3.4.32",path:R,isInternal:!0},null==t.engineResourcePaths.dlrData&&(t.engineResourcePaths.dlrData={version:"1.0.11",path:d(R+"../../dynamsoft-label-recognizer-data@1.0.11/dist/"),isInternal:!0}),e.dlr={js:!0,wasm:!0,deps:["license","dip","dnn"]},e.dnn={wasm:!0,deps:["dip"]};const g="1.4.21";"string"!=typeof t.engineResourcePaths.std&&r(t.engineResourcePaths.std.version,g)<0&&(t.engineResourcePaths.std={version:g,path:d(R+`../../dynamsoft-capture-vision-std@${g}/dist/`),isInternal:!0});const p="2.4.31";(!t.engineResourcePaths.dip||"string"!=typeof t.engineResourcePaths.dip&&r(t.engineResourcePaths.dip.version,p)<0)&&(t.engineResourcePaths.dip={version:p,path:d(R+`../../dynamsoft-image-processing@${p}/dist/`),isInternal:!0});const f="1.0.20";(!t.engineResourcePaths.dnn||"string"!=typeof t.engineResourcePaths.dnn&&r(t.engineResourcePaths.dnn.version,f)<0)&&(t.engineResourcePaths.dnn={version:f,path:d(R+`../../dynamsoft-capture-vision-dnn@${f}/dist/`),isInternal:!0});let C=!1;class S{static getVersion(){const t=a.dlr&&a.dlr.wasm,e=a.dlr&&a.dlr.worker;return`3.4.32(Worker: ${e||"Not Loaded"}, Wasm: ${t||"Not Loaded"})`}static async loadRecognitionData(e,r){return await n("dlr"),await new Promise(((s,a)=>{let n=c();o[n]=async t=>{if(t.success){const e=t.result;if(0!==e.errorCode){let t=new Error(e.errorString);return t.errorCode=e.errorCode,a(t)}return e.isModel||(C=!0),s(e)}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,a(e)}},r&&!r.endsWith("/")&&(r+="/");const h=i(t.engineResourcePaths);r||"ConfusableChars"!==e||(r=h.dlr),l.postMessage({type:"dlr_loadData",id:n,body:{dataName:e,dataPath:r||h.dlrData}})}))}}s.dlr={loadRecognitionData:S.loadRecognitionData,get bLoadConfusableCharsData(){return C}};const x={filterVINResult:function(t){let e="";if(18===t.characterResults.length){let e=t.characterResults[9].location.points[0].x-t.characterResults[8].location.points[1].x;e<2&&(e=2);let r=t.characterResults[1].location.points[0].x-t.characterResults[0].location.points[1].x,s=t.characterResults[17].location.points[0].x-t.characterResults[16].location.points[1].x,a=2===e?3:e;if(r-e>=a&&s-e<a)t.characterResults.shift();else if(s-e>=a&&r-e<a)t.characterResults.pop();else{t.characterResults[0].characterHConfidence>t.characterResults[17].characterHConfidence?t.characterResults.pop():t.characterResults.shift()}}else if(19===t.characterResults.length){let e=t.characterResults[10].location.points[0].x-t.characterResults[9].location.points[1].x;e<2&&(e=2);let r,s,a,n=t.characterResults[1].location.points[0].x-t.characterResults[0].location.points[1].x,c=t.characterResults[18].location.points[0].x-t.characterResults[17].location.points[1].x,o=t.characterResults[2].location.points[0].x-t.characterResults[1].location.points[1].x,i=t.characterResults[17].location.points[0].x-t.characterResults[16].location.points[1].x,l=2===e?3:e;if("1"===t.characterResults[1].characterH||"1"===t.characterResults[2].characterH||"1"===t.characterResults[16].characterH||"1"===t.characterResults[17].characterH){for(let e=9;e<t.characterResults.length;e++)if("1"!==t.characterResults[e].characterH){a=t.characterResults[e].location.points[1].x-t.characterResults[e].location.points[0].x;break}"1"===t.characterResults[1].characterH&&(r=a-(t.characterResults[1].location.points[1].x-t.characterResults[1].location.points[0].x)+3),"1"===t.characterResults[2].characterH&&(r=a-(t.characterResults[2].location.points[1].x-t.characterResults[2].location.points[0].x)+3),"1"===t.characterResults[16].characterH&&(s=a-(t.characterResults[16].location.points[1].x-t.characterResults[16].location.points[0].x)+3),"1"===t.characterResults[17].characterH&&(s=a-(t.characterResults[17].location.points[1].x-t.characterResults[17].location.points[0].x)+3)}if(o-e>=(r||l)&&i-e<(s||l))t.characterResults.splice(0,2);else if(i-e>=(s||l)&&o-e<(r||l))t.characterResults.splice(17,2);else if(n>e&&c>e)t.characterResults.pop(),t.characterResults.shift();else{let e=t.characterResults[0].characterHConfidence+t.characterResults[1].characterHConfidence,r=t.characterResults[17].characterHConfidence+t.characterResults[18].characterHConfidence,s=t.characterResults[0].characterHConfidence+t.characterResults[18].characterHConfidence,a=Math.min(e,r,s);a===e?t.characterResults.splice(0,2):a===r?t.characterResults.splice(17,2):a===s&&(t.characterResults.pop(),t.characterResults.shift())}}for(let r of t.characterResults)e+=r.characterH;return e},checkValidVIN:function(t){if(!t||17!=t.length)return!1;return(t=>{const e=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<t.length;a++){let n=e.get(t[a]);n&&(s+=n*r[a])}return s%11})(t).toString()===t[8]},checkValidMRP:function(t){if(!t||44!=t.length)return!1;const e=(t,e,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 c=e,o=0;c<=r;c++){let e=s.get(t[c]);e&&(n+=e*a[o%3]),o++}return n%10},r=t.slice(0,10)+t.slice(13,20)+t.slice(21,43),s=e(t,0,8).toString(),a=e(t,13,18).toString(),n=e(t,21,26).toString(),c=e(t,28,41).toString(),o=e(r,0,r.length).toString();return s===t[9]&&a===t[19]&&n===t[27]&&c===t[42]&&o===t[43]},checkValidMRV:function(t){if(!t||44!=t.length&&36!=t.length)return!1;const e=(t,e,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 c=e,o=0;c<=r;c++){let e=s.get(t[c]);e&&(n+=e*a[o%3]),o++}return n%10},r=e(t,0,8).toString(),s=e(t,13,18).toString(),a=e(t,21,26).toString();return r===t[9]&&s===t[19]&&a===t[27]},checkValidIDCard:function(t,e){if(!t||30!=t.length&&36!=t.length)return!1;const r=(t,e,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 c=e,o=0;c<=r;c++){let e=s.get(t[c]);e&&(n+=e*a[o%3]),o++}return n%10};if(30===t.length){if(e&&t===e){return r(t,5,13).toString()===t[14]}if(e&&t!==e){const s=`${e.substring(5,30)}${t.substring(0,7)}${t.substring(8,15)}${t.substring(18,29)}`;return r(s,0,s.length-1).toString()===t[29]}}else if(36===t.length){const e=r(t,0,8).toString(),s=r(t,13,18).toString(),a=r(t,21,26).toString(),n=`${t.substring(0,10)}${t.substring(13,20)}${t.substring(21,28)}`,c=r(n,0,n.length-1).toString();return e===t[9]&&s===t[19]&&a===t[27]&&c===t[35]}}};var P;!function(t){t[t.RTLS_LOCALIZED=0]="RTLS_LOCALIZED",t[t.RTLS_RECOGNITION_FAILED=1]="RTLS_RECOGNITION_FAILED",t[t.RTLS_RECOGNITION_SUCCEEDED=2]="RTLS_RECOGNITION_SUCCEEDED"}(P||(P={})),o[-1]=async t=>{S.onDataLoadProgressChanged&&S.onDataLoadProgressChanged(t.resourcesPath,t.tag,{loaded:t.loaded,total:t.total})};export{P as EnumRawTextLineStatus,S as LabelRecognizerModule,x as utilsFuncs};