【发布时间】:2021-07-28 14:18:59
【问题描述】:
我正在尝试在 python 中使用 tesseract 检测一些数字。您将在下面找到我的起始图像以及我可以理解的内容。这是我用来获取它的代码。
import pytesseract
import cv2
import numpy as np
pytesseract.pytesseract.tesseract_cmd = "C:\\Users\\choll\\AppData\\Local\\Programs\\Tesseract-OCR\\tesseract.exe"
image = cv2.imread(r'64normalwart.png')
lower = np.array([254, 254, 254])
upper = np.array([255, 255, 255])
image = cv2.inRange(image, lower, upper)
image = cv2.bitwise_not(image)
#Uses a language that should work with minecraft text, I have tried with and without, no luck
text = pytesseract.image_to_string(image, lang='mc')
print(text)
cv2.imwrite("Wartthreshnew.jpg", image)
cv2.imshow("Image", image)
cv2.waitKey(0)
我最终得到了白色背景上的黑色数字,这看起来不错,但 tesseract 仍然无法检测到这些数字。我还注意到这些数字非常参差不齐,但我不知道如何解决这个问题。有没有人建议我如何让 tesseract 能够识别这些数字?
【问题讨论】:
-
您可以尝试
cv2.blur()来平滑数字的粗糙边缘。它会使图像整体更加模糊,但 tesseract 可能更容易识别数字。 -
感谢建议,图片可能太小了还是看不到。
-
尝试像这样添加配置 psm 6 或 7:pytesseract.image_to_string(img, config='--psm 6')
-
好主意。我找到的解决方案是使用 --psm 8 并将其视为一个单词,并将其限制为数字。 stackoverflow.com/questions/44619077/… 对于以后看到这个的人来说是一个有用的资源。
标签: python opencv image-processing tesseract python-tesseract