tessnet2无法加载

时间:2010-01-13 00:35:48

标签: c# crash tessnet2

我在Windows XP上使用tessnet2包装到Tesseract 2.04 Source, 将其配置为使用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);

任何人都有想法?

欣赏!

8 个答案:

答案 0 :(得分:24)

对于仍然遇到问题的所有人,请确保您使用tessnet2下载正确的语言文件

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

答案 1 :(得分:14)

对于那些试图在C#中使用Tessnet2程序集用于Tesseract OCR引擎的人以及遇到导致应用程序崩溃的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条目之前尝试重新启动,仅供参考),一切都恢复了。

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

答案 2 :(得分:3)

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


如果您的IDE不支持混合模式调试,您可以使用this post中列出的技术附加调试器。

答案 3 :(得分:1)

答案 4 :(得分:1)

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

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

<startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
</startup>

答案 5 :(得分:1)

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

当我右键单击运行并选择本地管理员时,它可以工作。

答案 6 :(得分:0)

在我的情况下,我做了以下更改以使其工作:)

  1. 下载 https://tesseract-ocr.googlecode.com/files/tesseract-2.00.eng.tar.gz
  2. tessdata 文件夹粘贴到我的调试文件夹
  3. 并执行了以下代码更改
  4. ocr.Init("D:\MyApplication\MyApplication\Debug", "eng", false);

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

答案 7 :(得分:0)

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