@motya88

Как повысить точность распознавания цифр pytesseract?

Добрый день!
Пытаюсь распознать номера договоров на сканах с использованием pytesseract.
Столкнулся с неточностью распознавания.
Исходная картинка:
5fa3b48d38614321826052.jpeg
Картинка после обработки:
5fa3b4a73e0a5140867417.jpeg

При выводе выдает: €6E96T09810/SEEGIZET

Мой код:
import os
import pytesseract
from pdf2image import convert_from_path


import cv2

# перейти в папку test_folder
os.chdir('./test_folder')
# получить список файлов в папке RandomFiles

for file in os.listdir('.'):
    print(file)
    PDF_file = "./"+file
    images = convert_from_path(PDF_file)

    for image in images:
        filename = str(file.replace('.pdf','')) + ".jpg"
        image.save(filename, 'JPEG')

    cropped4 = image.crop((249, 3253, 397, 3869))
    result4 = filename.replace('.jpg','') + '_crop_4.jpg'
    cropped4.save(result4)
    k1 = cv2.imread('./' + result4)
    gray = cv2.cvtColor(k1, cv2.COLOR_BGR2GRAY)
    gray = cv2.threshold(gray, 0, 255,
                         cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]

    rr = 'g_' + result4
    cv2.imwrite(rr, gray)

    text4 = pytesseract.image_to_string(rr)
    print(text4)


Какую нужно сделать подготовку изображения, чтобы распознать корректно номер?
  • Вопрос задан
  • 520 просмотров
Пригласить эксперта
Ответы на вопрос 2
@AlexBoss
pytesseract неплохой инструмент, но ты должен понимать, что точность 100% практически недостижима. Ты можешь добавить свои шрифты, переобучить на нужных тебе данных, как описано выше. Но это достаточно проблематично, по крайней мере было для меня. Лучше смотри в сторону написания своей нейронки на каком-нибудь TF keras.
Если все-таки решил pytesseract пользоваться, то подбирай фильтры и размер изображения.
Ответ написан
Комментировать
SoreMix
@SoreMix Куратор тега Python
yellow
Как минимум, стоило бы повернуть картинку, чтоб она была в горизонтальном формате.
После поворота сразу выдало 1329335/07860196393

img = Image.open(filename)
rotated = img.transpose(Image.ROTATE_270)
print(pytesseract.image_to_string(rotated))
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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