Как можно распознать цифры с помощью tesseract?

Доброе утро. Попытался написать программу, которая распознавала бы текст в определенной области(код представлен ниже). Но программа не распознает цифры на картинке. Пример цифр я привел ниже. Была мысль, что это такой шрифт текста, но скорее всего эти цифры составлены из линий(ну как просто рисуют цифры, так и тут). Суть проблемы в том, что tesseract эти символы, они же цифры, не распознает. Надеюсь на вашу помощь, спасибо)
Код:
import pyautogui
import time
import numpy as np
import pyscreenshot as ImageGrab
import cv2
import os
import pytesseract

time.sleep(5)
filename = 'Image.png'
x = 1
last_time = time.time()

while(True):
	
	screen = np.array(ImageGrab.grab(bbox=(671, 296, 1129, 423)))
	print('loop took {} seconds'.format(time.time()-last_time))
	last_time = time.time()
	cv2.imshow('window', cv2.cvtColor(screen, cv2.COLOR_BGR2RGB))
	cv2.imwrite(filename, screen)
	x = x + 1
	print(x)
	if x == 2:
		cv2.destroyAllWindows()
		break

img = cv2.imread('Image.png')
pytesseract.pytesseract.tesseract_cmd = r'C:/Users/Admin/AppData/Local/Tesseract-OCR/tesseract.exe'
text = pytesseract.image_to_string(img)
print(text)


Пример картинки с цифрами(капчи):
5ef470079971e706368737.png
  • Вопрос задан
  • 1260 просмотров
Решения вопроса 1
LazyTalent
@LazyTalent
Data Engineer, Freelancer
Данную задачу, как уже написал Владимир Куц, можно решить при помощи алгоритмов, но если хочется именно с tesseract, то:
1. Необходимо очистить изображение: убрать внешнюю рамку, сделать изображение greyscale итд итп.
2. Подобрать обёртку для tesseracta, которая будет лучше всего работать с твоими данными.

Вот здесь немного подробнее - писал давно, но за это время ничего принципиального не изменилось.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
У вас такие цифры - что можно и без тессеракта обойтись
Если вы можете, то дайте, пожалуйста, ссылку на статью или любой ресурс с этой информацией или расскажите сами, если есть время и желание

Простая логика. Нарезаете изображение на одинаковые прямоугольники и тыкаете по нескольким ключевым координатам, специфичным для цифр
5ef48501d4782332889281.png
В точке "1" черный цвет будет у 1, 3 и 0, в "2" - у 3, 4, и 1 и т.п.
и составляете условие - если в "1" - черный, в "2" - черный, в "3" - белый... - то найденная цифра - "3"
если в в "1" - черный, в "2" - белый, в "3" - белый... - то найденная цифра - "0"
если в в "1" - черный, в "2" - черный, в "3" - черный... - то найденная цифра - "1"
и т.п.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы