我试图用tesseract在python中检测一些数字。下面你会发现我的起始图像和我可以得到它。这里是我用来得到它的代码。
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能够识别这些数字吗?
Starting Image
What I end up with
3条答案
按热度按时间gcuhipw91#
您的问题在于页面分割模式。Tesseract以不同的方式分割每个图像。当您没有选择合适的PSM时,它会进入模式3,这是自动的,可能不适合您的情况。我刚刚尝试了您的图像,它与PSM 6完美配合。
这些都是目前可用的PSM:
svmlkihl2#
使用pytesseract.image_to_string(img,config ='--psm 8')或尝试不同的方法来查看图像是否会被识别。有用的链接在这里Pytesseract OCR multiple config options
rbpvctlc3#
我认为tesseract默认情况下是黑名单的数字,所以我尝试
tessedit_char_whitelist
将我想要的字符列入白名单,但它不起作用,所以我尝试使用此配置tessedit_char_unblacklist='0123456789'
取消黑名单