【问题标题】:How to improve python/tesseract Image to Text accuracy?如何提高 python/tesseract 图像到文本的准确性?
【发布时间】:2021-03-16 16:38:37
【问题描述】:

如何从某个区域抓取图像并正确使用 tesseract 转换为文本?我目前得到了这个:

img = ImageGrab.grab(bbox =(1341,182, 1778, 213))
tesstr = pytesseract.image_to_string(np.array(img), lang ='eng')
print (tesstr)

问题是它翻译的非常错误,因为它从中获取文本的区域是红色和蓝色背景,我该如何提高它的准确性?它试图从图像转换为文本的示例:

【问题讨论】:

    标签: python ocr tesseract python-tesseract


    【解决方案1】:
    • *问题是它的翻译非常错误,因为它从中获取文本的区域是蓝色背景的红色,我该如何提高它的准确性? *

    您应该知道Improving the quality of the output。您需要尝试列出的每种建议方法。如果还是达不到想要的效果,应该看看其他方法:

    要得到想要的结果,你需要得到图像的二进制掩码。简单阈值和自适应阈值都不适用于输入图像。

    获取二进制掩码

      1. 上采样并将输入图像转换为 HSV 颜色空间
      1. 设置较低和较高的颜色边界。

    结果:

    0.37 版本的 OCR 输出将是:

    Day 20204, 16:03:12: Your ‘Metal Triangle Foundation’
    was destroved!
    

    代码:


    import cv2
    import numpy as np
    import pytesseract
    
    # Load the image
    img = cv2.imread("b.png")
    
    # Up-sample
    img = cv2.resize(img, (0, 0), fx=2, fy=2)
    
    # Convert to HSV color-space
    hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    
    # Get the binary mask
    msk = cv2.inRange(hsv, np.array([0, 0, 123]), np.array([179, 255, 255]))
    
    # OCR
    txt = pytesseract.image_to_string(msk)
    print(txt)
    
    # Display
    cv2.imshow("msk", msk)
    cv2.waitKey(0)
    

    【讨论】:

    • 谢谢!这正是我一直在寻找的,我知道面具可以修复它,但我无法理解使用它来获得这种效果的正确方法。我还找到了一种解决方法: red = [0,0,255] img[img != red] = 255 将整个图像变为白色,只保留红色,这也有助于 OCR。不过,您的解决方案更加通用
    • 很高兴能帮上忙
    • 如果可能的话,你能否看看我的另一个问题,因为你对 python 有明显的经验,你可能知道一些替代方案:stackoverflow.com/questions/66655546/…
    【解决方案2】:

    Tesseract API 中有一个选项,您可以提高 DPI 来检查图像以检测文本。 DPI 越高,精度越高,直到收益递减。需要更多的处理能力。 DPI 不应超过原始图像 DPI。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-30
      • 2020-12-08
      • 2012-03-17
      • 2017-04-03
      • 1970-01-01
      • 2016-06-29
      • 1970-01-01
      相关资源
      最近更新 更多