Como remover sublinhados horizontais
Estou tentando extrair texto de algumas centenas de JPGs que contêm informações sobre registros de pena de morte; os JPGs são hospedados pelo Departamento de Justiça Criminal do Texas (TDCJ). Abaixo está um exemplo de trecho com as informações de identificação pessoal removidas.
Eu identifiquei os sublinhados como sendo o impedimento para o OCR adequado - se eu entrar, capture um sub-snippet e linhas manualmente brancas, o OCR resultante através de pytesseract é muito bom. Mas com sublinhados presentes, é extremamente ruim.
Como posso remover melhor essas linhas horizontais? O que eu tentei:
Iniciado no passo a passo do doc do OpenCV:Extraia linhas horizontais e verticais usando operações morfológicas. Fiquei preso muito rápido, porque sei zero C ++.Seguido junto comRemoção de linhas horizontais na imagem - terminou com uma string ilegíveSeguido junto comRemover linhas horizontais / verticais longas da imagem da borda usando o OpenCV - não foi possível obter a intuição por trás do dimensionamento da matriz de zeros aquMarcando esta pergunta comc ++ na esperança de que alguém possa ajudar a traduzir a Etapa 5 doasso a passo @docs para Python. Eu tentei várias transformações, como a Hugh Line Transform, mas estou me sentindo no escuro em uma biblioteca e em uma área com a qual não tenho experiência anterior.
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