如何提高 Node JS 和 Tesseract.js 中的 OCR 准确性?
How to increase OCR accuracy in Node JS and Tesseract.js?
我使用 tesseract.js 在 Node JS 中检测数字。
例如这是我的图片:
我 运行 我的脚本,它检测到这样的东西:
289 ,0
并且由于图像中的噪声,它考虑了space,其他符号如逗号等
我是否可以指定 just 数字而没有其他符号,例如 space 和 commas ?
这也是我的代码:
tesseract.recognize(
__dirname + '/Captcha.png',
'eng',
{ logger: m => console.log(m) }
).then(({ data: { text } }) => {
console.log(text);
});
我没有 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")
}
我刚开始学习 tesseract.js 的内部作业。
API 文档解释了如何在午餐时使用一些参数来实现您想要的效果:tessedit_char_whitelist(设置白名单字符使结果只包含这些字符)preserve_interword_spaces(在单词之间保留 space)
来自 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();
})();
我使用 tesseract.js 在 Node JS 中检测数字。 例如这是我的图片:
我 运行 我的脚本,它检测到这样的东西:
289 ,0
并且由于图像中的噪声,它考虑了space,其他符号如逗号等
我是否可以指定 just 数字而没有其他符号,例如 space 和 commas ?
这也是我的代码:
tesseract.recognize(
__dirname + '/Captcha.png',
'eng',
{ logger: m => console.log(m) }
).then(({ data: { text } }) => {
console.log(text);
});
我没有 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")
}
我刚开始学习 tesseract.js 的内部作业。
API 文档解释了如何在午餐时使用一些参数来实现您想要的效果:tessedit_char_whitelist(设置白名单字符使结果只包含这些字符)preserve_interword_spaces(在单词之间保留 space) 来自 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();
})();