我在初始化 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/Debug 或 bin)。
最后,确保在实例化 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();
}
关于c# - 无法初始化 tesseract 引擎。找不到正确的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38567100/