Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Tesseract-保护工人_Javascript_Ocr - Fatal编程技术网

Javascript Tesseract-保护工人

Javascript Tesseract-保护工人,javascript,ocr,Javascript,Ocr,我有一个javascript应用程序,可以读取发票。它的工作非常完美,但我想提高它的性能一点 应用程序的工作方式是这样的。有“下一步”和“提交”按钮。之后,加载一个新图像并调用函数doOcr。在doOCR的每个实例中,都会创建一个必须花费时间的worker。我正试图找出如何将worker移到函数之外,这样就不需要每次都创建它。代码如下。想法 //ocr the image and fill values function doOCR(){(async () => { wor

我有一个javascript应用程序,可以读取发票。它的工作非常完美,但我想提高它的性能一点

应用程序的工作方式是这样的。有“下一步”和“提交”按钮。之后,加载一个新图像并调用函数doOcr。在doOCR的每个实例中,都会创建一个必须花费时间的worker。我正试图找出如何将worker移到函数之外,这样就不需要每次都创建它。代码如下。想法

//ocr the image and fill values
function doOCR(){(async () => {
        worker = Tesseract.createWorker();
        await worker.load();
        await worker.loadLanguage('eng');
        await worker.initialize('eng');             
        const values = [];
        for (let i = 0; i < rectangles.length; i++) {
              const { data: { text } } = await worker.recognize(imgFile, { rectangle: rectangles[i] });
        values.push(text);
        }
        console.log(values);

        //calculate and display result 
        dir = values[0].split(' ');
        $("#inDir").val(dir[1]);
        //get invoice number
        $("#inVendor").val(dir[0]);
        //get invoice #
        var str = values[0]; 
        var n = str.indexOf("Invoice:", 0);
        var n1 = str.indexOf("Invoice", n+5);
        invoice = str.substr(n+9, n1-n-9);
        $("#inInvoice").val(invoice);

        await worker.terminate();

        $('#status').attr('src','check.png').show();

})()};
//ocr图像和填充值
函数doOCR(){(异步()=>{
worker=Tesseract.createWorker();
等待worker.load();
wait worker.loadLanguage('eng');
等待工作进程。初始化('eng');
常量值=[];
for(设i=0;i

谢谢。

我想我是通过将函数的上半部分更改为:

            function doOCR(){(async () => {
                if (typeof(worker) == "undefined") {
                    worker = Tesseract.createWorker();
                    await worker.load();
                    await worker.loadLanguage('eng');
                    await worker.initialize('eng');     
                }           
                const values = [];
                for (let i = 0; i < rectangles.length; i++) {
                  const { data: { text } } = await worker.recognize(imgFile, { rectangle: rectangles[i] });
                  values.push(text);
                }
                console.log(values);
函数doOCR(){(异步()=>{
if(工作人员类型)=“未定义”){
worker=Tesseract.createWorker();
等待worker.load();
wait worker.loadLanguage('eng');
等待工作进程。初始化('eng');
}           
常量值=[];
for(设i=0;i

并删除了wait.worker.terminate();

我想我是通过将函数的上半部分更改为:

            function doOCR(){(async () => {
                if (typeof(worker) == "undefined") {
                    worker = Tesseract.createWorker();
                    await worker.load();
                    await worker.loadLanguage('eng');
                    await worker.initialize('eng');     
                }           
                const values = [];
                for (let i = 0; i < rectangles.length; i++) {
                  const { data: { text } } = await worker.recognize(imgFile, { rectangle: rectangles[i] });
                  values.push(text);
                }
                console.log(values);
函数doOCR(){(异步()=>{
if(工作人员类型)=“未定义”){
worker=Tesseract.createWorker();
等待worker.load();
wait worker.loadLanguage('eng');
等待工作进程。初始化('eng');
}           
常量值=[];
for(设i=0;i
并删除wait.worker.terminate()