微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Angular + Tesseract.js和 opencv.js

如何解决Angular + Tesseract.js和 opencv.js

我目前尝试在 angular 中使用 tesseract.js,对之前在 opencv.js 中修改过的图像进行一些识别。

通过 opencv.js 进行的图像处理现在工作得非常好,但我无法弄清楚我使用 tesseract.js 尝试不同的地方有什么问题...

当我在网上学习一些教程时,效果很好,我可以对认示例图像执行 OCR,例如(仅相关部分)

     const exampleImage = 'https://tesseract.projectnaptha.com/img/eng_bw.png';

        const worker = Tesseract.createWorker({
          logger: m => console.log(m)
        });

        Tesseract.setLogging(true);
        work();

        async function work() {
          await worker.load();
          await worker.loadLanguage('eng');
          await worker.initialize('eng');

          let result = await worker.detect(exampleImage);
          console.log(result.data);

          await worker.terminate();
        }

但是,当我尝试对先前处理过的图像(通过 opencv.js)、cv.Mat() 图像或通过生成的 html 画布执行相同操作时……我总是遇到相同的错误

tesseract.js error : TypeError: Cannot read property 'SetImage' of null

我也收到此错误Error in pixReadMem: size < 12

我真的不明白我做错了什么,我相信我的错误可能在于我将图片提供给 tesseract 的方式......但是我尝试过的每一种方式都不起作用,所以我在这里请求您的帮助。

不工作的代码示例:

    const worker = Tesseract.createWorker({
          logger: m => console.log(m)
        });

        Tesseract.setLogging(true);
        work(onlyDocument);

        async function work(d) {
          await worker.load();

          const ctx = document.getElementById('result').getContext('2d');

          const buffer = ctx.getimageData(0,ctx.canvas.width,ctx.canvas.height).data.buffer;

          const result2 = await worker.detect(buffer);

          console.log(result2.data);

          await worker.terminate();
        }

我必须明确指出,我尝试了所有我能想到的格式来将该图像提供给 tesseract.js(缓冲区、画布、数组,...)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。