Я пытаюсь вытащить текст из нескольких сотен JPG, содержащих информацию о записи о смертной казни; JPG организуются Департаментом уголовного правосудия штата Техас (TDCJ). Ниже приведен фрагмент примера с удаленной лично идентифицируемой информацией.
Я определил подчеркивания как препятствие для правильного OCR --if. Я вхожу, скриншот суб-фрагмента и ручных белых линий, получающееся OCR через pytesseract очень хорошее. Но с подчеркиваниями, он крайне беден.
Как я могу лучше всего удалить эти горизонтальные линии? То, что я пробовал:
- Начало работы с прохождением OpenCV doc: извлечение горизонтальных и вертикальных линий с помощью морфологических операций. Застрял довольно быстро, потому что я знаю ноль C++.
- Последовало вместе с удалением горизонтальных линий на изображении - закончилась неразборчивая строка.
- Последовало вместе с удалением длинных горизонтальных/вертикальных линий из краевого изображения с использованием OpenCV - не удалось получить интуицию после определения размера нулей здесь.
Пометка этого вопроса с помощью c++ в надежде, что кто-то сможет помочь перевести Шаг 5 в пошаговое руководство к Python. Я пробовал пакет преобразований, таких как Hugh Line Transform, но я чувствую себя в темноте в библиотеке и области, где у меня есть нулевой опыт.
import cv2
# Inverted grayscale
img = cv2.imread('rsnippet.jpg', cv2.IMREAD_GRAYSCALE)
img = cv2.bitwise_not(img)
# Transform inverted grayscale to binary
th = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C,
cv2.THRESH_BINARY, 15, -2)
# An alternative; Not sure if 'th' or 'th2' is optimal here
th2 = cv2.threshold(img, 170, 255, cv2.THRESH_BINARY)[1]
# Create corresponding structure element for horizontal lines.
# Start by cloning th/th2.
horiz = th.copy()
r, c = horiz.shape
# Lost after here - not understanding intuition behind sizing/partitioning