我需要在清晰背景上对单个角色的图像执行OCR。这是针对自主无人机学生竞赛,因此一切都需要自动进行,并且无法在飞行中手动定制过程。然而,该角色将处于已知集合中(可能是大写字母数字)。对于上下文,我从任意方向的图像开始:
然后我自动确定角度,裁剪并预处理图像,然后再通过OCR运行。我无法事先自动计算的一件事(因为它实际上是OCR过程的一部分)是剩下的4个方向中的哪一个(见下文)是正确的。 这是我的问题的关键 - 是否可以设置OCR,使其看到A(或任何角色)旋转到90度,180度或270度作为A,而不是认为它是其他的东西,如V?据我所知,Tesseract似乎提供了OSD功能,但我不能让他们使用单个字符。
https://i.stack.imgur.com/TlaOr.png https://i.stack.imgur.com/ET9hr.png https://i.stack.imgur.com/maD0E.png https://i.stack.imgur.com/b4mth.png
目前,我正在使用PyTesseract访问Tesseract OCR安装。
ocrText = pytesseract.image_to_string(imgD, config='-psm 6')
另外,即使在正确的方向上呈现清晰的图像,我也一直在系统的一般准确性方面遇到麻烦 - 任何提示都很有用。例如,这就是我使用PSM 6而不是PSM 10的原因 - 它似乎提供了更好的准确性,即使10是专门针对单个字符的。
非常感谢任何帮助
谢谢!
答案 0 :(得分:1)
一个简单的解决方案是使用每个角色的所有四个旋转版本执行训练。您可以将它们训练为相同的角色(所有'A')或不同的角色('A0','A1','A2','A3')。
请注意,这可能会降低性能。
在你的情况下,如果字符集是已知的并且字符周围有一个漂亮的框架,你可以自己完成识别,没有Tesseract。