9

我已经成功地将 tesseract 集成到我的 android 应用程序中,它可以读取我捕获的任何图像,但准确性非常低。但大多数情况下,我在捕获后没有得到正确的文本,因为感兴趣区域周围的一些文本也被捕获了。

我只想准确地阅读矩形区域中的所有文本,而无需捕获矩形的边缘。我已经做了一些研究并在stackoverflow上发布了两次,但仍然没有得到满意的结果!

以下是我发的 2 个帖子:

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

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

我不确定是继续使用 tesseract 还是使用 openCV

4

2 回答 2

11

包括许多其他人的链接和答案,我认为退后一步并注意光学字符识别(OCR)实际上有两个基本步骤:

  • 文本检测:这是您问题的标题和焦点,它涉及定位包含文本的图像中的区域。
  • 文本识别:这是实际识别发生的地方,来自检测的本地化图像区域被逐个字符分割并分类。这也是 Tesseract 等工具发挥作用的地方。

现在,还有两个应用 OCR 的常规设置:

  • 受控:这些是从扫描仪或类似性质的图像中获取的图像,其中目标是文档,并且诸如透视、比例、字体、方向、背景一致性等内容非常温顺。
  • 不受控制/场景:这些是更自然和野外的照片,例如从相机拍摄的照片,您试图识别街道标志、商店名称等。

Tesseract as-is 最适用于“受控”设置。总的来说,特别是对于场景 OCR,“重新训练”Tesseract不会直接改善检测,但可能会改善识别。

如果您希望改进场景文本检测,请参阅此工作;如果您正在考虑改进场景文本识别,请参阅这项工作。由于您询问了检测,因此检测参考使用最大稳定极值区域 (MSER),它具有大量的实现资源,例如,请参见此处

这里还有一个专门针对 Android 的文本检测项目:
https ://github.com/dreamdragon/text-detection

正如许多人所指出的,请记住,认可仍然是一项开放的研究挑战。

于 2013-06-28T16:12:17.240 回答
5

改善 OCR 输出的解决方案是

  • 要么使用更多的训练数据来更好地训练它

  • 使用一些线性过滤器过滤它的输入(灰度,高对比度,模糊)

在聊天中,我们发布了许多描述 OCRing 中使用的过滤技术的链接,但没有发布示例代码。

发布的一些链接是

改进 OCR 的输入

如何训练 Tesseract

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

OCR 分类

于 2013-06-21T15:23:14.250 回答