Тессеракт ИЛИ C не читает четкий текст, вырезанный из изображения - PullRequest
0 голосов
/ 21 апреля 2020

У меня проблемы с чтением номера из документа с использованием Tesseract OCR.

Я вырезал текст из документа. И используя Tesseract OCR, чтобы прочитать его. Но ничего не печатать в командной строке.

Я протестировал его с простым документом на белом фоне и черным номером. Это работает отлично.

Это мой код для определения номера:

orc->SetImage(source.data, source.size().width, source.size().height, source.channels(), 
source.step1());
QString outText = QString::fromUtf8(orc->GetUTF8Text());
if (outText != "")
    qDebug() << outText;

А это моя картинка:

enter image description here

Может кто-нибудь сказать мне, где я не прав?

1 Ответ

2 голосов
/ 21 апреля 2020

Я не знаю, как это сделать в C ++. Но я могу получить числа, используя этот код в python. Я думаю, что ключ обрабатывает в цветном режиме HSV.

import cv2
import numpy as np
import pytesseract

img = cv2.imread("djwtV.png", cv2.IMREAD_COLOR)
img = cv2.resize(img, None, fx=3, fy=3)
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

upper = np.array([255, 255, 150])
lower = np.array([0, 0, 0])
mask = cv2.inRange(hsv, lower, upper)
mask = cv2.bitwise_not(mask)

custom_config = r'-l eng --oem 3 --psm 6 -c tessedit_char_whitelist="0123456789,"'
text = pytesseract.image_to_string(mask, config=custom_config)
print("Detected: ", text)

cv2.imshow("img", img)
cv2.imshow("mask", mask)

cv2.waitKey(0)
cv2.destroyAllWindows()

Результат

Detected:  4,691,613

И если вы измените код на этот

upper = np.array([255, 255, 125])

custom_config = r'-l jpn --oem 3 --psm 6 '

Вы будете получить это

Detected:  | 預り金 計①(a+b+c) |  4.691.613
...