【问题标题】:Tesseract OCR with Gasmeter带煤气表的 Tesseract OCR
【发布时间】:2013-05-03 09:32:05
【问题描述】:
我正试图让 Tesseract 识别煤气表装置照片中的数字。
但它返回的主要是空页作为输出。(我使用的是 Tesseract 3.02)
例如
pic 1, some tweaking
我想将 Tesseract 用于 Android 的 OCR 应用程序,所以我只是在检查 Tesseract 是否甚至能够识别这样的数字。第一张照片是我在 java 程序中通过图像预处理所能得到的。
如果我使用 gimp 并手动进行更多调整,tesseract 会识别它。但我需要它来识别像 1 这样的图片。我能做些什么来做到这一点?
->pic 2, gimp tweak
【问题讨论】:
标签:
android
image-processing
tesseract
【解决方案1】:
第一张图片实际上是使用最新的 Tesseract 版本给出了正确的输出。
由于遵循分割逻辑,Tesseract 有时会给出空白页面。在您的情况下,它会尝试分割单个单词,结果所有这些字符将被视为噪音并且识别将失败。
如果您打算识别煤气表单位的照片,请考虑将 Tesseract 的 Page Segmentation Mode 设置为 8(这告诉 tesseract 将给定的图像假定为单个单词)
你也可以考虑tesseract的其他页面分割模式
0 = 仅方向和脚本检测 (OSD)。
1 = 使用 OSD 自动分割页面。
2 = 自动页面分割,但没有 OSD 或 OCR
3 = 全自动页面分割,但没有 OSD。 (默认)
4 = 假设有一列大小可变的文本。
5 = 假设一个统一的垂直对齐文本块。
6 = 假设一个统一的文本块。
7 = 将图像视为单个文本行。
8 = 将图像视为一个单词。
9 = 将图像视为圆圈中的单个单词。
10 = 将图像视为单个字符。
要设置特定的 psm,请使用“tesseract -psm
我建议你再做一件事。由于您想识别只有数字的燃气表值,您可以在 tesseract 配置文件 仅包含数字中指定自定义 charset。字符集的大小越小,识别的准确性就越高。字符集应始终包含输入图像可能包含的字符。
即使在尝试了上述所有组合之后,如果 tesseract 无法正确识别输入图像,则尝试通过去除那些不需要的斑点来提高输入图像的质量。您可以尝试使用 ImageMagick 来清理输入图像。希望这会有所帮助。