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

我可以正常工作,但是其目的是翻译车牌,遗憾的是该引擎确实无法准确翻译某些字母,例如这是我扫描的图像以确定字符问题

enter image description here

结果:

12345b7b9u abcdefghijklmnupijrstuvhxyz

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

1、O、Q、W

这看起来还不错,但是在我的车牌上,结果不太好:

enter image description here = H4 ODM

enter image description here =LDH IFW

假测试

enter image description here = NR4 y2k

正如您可能知道的那样,我尝试过降噪、增加对比度并删除非绝对黑色的像素,但没有真正的改进。

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

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

所以我不知道接下来要尝试什么,我编写了一个快速控制台应用程序,纯粹出于测试目的(如果有人想尝试的话)。如果有人有任何想法/图形操作/图书馆的想法,我很乐意听到他们。

有帮助吗?

解决方案

我最近通过 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 包装器,他目前没有任何计划。所以就像我一样,你必须自己做!

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

  • 当您完成编译后(应该不会有什么大问题,但是请告诉我您是否遇到了一些问题,我可能也遇到了它们:-)),您将在输出中得到几个二进制文件,这些二进制文件将允许您执行具体培训!再次,有 专门用于 Tesseract 3 训练的页面. 。通过本次培训,您可以:

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

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

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

希望对您有所帮助,请随时向我提出您的意见和问题!

其他提示

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

如果您的图像上有(某种程度上)可变的背景颜色,我建议 “textcleaner”imagemagick 脚本我认为它是边缘检测并美化所有非边缘的东西。

如果你有复杂的文本 “奥克罗普斯” 可能有用。语法是(在 Linux 上):“ocrscript re-tess”

我的设置是1。TextCleaner 2。未纸3。奥鲁普斯

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

我目前正在构建一个车牌识别引擎 我窥探 - 当我将车牌分割成单独的字符并构建一个垂直显示的新图像并在其周围留有空白时,我从超正方体中得到了更好的结果,如下所示:

4

中号

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

很棒的一本书! http://robotics.usc.edu/publications/downloads/pub/635/

关于车牌倾斜问题:

问题:当OCR输入是从手持式相机或其他成像设备不像扫描仪那样固定的镜头时,文本线可能会从其原始方向偏斜[13]。根据我们的实验,将这种旋转的图像馈送到我们的OCR发动机会产生极为差的结果。提议的方法:在调用识别引擎之前需要偏斜检测过程。如果检测到任何偏斜,请在进一步处理文本之前执行自动旋转过程以纠正偏斜。在识别用于偏斜检测的算法时,我们发现许多方法(例如[13]中提到的一种方法)基于文档具有S ET余量的假设。但是,这个假设并不总是存在于我们的应用中。此外,基于形态操作和投影方法的传统方法非常慢,并且在存在摄像机捕获图像的情况下往往会失败。在这项工作中,我们选择一种基于分支和绑定的文本线找到算法(RAST算法)[25]的更强大的方法进行偏斜检测和自动旋转。该算法的基本思想是独立识别每条线,并将最佳评分线的斜率用作整个文本段的偏斜角。检测到偏斜角后,进行相应的旋转。基于我们的实验,我们发现该算法非常稳健,效率非常快。但是,它在未能检测到大于30的旋转的意义上遭受了一个较小的限制。我们还尝试了另一种方法,该方法可以检测到最高90的任何角度。但是,这种方法基于图像上某种交叉的存在。由于缺乏可扩展性,我们决定坚持使用Rast算法。

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top