Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python光学字符识别(OCR)对方向未知的单个字符的识别_Python_Image Processing_Python Imaging Library_Ocr_Tesseract - Fatal编程技术网

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

Python光学字符识别(OCR)对方向未知的单个字符的识别,python,image-processing,python-imaging-library,ocr,tesseract,Python,Image Processing,Python Imaging Library,Ocr,Tesseract,我需要在清晰背景上对单个字符的图像执行OCR。这是一个自主的无人机学生竞赛,所以一切都需要是自动的,过程不能在飞行中手动定制。但是,该字符将位于已知集合中(可能为大写字母数字)。对于上下文,我从任意方向的图像开始: 然后,我会自动确定角度,向下裁剪并在通过OCR运行之前对图像进行预处理。有一件事我事先无法自动计算(因为这实际上是OCR过程的一部分),那就是剩下的4个方向(见下文)中哪一个是正确的这是我问题的关键-是否可以设置OCR,使其将A(或任何字符)旋转到90度、180度或270度作为A,

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

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

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

ocrText = pytesseract.image_to_string(imgD, config='-psm 6')
另外,即使在正确的方向上呈现清晰的图像,我也一直对系统的总体准确性有问题——任何关于这方面的提示都会很有用。例如,这就是为什么我使用PSM 6而不是PSM 10的原因-它似乎提供了更好的准确性,即使10专门用于单个字符

任何帮助都将不胜感激


谢谢

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

请注意,这可能会稍微降低性能



在您的情况下,如果字符集是已知的,并且字符周围有一个很好的框架,您可以自己执行识别,而无需使用Tesseract。

您可以检查一下,谢谢,我没有考虑过这样的定制培训(我刚刚使用了Tesseract附带的默认英文方案,因为我们不知道比赛中将使用的字体)。通过“自己执行识别”,您是建议只输出图像并让人识别字符,还是编写一个简单的上下文特定OCR引擎来执行此操作?@jt78:“一切都需要自动化",否?是的,所以我假设你是指后一种选择?你能推荐任何教程或GUI工具来帮助简化此过程吗?我设想培训将相当简单-你输入一组图像/文本对,其中每个图像描述一个字符,关联的文本给出该图像应解释为的字符。但是,这似乎更像是基于调整现有语言和字体的过程?