如何解决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 举报,一经查实,本站将立刻删除。