Pytesseract仅在某些文件上找不到任何文本

时间:2019-01-30 06:58:04

标签: python django python-tesseract

我有以下代码,问题是,在某些图像上,返回值为空。图像的结构始终相同。它是白色背景上的纯黑色文本。清晰可读。 50%的结果是极好的,而其他结果则是空的。

我得到的唯一错误是:

  

wand / image.py:4623:CoderWarning:配置文件'icc':'RGB':RGB色彩空间不允许在PNG灰度PNG`filename.png'@ warning / png.c / MagickPNGWarningHandler / 1747     self.raise_exception()

但是,即使输出正常,每次也会引发此错误。

def retrievetext(self,docname):
    r = BytesIO()
    self.ftp.retrbinary("RETR /httpdocs/"+docname , r.write )  
    r.seek(0)
    with wi(file=r, resolution = 400) as pdf:
        pdfImage = pdf.convert('png')

    imageBlobs = []

    for img in pdfImage.sequence:

        imgPage = wi(image = img)
        imgPage.crop(left=200,top=600,width=1800,height=800)
        imageBlobs.append(imgPage.make_blob('png'))

    recognized_text = []
    for imgBlob in imageBlobs:
        im = Image.open(BytesIO(imgBlob))
        im = im.convert('L')
        text = pytesseract.image_to_string(im, lang = 'deu')
        recognized_text.append(text)

   return recognized_text

有人知道如何改善结果吗?

最诚挚的问候

1 个答案:

答案 0 :(得分:1)

您的某些图像处于灰度模式。因此,您需要先将它们转换为RGBA格式,然后再发送到pytesseract:

img = Image.open('example2.png')
rgbimg = Image.new('RGBA', img.size)
rgbimg.paste(img)
text = pytesseract.image_to_string(rgbimg, lang='deu')
print(text)