【问题标题】:Tesseract OCR Library - Learning FontTesseract OCR 库 - 学习字体
【发布时间】:2011-06-21 23:44:55
【问题描述】:

我正在使用此 OCR 的编译 .NET 版本,可以在 @http://www.pixel-technology.com/freeware/tessnet2/ 找到它

我有它的工作,但它的目的是翻译车牌,遗憾的是引擎确实不能准确翻译一些字母,例如这是我扫描以确定字符问题的图像

结果:

12345B7B9U ABCDEFGHIJKLMNUPIJRSTUVHXYZ

因此以下字符被错误翻译:

1、O、Q、W

这似乎还不错,但是在我的车牌上,结果并不是那么好:

= H4 ODM

= LDH IFW

假测试

= NR4 y2k

如您所知,我已经尝试过降噪、增加对比度和去除不是绝对​​黑色的像素,但没有真正的改进。

显然你可以“学习”引擎的新字体,但我认为我需要为 .NET 重新编译库,而且这似乎是在我没有的 Linux 操作系统上执行的。

http://www.scribd.com/doc/16747664/Tesseract-Trainingfor-Khmer-LanguageFor-Posting

所以我不知道接下来要尝试什么,如果有人想尝试它,我已经编写了一个纯粹用于测试目的的快速控制台应用程序。如果有人有任何想法/图形处理/图书馆想法,我将不胜感激。

【问题讨论】:

  • 这是另一个问题:O 和 0 具有相同的形状,因此 OCR 引擎无法正确识别它们。
  • 是的,我注意到了,不敢相信它们的形状完全相同。反正我已经想到了一种在OCR之外处理这个的方法,所以它是np。
  • @Martin Thurau:错了!在文本字体中,0 和 O 大部分时间都是不同的——很高兴!所以如果你对这个字体进行特殊的训练,你应该能够区分它们,这是我的情况。当然,如果您事先不知道字体,这可能会困难得多。
  • @Emmanuel 我想马丁说的是这个问题的具体字体
  • @korbes:感谢您提到这一点,当然在这种情况下确实很难区分... :-)

标签: c# image-processing ocr tesseract


【解决方案1】:

我最近通过 Tessnet2 使用了 Tesseract(如果我没记错的话,Tessnet2 是 Rémy Thomas 制作的 Tesseract 2.0 的 VS2008 C++ 包装器)。让我试着用我对这个工具的一些了解来帮助你:

  • 1st,正如我上面所说,这个包装器仅适用于 Tesseract 2.0,newest Tesseract version on Google Code 是 3.00(代码不再托管在 Source Forge 上)。有固定的贡献者:我看到版本 3.01 左右正在计划中。因此,您不会从最后的增强功能中受益,包括页面布局分析,当您的车牌不是 100% 水平时可能会有所帮助。

  • 我向 Rémy 询问了关于版本 3 的 Tessnet2 .NET 包装器,他目前没有任何计划。所以和我一样,你必须自己做!

  • 1234563 Visual Studio 2008,因为它们的源代码在 vs2008 子文件夹中包含一个 VS2008 解决方案。该解决方案由 VS2008 C++ 项目组成,因此为了能够在 C# 中获得结果,您必须将 .NET P/Invoke 与项目构建的 tessDll 一起使用。同样,如果您需要这个,我有您可能感兴趣的代码示例,但您可能希望继续使用 C++ 并做您自己的新 WinForm 项目,例如!
  • 当你完成编译时(不应该有什么大问题,但如果你遇到了一些,我可能也遇到过 :-)),你会在输出中得到几个二进制文件,让你做具体培训!同样,有a page specially dedicated to Tesseract 3 training。通过这次培训,您可以:

    • 限制您的字符集,这将自动删除标点符号(例如,'/-\' 而不是 'A')

    • 指出您检测到的歧义(如您所见,用“D”代替“O”,用“B”代替“8”等),在您使用训练时将考虑这些歧义。

  • 我还看到,如果将图像限制在字母所在的区域(即没有脸,周围没有风景),Tesseract 的结果会更好:在我的情况下,我只需要识别一个特定的区域卡片从网络摄像头拍摄的照片,所以我使用图像处理来限制区域。当然,那很长,但我的图像来自许多不同的来源,所以我别无选择。如果你能得到限制在最低限度的图像,那就太好了!

希望对您有所帮助,请不要犹豫,给我您的意见和问题!

【讨论】:

  • 非常感谢您的全面回复!如果与字体样式相关的更改已被替换,则认为 Tesseract 3 可能有助于识别,尽管我怀疑情况是否如此。正如您所提到的,代码在 VS2008 中可用,因此不需要包装器,但是我不知道如何执行 .NET P/Invoke,尤其是使用这个库,因此您可以提供任何建议,包括在类似于 Tessnet2 的 DLL 中编译功能会很棒!
  • P/Invoke 是一种在托管(C#、VB)和非托管(例如非托管 C++,例如这个 VS2008 项目)DLL 之间进行通信的方式。我必须使用它,因为我必须与 C# 交互,但如果你只能使用 C++,则不需要 P/Invoke。现在,如果您真的需要它,我将向您展示一个示例!
  • “专门用于 Tesseract 3 培训的页面”的链接不再可用。
【解决方案2】:

嗨,我已经用 tesseract 做了很多 ocr,我也遇到了一些你的问题。您询问图像处理工具,我推荐"unpaper"(也有 Windows 端口,请参阅 google)这是一个很好的去歪斜、不旋转、删除边框和噪声等程序。非常适合在 ocr'ing 之前运行。

如果您的图像上有(有些)可变的背景颜色,我建议您使用"textcleaner" imagemagick script 我认为它是边缘检测和美白所有非前卫的东西。

如果您有复杂的文本,那么"ocropus" 可能会很有用。 语法是(在 linux 上):“ocroscript rec-tess”

我的设置是 1. 文本清理器 2. 脱纸 3. ocroups

通过这三个步骤,我几乎可以阅读任何内容。即使是在光线不均匀的情况下拍摄的非常模糊+嘈杂的图像,两列紧密排列的文本也非常可读。好吧,也许您的需求不是那么多文字,但步骤 1) 和 2) 可能对您有用。

【讨论】:

  • 您的链接“unpaper”无效。另外,我想就我的一个问题获得您的建议stackoverflow.com/questions/25668203/…
  • 我还有一个问题。我的目的是检测身份证中的姓名和字符。我使用“int tesseract::TESSDLL_API::MeanTextConf”来获得置信度分数。有了每个字符的置信度分数,我是否有可能确定置信度分数是否高于某个百分比,那么识别的字符是否准确?如果我错了,你能解释一下“MeanTextConf”方法的使用吗?
【解决方案3】:

我目前正在为 ispy 构建一个车牌识别引擎 - 当我将车牌拆分为单个字符并构建一个垂直显示的新图像时,我从 tesseract 获得了更好的结果,并且它们周围有空白区域,例如:

W

4

M

我认为 tesseract 的一个大问题是它试图从水平的字母和数字中生成单词,并且在字母和数字混合的车牌的情况下,它会确定数字是字母,反之亦然。输入具有垂直间隔的字符的图像会将它们视为单个字符而不是文本。

【讨论】:

    【解决方案4】:

    很好的阅读! http://robotics.usc.edu/publications/downloads/pub/635/

    关于您的车牌歪斜问题:

    问题:当 OCR 输入来自手持相机时 或其他透视不固定的成像设备,例如 扫描仪,文本行可能会偏离其原始内容 方向[13]。根据我们的实验,喂食这样的 将图像旋转到我们的 OCR 引擎会产生极差的效果 结果。 建议的方法:需要一个偏斜检测过程 在调用识别引擎之前。如果检测到任何歪斜, 执行自动旋转程序以纠正偏斜 在进一步处理文本之前。在识别算法的同时 用于倾斜检测,我们发现很多 方法,例如 [13] 中提到的方法,是基于 文档具有一定边距的假设。然而, 这个假设在我们的应用程序中并不总是成立。 此外,基于形态学的传统方法 操作和投影方法非常缓慢,并且 在存在相机捕获的图像时往往会失败。在这个 工作时,我们选择了一种基于 Branchand- 的更稳健的方法 绑定文本行查找算法(RAST 算法)[25] 用于倾斜检测和自动旋转。这个的基本思路 算法是独立识别每一行并使用 最佳得分线的斜率作为整个斜角 文本段。检测到倾斜角度后,旋转是 相应地执行。根据我们的实验,我们发现 该算法高度稳健且极其高效 和快。但是,它在以下方面受到了一个小限制 感觉它未能检测到大于 30 的旋转。 我们还尝试了另一种方法,它可以检测到任何 倾斜角高达 90。然而,这种方法是基于 在图像上存在某种十字架时。由于 由于缺乏可扩展性,我们决定坚持使用 RAST 算法。

    【讨论】:

      【解决方案5】:

      默认情况下,Tesseract 3.0x 会惩罚非单词和非常用单词的组合。常见问题解答描述了一种增加对此类废话的厌恶的方法。您可能会发现关闭对稀有或不存在单词的惩罚很有帮助,如下所述(相反): http://code.google.com/p/tesseract-ocr/wiki/FAQ#How_to_increase_the_trust_in/strength_of_the_dictionary?

      【讨论】:

        【解决方案6】:

        如果将来有人遇到这个问题,有一个名为 jTessBoxEditor 的工具可以让教授 Tesseract 变得轻而易举。您只需将其指向包含示例图像的文件夹,然后单击一个按钮,它就会为您创建 *.learneddata 文件。

        【讨论】:

          【解决方案7】:

          ABCocr .NET 使用 Tesseract3,因此如果您需要 .NET 下的最新代码,这可能是合适的。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-11-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多