#image-processing #ocr #tesseract #python-tesseract
#обработка изображений #распознавание текста #tesseract #python-tesseract
Вопрос:
У меня есть довольно небольшой набор изображений, который содержит даты. Размер может быть проблемой, но я бы сказал, что качество в порядке. Я следовал рекомендациям, чтобы предоставить движку максимально четкое изображение, какое только могу. После изменения размера примените фильтры, много проб и ошибок и т. Д. Я придумал изображение, которое почти правильно читается. Я привел пример ниже:
Теперь это читается как “9 MAR 2021nx0c
. Неплохо, но первое 2
читается как "
. На данный момент я думаю, что злоупотребляю частью возможностей Tesseract. В конце концов, я знаю, чего следует ожидать, то есть что-то вроде "%d %b %Y"
.
Есть ли способ сообщить Tesseract, что он должен попытаться найти наилучшее соответствие, учитывая это сильное ограничение? Предоставление этих метаданных движку должно значительно облегчить задачу. Я читал документацию, но не могу найти способ сделать это.
Я использую pytesseract
Tesseract 4.1. с Pytyon 3.9.
Комментарии:
1. в рекомендациях, которые вы связали, указано «для версии 4.x используйте темный текст на светлом фоне», вы инвертируете изображение, которое опубликовали перед обработкой?
Ответ №1:
Вам необходимо знать следующее:
Теперь, если мы центрируем изображение (добавляя границы):
Во-вторых, нам нужно выделить символы на изображении жирным шрифтом, чтобы сделать результат распознавания точным.
Теперь OCR:
29 MAR 2021
Код:
import cv2
import pytesseract
# Load the image
img = cv2.imread("xsGBK.jpg")
# Center the image
img = cv2.copyMakeBorder(img, 50, 50, 50, 50, cv2.BORDER_CONSTANT, value=[0, 0, 0])
# Convert to the gray-scale
gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Dilate
gry = cv2.dilate(gry, None, iterations=1)
# OCR
print(pytesseract.image_to_string(gry))
# Display
cv2.imshow("", gry)
cv2.waitKey(0)