从图像中识别数字

2024-04-26 18:11:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从游戏截图中提取数字

Text

我试图提取:

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

Tags: textfromimageimportcmd游戏imgnew
2条回答

如果文本被设计所包围,tesseract会遭受很多损失

代替tesseract,尝试在opencv中使用findcontours(稍微模糊、膨胀后)

您将得到边界框,然后它可能也会覆盖该文本

好的,所以我试着把它变成灰度,反向对比或者使用不同的树状结构,但这一切似乎都是相当不准确的。 问题似乎在于倾斜和较小的数字。你没有hiher的图像吗? 我能得到的最准确的代码是以下代码

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.

相关问题 更多 >