2012-04-17 36 views
8

我希望有人能告诉我为什么它是我的Tesseract在识别一些带有数字的图像时遇到问题,并且如果有什么我可以处理的话。 一切都按照测试工作,因为它只是我需要的数字,我以为我可以用英文模式来管理,直到我不得不从7分段显示器开始。在Tesseract中识别数字时遇到问题 - android

尽管我在附加图像上遇到了很多麻烦,但是我想知道是否应该开始研究自己的识别算法,或者如果我可以为Tesseract创建自己的数据集,然后工作,任何人都知道Tesseract的局限性在哪里?

尝试过的东西: 试图将psm设置为one_line,one_word,one_char(并截取图片)。使用one_line和one_word时,没有显着变化。 与one_char它确实认识到了一点好,但有时,由于间距太大,它附加了一个额外的数字,然后拧它,如果你看看附加的图像zero.jpg然后它导致04. 我也试过自己进行二值化,这导致了较差的识别并且非常消耗资源。 我试图倒置图片,这对tesseract完全没有任何影响。

我附上了需要处理的图片等等。

释有关图片:

decodethisimage_seven是一个形象的正方体有就认出,虽然它在字已作出建设围绕工作图像的应用程序的便利。

decodethisimage_eight是与image_seven匹配的真实生活图片。但它无法识别这一点。

decodethisimage_four2是我想让它识别的另一个图像,是的,我知道它不能被skrewed,而且我做了unskrew(认为skrew是这里的术语==“直接”)。

+0

skrew = skew nice :)。此外,图像工具集可以减少噪音,锐化,而不是。这可能有助于 – 2014-06-05 18:43:53

回答

2

我所知道的一些选项,可以帮助你:

  1. 添加图片边框和文字之间的额外空间。如果图像中的文本位于边缘,Tesseract将会非常糟糕。
  2. 复制您的图像。例如,如果您对单词'foobar'执行OCR,请复制图像并将'foobar foobar foobar foobar foobar'发送到tesseract,结果会更好。
  3. 谷歌对于font trainingimage binarization tesseract。

请记住,内置摄像头在移动设备大多是生产低质量的图像(所迷离,降噪,偏斜等)OCR本身是一种资源comsuming过程,如果你增加一个有价值的图像预处理到,低端和中端移动设备(可能拥有Android)可能会面临意外缓慢的性能下降,甚至资源缺乏。这对免费/学习项目来说没问题,但是如果你正在计划一个商业应用 - 考虑使用更好的SDK。

看一看这个问题的详细信息:OCR for android

+0

感谢您的意见,我会毫不犹豫地尝试。 关于低端中端手机,正常中段imo。有至少3mpix凸轮,这应该就够了,尽管自动对焦是一个可控的问题。 避免歪斜的图片我设置了一个非常有限的矩形作为我的屏幕上的覆盖,所以这是避免的。 但我同意这可能是沉重的手机,我不会介意它运行在服务器上,我只需要知道它的工作原理,我还没有得到呢: -/ – 2012-04-17 12:20:56

+0

虽然你有什么想法如何dublicate和/或添加一个框架图片? 我开始寻找它,只是如果你有任何经验,它准备好了:) – 2012-04-17 12:24:46

+0

1和2没有工作。 林折腾正方体,试图与javaocr工作,而不是 – 2012-04-19 12:45:11

1

你可以给javaocr一试(http://sourceforge.net/projects/javaocr/,是的,我是开发商)

Therre没有offocial版本虽然,你将不得不寻找来源(好消息:有工作的Android样本,包括采样器,离线教练和识别器应用程序)

如果你只有一种字体,你可以得到相当不错的结果(我达到了数字识别率99.96相同的字体)

PS:它是纯java,使用不变矩执行匹配(所以在缩放和旋转时没有问题)。还有非常有效的二值化。

看到它在行动:

https://play.google.com/store/apps/details?id=de.pribluda.android.ocrcall&feature=search_result#?t=W251bGwsMSwxLDEsImRlLnByaWJsdWRhLmFuZHJvaWQub2NyY2FsbCJd

+0

想你的应用程序,那并不承认任何我的号码/图片看来: -/ – 2012-04-17 12:18:14

+0

这个程序被训练在白色背景黑色文本。如果您需要底片,您可以在javaocr过程中尝试使用Android示例(在二值化过程中只需稍作修改即可使用底片)PS:您可以发布regcognition结果截图吗?然后,我可以给予更多的提示 – 2012-04-17 12:40:12

+0

没有必要,因为我的消极:-) – 2012-04-17 13:04:05

2

正方体不会为你做分割。 Tesseract将在实际的tesseract算法之前对图像进行阈值处理。阈值之后,可能会有一些边缘,残留在图像中的人工制品。

尝试手动修改图片为黑色和白色两种颜色,看看正方体的回报作为输出。

尝试阈值(自动),您的图片,看看正方体的回报作为输出。阈值的输出可能太差导致tesseract产生不良输出。

你的第4图像可能会失败,因为阈值(你有3种颜色:黑色的背景,灰色的背景和白色字母),阈值可(黑色背景,灰色背景)之间。

通常Tesseract需要漂亮的黑白图像。预处理您的图像可能需要更好的结果。

关于第一个图像(结果是“04”),试图看到箱子结果(包含公认的字符框的字符+坐标)。 “0”可能是一个小的人造物 - 像一个4×4的像素点。