Python - pytesseract не соответствует для похожих изображений - PullRequest
2 голосов
/ 29 января 2020

Например, это изображение возвращает Sieteary ear

enter image description here

Хотя это изображение возвращает правильный ответ

enter image description here

Единственная разница между двумя изображениями - 2 пикселя в высоту.

Я пытался применить некоторый порог, но, похоже, не помог ...

from PIL import Image
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"
image = Image.open(path)
print(pytesseract.image_to_string(image, lang='eng'))

1 Ответ

1 голос
/ 29 января 2020

Вы можете выполнить некоторую предварительную обработку, используя OpenCV. Идея состоит в том, чтобы увеличить изображение с помощью imutils , получить двоичное изображение с использованием порога Оцу, а затем добавить небольшое размытие по Гауссу. Для оптимального обнаружения изображение должно быть в форме, в которой желаемый текст должен быть черным, а фон - белым. Вот результаты предварительной обработки для двух изображений:

До -> После

enter image description here image

enter image description here image

Результат вывода Pytesseract для обоих изображений одинаков

BigBootyHunter2

Код

import cv2
import pytesseract
import imutils

pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"

image = cv2.imread('1.jpg')
image = imutils.resize(image, width=500)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
thresh = cv2.GaussianBlur(thresh, (3,3), 0)
data = pytesseract.image_to_string(thresh, lang='eng',config='--psm 6')
print(data)

cv2.imshow('thresh', thresh)
cv2.waitKey()
...