使用Tesseract或OpenCV进行Android对象检测

8
我已成功将tesseract集成到我的安卓应用程序中,它可以读取我捕获的图像,但准确度很低。但大多数情况下,我在捕获后并没有得到正确的文本,因为还捕获了感兴趣区域周围的一些文本。
我想要的是从一个矩形区域准确地读取所有文本,而不捕获矩形的边缘。我已经做了一些研究,并在stackoverflow上发布了两次,但仍然没有得到满意的结果!
以下是我发表的两篇文章:

https://stackoverflow.com/questions/16663504/extract-text-from-a-captured-image?noredirect=1#comment23973954_16663504

从Android捕获的图像中提取信息

我不确定是使用Tesseract还是OpenCV。


自从我还是学生时就没有使用过openCV,所以不太清楚...但是看了你的另一个问题,彩票可能不是最好的尝试对象。建议使用白纸和黑色粗体字,然后从那里开始尝试...灯光、相机内部、对焦 - 它们都会影响OCR的效果。 - Shark
我也尝试了这种方法,如果文本在白色背景上,则可以读取。但是当我将其应用于彩票时,大多数时间都会给出无用的值。我还尝试了各种光照条件,即使在良好的光照条件下,当处理彩票时,tesseract也给出了差劲的结果。我该怎么办? - TharakaNirmana
诅咒上苍,彩票公司竟然试图让伪造/OCR门票变得困难!因此,在进行OCR之前,您需要使用... RasterizerFilter清理彩票。无论如何,尝试过滤全息图/有趣的背景,使用高对比度等,并尝试将经过滤波的输入传递给OCR,而不是尝试制作可读取任何内容的OCR。 - Shark
是的,使用本地库在Java中进行编程以完成繁重的工作。 - Shark
让我们在聊天中继续这个讨论:http://chat.stackoverflow.com/rooms/32170/discussion-between-tharakanirmana-and-shark - TharakaNirmana
显示剩余6条评论
2个回答

11
包括其他人的许多链接和答案,我认为有必要退一步并注意到光学字符识别(OCR)实际上有两个基本步骤:
- 文本检测:这是您问题的标题和重点,它涉及定位图像中包含文本的区域。 - 文本识别:这是实际识别发生的地方,检测从定位中获得的图像区域逐个字符分割并分类。这也是像 Tesseract 这样的工具发挥作用的地方。
现在,OCR 应用的还有两个通用设置:
- 受控制的:这些是从扫描仪或类似设备中获取的图像,其中目标是文档,而透视、比例、字体、方向、背景一致性等因素相对稳定。 - 非受控制/场景:这些是更自然的野外照片,例如从相机中获取的图像,您正在尝试识别街道标志、商店名称等信息。
Tesseract 本身最适用于“受控制”的环境。总的来说,但特别是对于场景 OCR,重新训练 Tesseract 不会直接改善检测,但可能会改善识别。
如果您想要提高场景文本检测,可以查看此work;如果您想要提高场景文本识别,则可以查看此work。由于您询问的是检测方面,该检测参考使用了极值稳定区域(MSER),它有大量的实现资源,例如请参见here
此外,这里还有一个专门针对Android的文本检测项目:
https://github.com/dreamdragon/text-detection 正如许多人所指出的那样,请记住,识别仍然是一个开放的研究挑战。

非常感谢您抽出时间回答这个问题。您提供了如此重要的信息。我想我能够找到一种解决方法。再次感谢! - TharakaNirmana

5
改善OCR输出的解决方案是:
  • 使用更多的训练数据来进行更好的训练

  • 使用一些线性滤波器对其输入进行过滤(灰度化、高对比度、模糊处理)

在聊天中,我们发布了一些描述OCR过程中使用的滤波技术的链接,但没有发布示例代码。
发布的一些链接如下:

改善OCR的输入

如何训练Tesseract

使用非对称滤波器进行文本增强 <-- 这篇论文很容易在谷歌上找到,并且应该全文阅读,因为它清楚地说明并演示了OCR处理图像之前必要的步骤。

OCR分类


以下是Shark发布的链接:http://manuscripttranscription.blogspot.com/2013/02/improving-ocr-inputs-from-ocr-outputs.htmlhttp://www.cedricve.me/2013/04/12/how-to-train-tesseract/http://scholr.ly/paper/1046523/text-enhancement-with-asymmetric-filter-for-video-ocr - TharakaNirmana
线性分类器/OCR分类。这就是我试图记住的那个。 - Shark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接