我正在尝试从本地PNG图像中提取文本。我正在使用Tesseract并通过节点从命令行运行JS文件。
如果我从命令行运行Tesseract,它会完美运行,如果我通过Javascript运行,它就不会。
我已经阅读了很多有关如何提高OCR准确性的提示的帖子,但这不是这里的问题。这里的问题是,可以精确地提取我正在使用的png文件中的文本,但是准确性会因我使用哪种方法运行Tesseract而有很大差异。
当我使用命令tesseract.exe manual.png usingcommandline
从命令行直接运行Tesseract时(manual.png是我从中提取的文件,并将其保存到usingcommandline.txt中)-返回的文件非常准确。
但是,当我在完全相同的文件上使用node ocr.js
(在下面运行代码)从命令行运行Javascript文件时,它的准确性要差得多。无法使用。 (下面的代码使用results.text
(其中的manual.png文本创建了一个vianodejs.txt文件)
var Tesseract = require('tesseract.js');
var filename = 'manual.png';
var fs = require('fs');
Tesseract.recognize(filename)
.then(function (result) {fs.writeFileSync('vianodejs.txt', result.text, function(err) {
if (err) {
console.log(err);
} else {
console.log("file written successfully");
}
})
process.exit(0)
})
这是我在两个实例中都使用的完全相同的manual.png文件,但是当我通过Javascript程序运行Tesseract时,它的准确性要差得多。最终,我需要通过Javascript程序运行它,以使我的应用程序正常工作,并且我需要使用其他方法才能达到的准确性。
欢迎所有想法。谢谢。
此外,我还有一个后续问题,将显示我的经验。
在Tesseract.recognize(filename)
上-这在技术上叫什么?它是在对象(tesseract)上运行的一种方法(识别)。功能在哪里?我可以将整个内容放入一个可以在完成另一步骤后运行的函数中吗? (另一步是首先使用网络快照库保存照片)