Распознать числа по изображению python - PullRequest
1 голос
/ 08 марта 2020

Я пытаюсь извлечь числа из скриншотов игры.

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)

выход - гиббери sh

‘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

Ответы [ 2 ]

0 голосов
/ 08 марта 2020

если текст окружен рисунками, тессеракт сильно страдает

вместо тессеракта попробуйте использовать findcontours в opencv (после небольшого размытия, расширения)

вы получите ограничивающие прямоугольники, затем этот текст может также охватывать

0 голосов
/ 08 марта 2020

хорошо, поэтому я попытался изменить его на оттенки серого, изменить контраст или использовать другое пороговое значение, но все это выглядит довольно неточно. Проблема, кажется, в наклонных и меньших числах. У вас случайно не было своего высокого разрешения? Самым точным, что я мог получить, был следующий код.

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()

В противном случае я рекомендую один из этих методов, как , описанный в аналогичном вопросе или в этот.

...