我使用tesseract.js来检测Node中的数字。例如,这就是我的形象:
我运行我的脚本,它检测到这样的东西:
289 ,0
由于图像中的噪声,它考虑了空间,其他符号,如逗号等。
我是否可以指定,只指定数字,没有其他像空格和逗号这样的符号
这也是我的代码:
tesseract.recognize(
__dirname + '/Captcha.png',
'eng',
{ logger: m => console.log(m) }
).then(({ data: { text } }) => {
console.log(text);
});
发布于 2021-01-12 07:51:51
我并不是没有js tesseract API,但是似乎有一个非常简单的工作--在这里使用过滤器之后:
tesseract.recognize(
__dirname + '/Captcha.png',
'eng',
{ logger: m => console.log(m) }
).then(({ data: { text } }) => {
const filteredText = Array.from(text.matchAll(/\d/g)).join("")
console.log(filteredText)
})
下面是对过滤函数的测试:
if (Array.from("209, 1".matchAll(/\d/g)).join("") !== "2091") {
throw("Not working")
}
发布于 2021-03-09 10:18:24
我刚开始学习tesseract.js的内部人员来完成一个任务。
API文档解释了如何在午餐作业时使用一些参数来实现您想要的结果:tessedit_char_whitelist (设置白色列表字符使结果只包含这些字符) preserve_interword_spaces (保持单词之间的空格)来自https://github.com/naptha/tesseract.js/blob/master/docs/examples.md
const { createWorker } = require('tesseract.js');
const worker = createWorker();
(async () => {
await worker.load();
await worker.loadLanguage('eng');
await worker.initialize('eng');
await worker.setParameters({
tessedit_char_whitelist: '0123456789',
preserve_interword_spaces: '0',
});
const { data: { text } } = await worker.recognize('https://tesseract.projectnaptha.com/img/eng_bw.png');
console.log(text);
await worker.terminate();
})();
https://stackoverflow.com/questions/65687240
复制