Python 3.x 通过pytesseract&;皮尔

Python 3.x 通过pytesseract&;皮尔,python-3.x,python-imaging-library,ocr,tesseract,pytesser,Python 3.x,Python Imaging Library,Ocr,Tesseract,Pytesser,所以我试图从图像中提取文本。而且由于图像的质量和大小都不好,结果也不准确。我用PIL做了一些增强和其他事情,但这只会使图像质量恶化 有人能建议对图像进行一些增强以获得更好的效果吗。图像的几个示例: 在提供的图像示例中,文本在视觉上具有相当好的质量,因此问题是OCR如何给出不准确的结果 为了说明这个答案的后续文本中给出的结论,让我们运行给定的图像 通过Tesseract。下面是Tesseract OCR的结果: "fhpgearedmomrs©gmachom" 现在,让我们将图像大小调整四次

所以我试图从图像中提取文本。而且由于图像的质量和大小都不好,结果也不准确。我用PIL做了一些增强和其他事情,但这只会使图像质量恶化

有人能建议对图像进行一些增强以获得更好的效果吗。图像的几个示例:


在提供的图像示例中,文本在视觉上具有相当好的质量,因此问题是OCR如何给出不准确的结果

为了说明这个答案的后续文本中给出的结论,让我们运行给定的图像

通过Tesseract。下面是Tesseract OCR的结果:

"fhpgearedmomrs©gmachom"
现在,让我们将图像大小调整四次,并对其应用阈值。我已经在Gimp中手动完成了大小调整和阈值设置,但通过适当的大小调整方法和PIL的阈值,可以确保自动调整大小和阈值,以便在增强后获得与我得到的增强图像类似的图像:

通过Tesseract OCR运行的改进图像给出以下文本:

“fhpgearedmotors©gmail.com”

这表明,放大图像有助于在提供的文本图像示例上实现100%的准确性

放大图像有助于获得更好的OCR精度,这可能看起来很奇怪,但。。。OCR的开发是为了将印刷媒体的扫描转换为文本,并期望设计300 dpi的文本图像。这就解释了为什么一些OCR程序没有自行调整文本大小以改善其效果,并且对希望通过放大获得更高图像dpi分辨率的小字体不起作用

下面是上述声明的摘录:

<>强>最小的文本大小为合理的精度< /强>。您必须考虑分辨率和点大小。精度下降到10pT×300 dPI以下,快低于8pT×300 dPI。快速检查是对字符的x高度的像素进行计数。(x高度是小写x的高度)。在10pt x 300dpi下,x高度通常约为20像素,尽管不同字体的x高度可能会有很大差异。低于10像素的x高度,获得准确结果的可能性很小,低于约8像素的x高度,大部分文本将被“去噪”。]


据我所知,在stackoverflow上有相当严格的规则,其中一条规则是专注于回答问题,而不是展示如果没有要求,还可以做些什么来实现目标。因此,如果你想要的答案也能给你带来更好的结果,但不是基于增强图像,请在你的问题中自由提问。把我的答案标记为已接受怎么样?我没有解释什么吗?请再次检查我的答案-我已经添加了一些解释。请耐心等待。我应用了这个概念,用PIL放大了图像,得到了更好但不准确的结果。我接受答案并不是为了得到更多的答案。你仍然相信你会得到更多的答案吗?很好的解释和很好的答案。我一直在研究从图像中读取文本(用于识别文档部分的软件),我想知道您是否已经获得了某种动态变量,即您必须放大图像多少次,以便它能够识别文本?对于800x800的图像,如果放大到1600x1600,它可以识别所有内容,但是,30x800的图像需要放大到120x3200才能识别所有内容(逗号、点、斜线等)。另外,你知道为什么“文件”这个词不能被很好地识别吗?字符“i”不是来自英语字母表