【问题标题】:c# using tesseract languagec# 使用tesseract语言
【发布时间】:2013-12-01 22:52:35
【问题描述】:

我正在尝试为 google 的 Tesseract OCR 引擎使用下载的自定义语言,它有以下文件但没有经过训练的数据文件,请参阅下面的代码,只有在我尝试使用新语言时才会出现错误,可以有人帮忙。

文件:
cp27.DangAmbigs
cp27.freq-dawg
cp27.inttemp
cp27.normproto
cp27.pffmtablecp
cp27.unicharset
cp27.user-words
cp27.word-dawg


下载链接:http://www.sendspace.com/file/gd7j4i

错误消息:无法初始化 tesseract 引擎


Pix test = PixConverter.ToPix(image);

try
{
    using (var engine = new TesseractEngine(@"tessdata", @"cp27", EngineMode.Default))
    {
        engine.SetVariable("tessedit_char_whitelist", charset);

        using (var page = engine.Process(test))
        {
            return(page.GetText());
        }
    }
}
catch { }

【问题讨论】:

  • 为什么不发布错误?
  • 对不起,我忘了添加错误信息。错误消息:无法初始化 tesseract 引擎。
  • 这是整个堆栈跟踪?
  • 这是我得到的错误信息,如果我将 cp27 更改为 eng,一切正常,但我想使用新语言
  • 我已经上传了文件,如果有人可以看看,谢谢。

标签: c# c#-4.0 ocr tesseract


【解决方案1】:

您需要运行 Tesseract combine_tessdata 命令将您的文件合并到一个 cp27.traineddata 文件中。

http://code.google.com/p/tesseract-ocr/wiki/TrainingTesseract3

【讨论】:

  • 感谢您提供的信息,我已将文件合并到 cp27.traineddata 中,现在它给出了另一条错误消息。 “在 Tesseract.dll 中发生了 'System.AccessViolationException' 类型的未处理异常附加信息:尝试读取或写入受保护的内存。这通常表明其他内存已损坏。”
  • 可能是文件没有正确生成。所有步骤都严格执行了吗?
  • 我已经下载了 tesseract-ocr-3.02-win32-portable.zip,然后将所有 8 个文件复制到 tessdata 文件夹中,并从 cmd 输入 combine_tessdata tessdata\cp27。它创建了一个名为 cp27.traineddata 的文件
  • 这里是 cmd 的输出。合并tessdata文件,TessdataManager合并tesseract数据文件。,类型0的偏移量是-1,类型1的偏移量是140,类型2的偏移量是-1,类型3的偏移量是353,类型4的偏移量是359683,偏移量是类型 5 是 359894,类型 6 的偏移量是 -1,类型 7 的偏移量是 406758,类型 8 的偏移量是 -1,类型 9 的偏移量是 406770,类型 10 的偏移量是 -1,类型 11 的偏移量是 -1 , 类型 12 的偏移量是 -1, 类型 13 的偏移量是 -1, 类型 14 的偏移量是 -1, 类型 15 的偏移量是 -1, 类型 16 的偏移量是 -1
  • 我重新阅读了您的原始帖子并意识到您的语言数据文件是 Tesseract 2.0x 版本,而不是 3.0x 版本。因此,您将需要 Tesseract 2.0x 的 .NET 包装器Tessnet2。 .trainnedata 适用于 Tesseract 3.0x 版本。
【解决方案2】:

在当前目录中创建 lang.traineddata 使用combine_tessdata 命令。

当存在 一个 tesseract 实例并且您希望将 tesseract 作为 服务(一次多个请求)或 并行。使用时在你的包装器中:

tesseract::TessBaseApi *api

你应该为 api 分配内存(新的),所以使用:

api new tesseract::TessBaseApi()

我对其进行了测试并且可以正常工作。

Tesseract.dll 中发生 System.AccessViolationException' 附加 信息:试图读取或写入受保护的内存。这是 通常表明其他内存已损坏。”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2013-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    相关资源
    最近更新 更多