【问题标题】:Cannot read text from screenshot due to background color using PyTesseract由于使用 PyTesseract 的背景颜色,无法从屏幕截图中读取文本
【发布时间】:2020-01-08 06:12:27
【问题描述】:

我正在尝试使用 pytesseract 从计算机/移动屏幕截图中提取和检测文本。 它工作正常,但在某些情况下,未检测到按钮文本可能是由于绿色背景。

原图

文本检测后的图像

这是我正在使用的代码:

d = pytesseract.image_to_data(img, output_type=Output.DICT)# img is an numpy nd array, i.e image read using OpenCV
n_boxes = len(d['level'])
for i in range(n_boxes):
    # eliminating blank characters
    if d['text'][i].strip() == '': continue
    else: print(d['text'][i])
    (x,y,w,h) = (d['left'][i], d['top'][i], d['width'][i], d['height'][i])
    cv2.rectangle(img, (x,y), (x+w, y+h), (0, 255, 0), 2)

plot_image(img)

【问题讨论】:

    标签: python opencv computer-vision python-tesseract


    【解决方案1】:

    尝试将图像二值化,使其变为黑白。二值化/图像阈值是此类用例常用的图像处理方法。

    这些链接可能会有所帮助。

    1.ImageThresholding-Opencv

    2.Adaptive Thresholding

    3.Text Binarization

    【讨论】:

    • 这在文本检测方面有效。这是输出图像链接。 ibb.co/qJCX5Gb 但是检测到的文本不正确:它返回 COXEIND 而不是 create account
    • 这仅取决于 pytesseract。尝试调整参数或寻找其他 OCR 模型。如果您的用例是独一无二的,请训练您自己的模型以适应您的条件。
    • 好的明白了!!还有一件事。这是自适应高斯阈值的输出。 ibb.co/gmcmr9T如何使文本更清晰?
    • 尝试减小块大小。为您的用例调整参数。此链接 (tutorialspoint.com/opencv/opencv_adaptive_threshold.htm) 可能会有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 2017-05-13
    相关资源
    最近更新 更多