【发布时间】:2021-02-14 07:40:29
【问题描述】:
我正在使用 pytesseract 从屏幕上实时读取数字。 图像主要是数字、圆点和 2 个字母(M 和 R),如下所示。 实时数字会不断变化,但字母 M 和 R 将保持不变。 背景将始终为绿色并带有黑色字母。
您可以看到图像上的数字非常清晰,但是 pytesseract 读取了数字,结果并不真正令人满意。有时它的读数 7 变为 1。 我想找到有助于提高 OCR 结果的算法。
目前我正在使用 Pillow 将图像转换为灰度,并尝试将图像大小调整为更大或更小,但仍能大大改善结果。还对图像应用了过滤器,如下所示,但结果仍然不是 100% 正确。
img = cv2.imread('screenshot.png')
img = cv2.resize(img, None, fx=scale_factor, fy=scale_factor, interpolation=cv2.INTER_CUBIC)
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img = cv2.threshold(cv2.bilateralFilter(img, 5, 75, 75), 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
text = tess.image_to_string(img)
请帮助提出任何有助于改进此 OCR 结果的算法。
【问题讨论】:
-
如果转换为灰度,绿色会变成深灰色,这会导致OCR在识别灰色和黑色时出现问题。我建议将绿色更改为白色,然后再次尝试 OCR
标签: python ocr python-tesseract