我正在尝试从游戏屏幕截图中提取数字。
我正在尝试提取:
98
3430
5/10
from PIL import Image
import pytesseract
image="D:/img/New folder (2)/1.png"
pytesseract.pytesseract.tesseract_cmd = 'C:/Program Files/Tesseract-OCR/tesseract.exe'
text = pytesseract.image_to_string(Image.open(image),lang='eng',config='--psm 5')
print(text)
输出乱码
‘t hl) keteeeees
ek pSlaerenen
JU) pgrenmnreserenny
Rates B
d dali eas. 5
cle aM (Sores
|, S| pgranmrerererecons
a cee 3
pea 3
oS :
(geo eenee
ey
=
es A
答案 0 :(得分:0)
好的,所以我尝试将其更改为灰度,反向对比度或使用其他阈值,但是这一切似乎都不准确。 问题似乎是数量越来越少。您没有碰巧有任何高分辨率的图像吗? 我能得到的最准确的是以下代码。
import cv2
import pytesseract
import imutils
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"
img = cv2.imread('D:/img/New folder (2)/1.png') #test.png is your original image
img = imutils.resize(img, width=1400)
crop = img[340:530, 100:400]
data = pytesseract.image_to_string(crop,config=' --psm 1 --oem 3 -c tessedit_char_whitelist=0123456789/')
print(data)
cv2.imshow('crop', crop)
cv2.waitKey()
否则,我建议使用以下一种方法作为described in the similar question 或在this one.
中答案 1 :(得分:0)
如果文字被设计包围,则tesseract会遭受很多痛苦
迷茫的tesseract尝试在opencv中使用findcontours(稍加模糊,膨胀之后)
您将获得边界框,然后它也可能覆盖该文本