c# - 无法初始化 tesseract 引擎。找不到正确的版本

标签 c# ocr

我在初始化 tessaract 引擎时遇到问题,但出现以下异常:

Failed to initialise tesseract engine.. See https://github.com/charlesw/tesseract/wiki/Error-1 for details.

我做了研究并注意到下载指定版本的语言文件很重要,在我的情况下应该是 3.0.2(我认为)。在 Visual Studio 中查看后,我注意到安装的 .NET 包装器是 3.0.2 版,加载到我的项目中的 native 文件被命名为 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

最佳答案

首先,确保将 x64 和 x86 文件夹中的 DLL 设置为“始终复制”(或复制,如果较新)。当您通过 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();
}

Visual Studio Image showing the Copy Always option

关于c# - 无法初始化 tesseract 引擎。找不到正确的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38567100/

相关文章:

c# - 使用 OLEDB 写入 excel 文件

c# - 将匿名类数组传递给方法并循环 C#

c# - 在 C# 中使用 IronOCR 进行光学字符识别

java - 使用安卓相机的简单 OCR 应用程序

python - 在 XAMPP 上安装 SDAPS?

c# - 如何在 CosmosSDK v3+ 的 FeedResponse 中提供模拟值?

c# - 通过谷歌云库进行情感分析

c# - MVVMLight工具箱Messenger类引起问题。射击N次

image - 哪里可以找到车牌图片库?

android - 如何将 Bitmap 转换为 Frame?