与通过命令行直接运行相比,通过NodeJS运行时,为什么Tesseract的准确性较差?

时间:2018-11-10 15:44:06

标签: javascript node.js tesseract

我正在尝试从本地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)上运行的一种方法(识别)。功能在哪里?我可以将整个内容放入一个可以在完成另一步骤后运行的函数中吗? (另一步是首先使用网络快照库保存照片)

0 个答案:

没有答案