15

我在 Windows XP 上使用 tessnet2 包装器到 Tesseract 2.04 源,将其配置为与 x86 一起使用。

TessarctTest 项目主要功能包含:

        Bitmap bmp = new Bitmap(@"C:\temp\New Folder\dotnet\eurotext.tif");
        tessnet2.Tesseract ocr = new tessnet2.Tesseract();
        // ocr.SetVariable("tessedit_char_whitelist", "0123456789");
        ocr.Init(@"C:\temp\tessdata", "eng", false);
        // List<tessnet2.Word> r1 = ocr.DoOCR(bmp, new Rectangle(792, 247, 130, 54));
        List<tessnet2.Word> r1 = ocr.DoOCR(bmp, Rectangle.Empty);
        int lc = tessnet2.Tesseract.LineCount(r1);

当我尝试运行程序时,它在 ocr.Init 内的以下行崩溃

int result = m_myTessBaseAPIInstance->InitWithLanguage((char *)_tessdata.ToPointer(), NULL, (char *)_lang.ToPointer(), NULL, numericMode, 0, NULL);

有人有想法吗?

欣赏!

4

8 回答 8

24

对于在所有这些之后仍然有问题的任何人,请确保如果您使用的是 tessnet2,请确保您下载了正确的语言文件

您需要Tesseract(2.00 及更高版本)的英语语言数据,而不是Tesseract 3.01版本的英语语言数据。我希望这可以为您节省几个小时!:)

于 2012-02-26T12:10:40.427 回答
15

对于那些试图在 C# 中为 Tesseract OCR 引擎使用 Tessnet2 程序集并且遇到Tesseract.Init()导致应用程序崩溃的方法问题的人 - 我发现了一个可能的原因。

首先,我假设您的文件如下:

bin\Debug\MyDotNetApp.exe
bin\Debug\tessdata\eng.DangAmbigs
bin\Debug\tessdata\eng.freq-dawg
bin\Debug\tessdata\eng.inttemp
bin\Debug\tessdata\eng.pffmtable
bin\Debug\tessdata\eng.unicharset
bin\Debug\tessdata\eng.user-words
bin\Debug\tessdata\eeng.word-dawg

并使用它进行初始化:

using (var ocr = new tessnet2.Tesseract())
{
    ocr.Init(null, "eng", false);
    ...
}

理论上应该可以。对我来说它确实起作用了——但它并没有突然发生……即使我没有改变任何会影响它的东西。

对我来说,解决方法是搜索注册表(使用 regedit)并删除对 tesseract 的所有引用。我认为在安装 Tesseract 3.00 安装程序 (tesseract-ocr-setup-3.00.exe) 时可能创建了一些可疑条目。

当我删除这些条目并重新启动时(我曾尝试在删除 reg 条目之前重新启动,仅供参考),一切都恢复了。

是注册表项导致了问题吗?谁知道。但它确实解决了我的问题。

于 2010-10-27T19:09:10.517 回答
3

项目+属性,调试选项卡,向下滚动,勾选“启用非托管代码调试”复选框。现在您可以设置断点并对其进行调试。


如果您的 IDE 不支持混合模式调试,您可以使用本文中概述的技术附加调试

于 2010-01-13T01:12:35.357 回答
1

就我而言,dkr88 的回答完成了这项工作,非常感谢。我猜想在之前将 tesseract 作为独立安装时存在一些依赖项损坏。此外,OCR 质量似乎比 MODI 更好,尽管后者的倾斜校正在更极端的情况下工作(垂直文本)。

我现在对 tessnet2 很满意。只有一个缺点:我需要更改我的 app.config(如互联网上所述)并添加以下内容:

<startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
</startup>
于 2011-02-28T20:19:38.483 回答
1

确保您的 tessdata 文件夹 (C:\temp\tessdata) 包含英语语言数据文件。这些文件是:eng.DangAmbigs、eng.freq-dawg、eng.inttemp、eng.normproto、eng.pffmtable、eng.unicharset、eng.user-words、eng.word-dawg。从tesseract 下载中下载文件。 要下载的文件是 tesseract-2.00.eng.tar.gz。

于 2010-07-23T19:07:31.407 回答
1

我的问题是我没有以管理员权限运行应用程序。

当我右键单击运行并选择本地管理员时,它起作用了。

于 2011-03-30T14:28:54.693 回答
0

就我而言,我进行了以下更改以使其正常工作:)

  1. 下载 https://tesseract-ocr.googlecode.com/files/tesseract-2.00.eng.tar.gz
  2. 将 tessdata文件夹粘贴到我的 Debug 文件夹
  3. 并做了以下代码更改

ocr.Init("D:\MyApplication\MyApplication\Debug", "eng", false);

ocr.Init(null, "eng", false);

于 2016-01-24T07:22:27.630 回答
0

在我的情况下,我将 tessdata 文件设置为始终复制,然后它没有在 init 行上崩溃。

于 2019-01-13T18:51:06.127 回答