Dividir linhas de texto no documento digitalizado
Estou tentando encontrar uma maneira de quebrar a divisão das linhas de texto em um documento digitalizado com limiar adaptativo. No momento, estou armazenando os valores de pixel do documento como entradas não assinadas de 0 a 255, e calculando a média dos pixels em cada linha e divido as linhas em intervalos com base em se a média dos valores de pixels é maior que 250 e, em seguida, tomo a mediana de cada intervalo de linhas para o qual isso é válido. No entanto, esse método algumas vezes falha, pois pode haver manchas pretas na imagem.
Existe uma maneira mais resistente ao ruído para executar esta tarefa?
EDIT: Aqui está algum código. "warped" é o nome da imagem original, "cuts" é onde eu quero dividir a imagem.
warped = threshold_adaptive(warped, 250, offset = 10)
warped = warped.astype("uint8") * 255
# get areas where we can split image on whitespace to make OCR more accurate
color_level = np.array([np.sum(line) / len(line) for line in warped])
cuts = []
i = 0
while(i < len(color_level)):
if color_level[i] > 250:
begin = i
while(color_level[i] > 250):
i += 1
cuts.append((i + begin)/2) # middle of the whitespace region
else:
i += 1