未知方向的单个字符的 Python 光学字符识别 (OCR)

标签 python image-processing python-imaging-library ocr tesseract

我需要对清晰背景上的单个字符图像执行 OCR。这是一场自主无人机学生竞赛,因此一切都需要自动化,并且不能在飞行中手动定制流程。然而,该字符将位于已知的集合中(可能是大写字母数字)。对于上下文,我从任意方向的图像开始:

Example starting image

然后,我会自动确定角度、裁剪并预处理图像,然后再通过 OCR 运行图像。我无法事先自动计算的一件事(因为它实际上是 OCR 过程的一部分)是其余 4 个方向(见下文)中哪一个是正确的。 这是我的问题的关键 - 是否可以设置 OCR,以便将 A(或任何字符)旋转到 90、180 或 270 度视为 A,而不是认为它是其他东西,例如V?据我所知,Tesseract 中似乎提供了 OSD 功能,但我无法让它们使用单​​个字符。

/image/TlaOr.png /image/ET9hr.png /image/maD0E.png /image/b4mth.png

目前,我正在使用 PyTesseract 访问 Tesseract OCR 安装。

ocrText = pytesseract.image_to_string(imgD, config='-psm 6')

另外,即使在正确的方向上呈现清晰的图像,我也一直在系统的总体准确性方面遇到问题 - 有关这方面的任何提示也很有用。例如,这就是我使用 PSM 6 而不是 PSM 10 的原因 - 它似乎提供了更好的准确性,尽管 10 专门用于单个字符。

任何帮助将不胜感激

谢谢!

最佳答案

一个简单的解决方案是使用每个角色的所有四个旋转版本进行训练。您可以将它们训练为相同的角色(全部为“A”)或不同的角色(“A0”、“A1”、“A2”、“A3”)。

无论如何请注意,这可能会稍微降低性能。

<小时/>

就您而言,如果字符集已知并且字符周围有一个漂亮的框架,您可以自己很好地执行识别,而无需 Tesseract。

关于未知方向的单个字符的 Python 光学字符识别 (OCR),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49559642/

相关文章:

Python 错误 : sqlite3. OperationalError:没有这样的表:配置

python - 将对象类型作为参数传递

python - 将 django 调试输出转储到文件中?

python - 为什么我们在 Tensorflow 中命名变量?

c - 按 (x,y) 像素进行高效图像转换?

c++ - 在 DLIB 中将 RGB 图像转换为灰度图像

python - 导入图像适用于 GAE,但不适用于 dev_appserver.py

java - 如何在 Java 中比较两个图像?

python - 在 Mac OS 10.8.4 上安装 PIL 时出错

python - 循环遍历所有 RGB 值并将图像拼接在一起