【问题标题】:Why does pytesseract not recognize correctly?为什么 pytesseract 不能正确识别?
【发布时间】:2019-11-11 12:39:01
【问题描述】:

好的,所以我一直在尝试将我的图像更改为任何可行的设置,但我似乎找不到正确的设置..

这是图片:

您可以看到图片已经很简单了,但它仍然无法从图像中识别“1 BB”。有什么提示吗?

img = Image.fromarray(img)
imp_arr = np.asarray(img)
imp_arr = (np.floor(imp_arr / 140.0) * 255.0).astype('uint8')
img = Image.fromarray(imp_arr, mode='L')
width, height = img.size 
img = img.resize((width*3, height*3), Image.BICUBIC)
width, height = img.size 
img = img.resize((width*2, height*2), Image.HAMMING)
width, height = img.size 
img = img.resize((int(width*0.3), int(height*0.3)), Image.BICUBIC)
img = ImageEnhance.Brightness(img).enhance(0.7)
img = ImageEnhance.Sharpness(img).enhance(2)
img = ImageEnhance.Contrast(img).enhance(2)
amount = pytesseract.image_to_string(img, config='--psm 10 --oem 3 -c tessedit_char_whitelist=0123456789')

这只是一个示例,我尝试正确调整它以将正确的文本转换为字符串。有时它可以工作,有时它会打印出乱码。问题是……它每次都需要工作,特别是对于像这张这样清晰的图片。有没有一个策划者对这个问题有一个简单的解决方案?提前谢谢你。

【问题讨论】:

    标签: python python-tesseract


    【解决方案1】:

    安装 Tesseract OCR、Pillow 和 pytesseract 后,我​​将您的图像保存为 igor.png 并运行以下代码,我在 docs of pytesseract 中找到了该代码:

    #!/usr/bin/env python
    
    from PIL import Image
    import pytesseract
    
    print(pytesseract.image_to_string(Image.open("igor.png")))
    

    它打印出预期的结果:

    1BB
    

    如果我通过将字母 B 添加到 tessedit_char_whitelist 来更正您的初始代码,它也可以正常工作。

    【讨论】:

    • 字面上使用与您相同的代码.. 我得到的结果是:“5)” 这没有任何意义 :S 要回到白名单,它没有多大作用随着胡言乱语即将结束..即使有白名单,我也会得到同样奇怪的结果..
    • @IgorMarkovic 可能是由于 Tesseract 版本不同。较新的检测更准确
    • 我用我的包管理器安装了 tesseract,它给了我3.04.01
    • 感谢你们俩,我找到了一种工作方式。我有 v5 alpha,所以我尝试了 v4,但也没有用。虽然,v3.05.01 就像一个魅力!因此,早期版本适用于我的情况,较新的版本无法正常工作。我找不到v3.04.01,你是怎么安装的? v3.05.01 的一个小问题是 tesseract 需要以某种方式与您的 python 文件位于同一驱动器上:github.com/madmaze/pytesseract/issues/50
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    相关资源
    最近更新 更多