android - 带燃气表的 Tesseract OCR

标签 android image-processing tesseract

我正在尝试让 Tesseract 识别燃气表单元照片中的数字。 但它返回的大部分是空页面作为输出。(我正在使用 Tesseract 3.02) 例如

pic 1, some tweaking

我想将 Tesseract 用于 Android 版 OCR 应用程序,所以我只是检查 Tesseract 是否能够识别这样的数字。第一张照片是我在 java 程序中通过图像预处理所能得到的。

如果我使用 gimp 并手动进行更多调整,tesseract 会识别它。但我需要它来识别像 1 这样的图片。我能做些什么来实现这一点吗? -> pic 2, gimp tweak

最佳答案

第一张图片实际上使用最新的 Tesseract 版本给出了正确的输出。

Tesseract 有时会由于其遵循的分段逻辑而给出空页。在您的情况下,它将尝试分割单个单词,结果所有这些字符将被视为噪音并且识别将失败。

如果您打算识别燃气表单元的照片,请考虑将 Tesseract 的页面分割模式设置为 8(这告诉 tesseract 将给定图像假定为单个单词)

您还可以考虑 tesseract 的其他页面分割模式

0 = 仅方向和脚本检测 (OSD)。

1 = 使用 OSD 自动页面分段。

2 = 自动页面分割,但没有 OSD 或 OCR

3 = 全自动页面分割,但没有 OSD。 (默认)

4 = 假设单列文本大小可变。

5 = 假设有一个统一的垂直对齐文本 block 。

6 = 假设一个统一的文本 block 。

7 = 将图像视为单个文本行。

8 = 将图像视为单个单词。

9 = 将图像视为圆圈中的单个单词。

10 = 将图像视为单个字符。

要设置特定的 psm,请使用“tesseract -psm

我还建议你一件事。由于您想识别仅包含数字的燃气表值,因此您可以在 tesseract 配置文件仅包含数字中指定自定义字符集。字符集的大小越小,识别的准确率就越高。字符集应始终包含输入图像可能具有的字符。

即使尝试了上述所有组合,如果 tesseract 无法正确识别输入图像,请尝试通过删除那些不需要的 Blob 来提高输入图像的质量。您可以尝试使用ImageMagick来清理输入图像。希望这会有所帮助。

关于android - 带燃气表的 Tesseract OCR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16355746/

相关文章:

java - 如何使用最佳方式检索 Json 文件

android - 有没有办法在 android chrome 上做 --disable-web-security

image - ASIFT 和 SIFT 的替代解决方案?

c# - 如何将一张图片叠加到另一张图片上?

android - 仅将用户词添加到 Tesseract

android - 在 android.support.v4.app.FragmentPagerAdapter 中访问 getString()?

android - 使每个项目的尺寸相同

image-processing - 增强现实游戏

linux - 使用 Tesseract 对图像进行文本识别

python - 如何从包含表格数据的图像中提取数据?