过去几个小时我一直在尝试 PyTesser,它是一个非常好的工具。关于 PyTesser 的准确性,我注意到以下几点:
- 包含图标、图像和文本的文件 - 准确度 5-10%
- 仅包含文本的文件(已删除图像和图标) - 准确率 50-60%
- 拉伸文件(这是最好的部分) - 拉伸文件
2) 上述 x 或 y 轴上的精度提高了 10-20%
所以显然 Pytesser 不关心字体尺寸或图像拉伸。尽管有很多关于图像处理和 OCR 的理论需要阅读,但在应用 PyTesser 或其他库(无论使用何种语言)之前,是否有任何标准的图像清理程序(除了擦除图标和图像之外)需要完成?
…………
哇,这篇文章现在已经很老了。这几天我又开始研究OCR。这次我放弃了 PyTesser,转而使用 Tesseract 引擎和 ImageMagik。直接进入正题,我发现的是这样的:
1) You can increase the resolution with ImageMagic(There are a bunch of simple shell commands you can use)
2) After increasing the resolution, the accuracy went up by 80-90%.
所以 Tesseract 引擎毫无疑问是市场上最好的开源 OCR 引擎。这里不需要事先进行图像清理。需要注意的是,它不适用于包含大量嵌入图像的文件,而且我无法找到一种方法来训练 Tesseract 忽略它们。此外,图像中的文本布局和格式也会产生很大的差异。它非常适合仅包含文本的图像。希望这有帮助。
事实证明,tesseract https://github.com/tesseract-ocr/tesseract维基百科上有一篇文章以我能想到的最好的方式回答了这个问题:
(初步回答,仅供记录)
我没用过PyTesser
,但我做了一些实验tesseract
(版本:3.02.02
).
如果您在彩色图像上调用 tesseract,那么它首先应用全局大津法 https://en.wikipedia.org/wiki/Otsu%27s_method将其二值化,然后在二值(黑白)图像上运行实际的字符识别。
图片来自:http://scikit-image.org/docs/dev/auto_examples/plot_local_otsu.html http://scikit-image.org/docs/dev/auto_examples/plot_local_otsu.html
可见,“全球大津”并不总是能产生理想的结果。
为了更好地理解超正方体“看到”的内容,请将大津方法应用于您的图像,然后查看生成的图像。
结论:提高识别率最直接的方法就是自己对图像进行二值化(很可能您会通过反复试验找到好的阈值)然后将这些二值化图像传递给tesseract
.
有人好心发布tesseract 的 api 文档 http://fossies.org/dox/tesseract-ocr-3.02.02/,因此可以验证之前关于处理管道的说法:流程页 http://fossies.org/dox/tesseract-ocr-3.02.02/group__AdvancedAPI.html#ga09be3b61fd89f7803fe37cc420b92b30 -> 获取阈值图像 http://fossies.org/dox/tesseract-ocr-3.02.02/group__AdvancedAPI.html#gaee19c9ea78a647420bbe99a447569995 -> 阈值转像素 http://fossies.org/dox/tesseract-ocr-3.02.02/classtesseract_1_1ImageThresholder.html#a8240c360cff397784e7e9f635d9ed7a3 -> 大津阈值矩形转像素 http://fossies.org/dox/tesseract-ocr-3.02.02/classtesseract_1_1ImageThresholder.html#a9bbeac96aad481ce652816d8780b6e00
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)