我正在尝试让 Tesseract 识别燃气表单元照片中的数字。 但它返回的大部分是空页面作为输出。(我正在使用 Tesseract 3.02) 例如
我想将 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/