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

EDIT 2: Exemplo de imagem adicionada

questionAnswers(2)

yourAnswerToTheQuestion