Удаление горизонтальных подчеркиваний

Я пытаюсь получить текст из нескольких сотен JPG, которые содержат информацию о записях смертной казни; JPG находятся в ведении Департамента уголовного правосудия штата Техас (TDCJ). Ниже приведен пример фрагмента, в котором удалена личная информация.

Я определил подчеркивание как препятствие для правильного распознавания текста - если я войду, сделайте снимок экрана с фрагментом кода и вручную вытяните линии, получая в результате OCR через Pytesseract очень хорошо. Но с подчеркиванием это очень плохо.

Как лучше всего удалить эти горизонтальные линии? Что я пробовал:

Начато прохождение документа OpenCV: Извлекайте горизонтальные и вертикальные линии, используя морфологические операции. Застрял довольно быстро, потому что я знаю ноль C ++. Следуют вместе с Удаление горизонтальных линий в изображении - получилась неразборчивая строка. Следуют вместе с Удаление длинных горизонтальных / вертикальных линий с краевого изображения с помощью OpenCV - не смог понять интуицию, определяющую размер здесь массива нулей.

Помечаю этот вопросc ++ в надежде, что кто-нибудь поможет перевести Шаг 5 изdocs прохождение на Python. Я пробовал серию преобразований, таких как преобразование Хью Лайна, но я чувствую себя в темноте в библиотеке и области, с которыми у меня нулевой опыт.

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

Ответы на вопрос(4)

Ваш ответ на вопрос