16

好吧,我正在使用此 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

所以我不知道接下来要尝试什么,如果有人想尝试,我编写了一个纯粹用于测试目的的快速控制台应用程序。如果有人有任何想法/图形处理/图书馆想法,我会很高兴听到他们的声音。

4

7 回答 7

28

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

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

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

  • 因此,如果您想获得最新版本的源代码,您可以从Subversion存储库下载它们(所有内容都在专用站点页面上进行了描述),如果您拥有 Visual Studio 2008,您将能够编译它们,因为它们的源代码包含vs2008子文件夹中的 VS2008 解决方案。该解决方案由 VS2008 C++ 项目组成,因此为了能够在 C# 中获得结果,您必须使用tessDll项目构建的 .NET P/Invoke。同样,如果您需要这个,我有您可能感兴趣的代码示例,但您可能希望继续使用 C++ 并做您自己的新 WinForm 项目,例如!

  • 当你完成编译时(不应该有大问题,但如果你遇到了一些,我可能也遇到过:-)),你将在输出中得到几个二进制文件,让你做一个具体培训!同样,有一个专门用于 Tesseract 3 培训的页面。通过本次培训,您可以:

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

    • 指出您检测到的歧义(“D”而不是“O”,如您所见,“B”而不是“8”等),当您使用培训时将考虑这些歧义。

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

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

于 2011-02-08T09:24:20.227 回答
11

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

如果您的图像上有(有些)可变的背景颜色,我会推荐“textcleaner”imagemagick 脚本 ,我认为它是边缘检测和美白所有非前卫的东西。

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

我的设置是 1. textcleaner 2. unpaper 3. ocroups

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

于 2011-02-13T22:40:22.893 回答
3

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

W

4

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

于 2011-08-23T13:19:02.493 回答
2

一个伟大的阅读!http://robotics.usc.edu/publications/downloads/pub/635/

关于车牌的歪斜问题:

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

于 2012-05-22T11:53:48.650 回答
1

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

于 2013-06-20T20:45:14.233 回答
1

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

于 2017-05-30T14:31:56.883 回答
0

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

于 2013-01-16T09:04:15.373 回答