【问题标题】:Failed to initialise tesseract engine. Can't find correct version无法初始化 tesseract 引擎。找不到正确的版本
【发布时间】:2016-07-25 11:55:26
【问题描述】:

我在初始化 tessaract 引擎时遇到了以下异常:

无法初始化 tesseract 引擎。有关详细信息,请参阅 https://github.com/charlesw/tesseract/wiki/Error-1

我做了研究,发现下载指定版本的语言文件很重要,在我的情况下应该是 3.0.2(我认为)。在我查看 Visual Studio 后,我注意到安装的 .NET 包装器是 3.0.2 版,加载到我的项目中的本机文件名为 libtesseract304.dll(我认为是 3.4 版),在 packages.config 文件中被引用版本 3.0.2.0

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Tesseract" version="3.0.2.0" targetFramework="net40" />
</packages>

...最后,我可以在 gitHub 中找到的唯一语言包版本是 3.4

谁能告诉我在哪里可以找到语言包 3.0.2 版或 .NET 包装器 3.4 版或只是指出解决此问题的方法?

我在 Windows 7 Service Pack 1 上使用 Visual Studio 2012

【问题讨论】:

标签: c# ocr


【解决方案1】:

首先,确保 x64 和 x86 文件夹中的 DLLs 设置为“始终复制”(如果更新,则为复制)。当您通过 NuGet 安装 Tesseract 包时,这些 DLL 会插入到项目中。

另外,请确保 tessdata 文件夹中的文件也设置为“始终复制”。

这将使这些文件夹与各自的文件被复制到正在执行的程序集文件夹(例如 bin/Debugbin)。

最后,确保在实例化 TesseractEngine 类时传递正确的路径。我通常有一个包含代码的类库,然后在开发时在控制台应用程序中重用它,然后在 ASP.NET Web 应用程序中重用。因此,无论正在执行哪个项目,确保路径正确的一种方法是:

var path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);
path = Path.Combine(path, "tessdata");
path = path.Replace("file:\\", "");
using (var engine = new TesseractEngine(path, "eng", EngineMode.Default))
{
    engine.SetVariable("tessedit_char_whitelist", "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ");
    engine.SetVariable("tessedit_unrej_any_wd", true);

    using (var page = engine.Process(bitmap, PageSegMode.SingleLine))
        res = page.GetText();
}

【讨论】:

    【解决方案2】:

    在您的调试中选择任何 CPU 而不是指定的 x84 或 x64

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-07
      • 1970-01-01
      • 2022-12-04
      • 1970-01-01
      • 2015-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多