Pytesseract OCR не определяет числа? - PullRequest
0 голосов
/ 19 июня 2020

Я создаю программу, которая захватывает игру 2048 из https://play2048.co/ и печатает числа с помощью pytesseract. В моем коде cv2 используется для создания черно-белой маски чисел, например:

2048 Mask

Когда я запускаю программу, окно отображает числа правильно, но tesseracct не распознает числа. По какой-то причине он распознает числа на этом изображении , но только некоторые, включая буквы. Вот мой полный код:

import numpy as np
import cv2
from PIL import ImageGrab, Image
import time
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

def process_img(original_image):

    hsv = cv2.cvtColor(original_image, cv2.COLOR_BGR2HSV)
    lower_grey = np.array([100, 30, 110])
    upper_grey = np.array([110, 50, 120])
    lower_white = np.array([0, 0, 235])
    upper_white = np.array([110, 10, 255])
    mask1 = cv2.inRange(hsv, lower_grey, upper_grey)
    mask2 = cv2.inRange(hsv, lower_white, upper_white)
    mask = cv2.bitwise_or(mask1, mask2)
    return mask

def main():
    last_time = time.time()
    numList = []
    while True:
        screen = np.array(ImageGrab.grab(bbox=(1194,386, 1694, 886)))
        new_screen = process_img(screen)
        new_screen = cv2.bitwise_not(new_screen)
        frame = cv2.cvtColor(new_screen, cv2.COLOR_RGB2BGR)
        print('Loop took {} seconds'.format(time.time()-last_time))
        last_time = time.time()
        cv2.imshow('window', new_screen)
        if cv2.waitKey(25) & 0xFF == ord('q'):
            cv2.destroyAllWindows()
            break
        cv2.imwrite("./frame.png", frame)
        print(pytesseract.image_to_string('frame.png'))
main()
...