【问题标题】:Tesseract showing gibberishTesseract 显示乱码
【发布时间】:2019-12-14 02:11:45
【问题描述】:

我正在使用 pytesseract 库来创建一个 OCR 翻译不和谐机器人。但是 tesseract 的输出 90% 完全是乱码,我不明白为什么。

我尝试使用的图像已被裁剪到我希望使用的区域。我试图通过 PIL 将图像转换为灰度,但是 pytesseract 将不会输出任何内容。

我正在使用 pytesseract (0.2.7) 和 tesseract (v5 alpha) 的最新版本

我使用以下代码从互联网获取图像,通过 tesseract 传递它,然后(注释)翻译文本。

from PIL import Image
import requests
import pytesseract
from io import BytesIO

from translate import Translator

translator = Translator(from_lang="autodetect", to_lang="en")

response = requests.get('https://image.prntscr.com/image/acqm3LDeSJOHtUZEMfA9eA.png')

#image = Image.open(BytesIO(response.content)).convert('LA')
image = Image.open(BytesIO(response.content))
string = pytesseract.image_to_string(image, lang='fra')
#image.save('greyscale.png')

print(string.format())

#translation = translator.translate(string)

#print(translation)

我从 tesseract 得到的输出可以在这里找到:https://pastebin.com/kDYuTE4Q

我对 tesseract 和 python 都是全新的,所以我可能做错了一些根本性的错误,或者我向 tesseract 提出了一些目前不可能的问题。

【问题讨论】:

    标签: python python-3.x tesseract python-tesseract


    【解决方案1】:

    只需反转图像即可获得很多好处。 Tesseract 似乎更喜欢白色背景上的黑色文本。此外,通过增加对比度,我得到了一些改进。

    from PIL import Image, ImageOps
    import requests
    import pytesseract
    from io import BytesIO
    
    
    pytesseract.pytesseract.tesseract_cmd = 'C:\\Program Files (x86)\\Tesseract-OCR\\tesseract.exe'
    
    response = requests.get('https://image.prntscr.com/image/acqm3LDeSJOHtUZEMfA9eA.png')
    
    image = Image.open(BytesIO(response.content))
    
    if image.mode == 'RGBA':
        r,g,b,a = image.split()
        image = Image.merge('RGB', (r,g,b))
    
    image = ImageOps.invert(image)
    
    contrast = ImageEnhance.Contrast(image)
    image = contrast.enhance(2)
    
    config = ("--psm 6")
    
    txt = pytesseract.image_to_string(image, config = config, lang='fra')
    
    print(txt)
    

    一点讨论。原始 PNG 图像有一个 alpha 通道,会导致反转操作问题。所以我们做了一个技巧,将图像分割成单独的通道并合并回 RGB 图像。 ImageEnhance 模块有一些奇怪的语法可供使用,但它可以工作,您可以了解如何使用它。

    这是输出:

    Je savais niveau 28
    lly a Tl heures
    Bonne nuit
    lly a Tl heures
    Je sors mon chien je reviens après
    Ilya 1l heures
    Je t en reprendrai un demain écris moi quand tu es en
    ligne
    Ilya 1l heures
    Bonne nuit
    y a f heures
    Oki
    Ily a T1 heures
    

    还不错。时间戳不是很好,但是如果您查看原始图像,这些字母的分辨率不是很好。但是,如果您对图像进行更多处理(对比度、阈值等),也许您可​​以获得更好的结果。

    【讨论】:

    • 感谢您花时间提供有关 tesseract 的一些信息并向我展示可能的解决方案。我试图对图像(opencv)进行一些预处理,但我永远无法获得更多信息,或者只会更糟。时间戳对我来说并不重要,将使用 openCV 删除。当我回到家时,我会运行你的代码,看看我能得到什么样的改进。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 2021-06-14
    • 2013-04-03
    • 2013-09-20
    相关资源
    最近更新 更多