Я пытаюсь найти способ разбить строки текста в сканированном документе, который был адаптивным пороговым. Прямо сейчас я сохраняю значения пикселей документа как unsigned ints от 0 до 255, и я беру среднее количество пикселей в каждой строке, и я разделял линии на диапазоны в зависимости от того, является ли среднее значение пикселей равным больше 250, а затем я принимаю медиану каждого диапазона линий, для которых это выполняется. Однако эти методы иногда терпят неудачу, так как на изображении могут быть черные пятна.
Есть ли более устойчивый к шумам способ выполнения этой задачи?
EDIT: Вот какой код. "warped" - это имя исходного изображения, "разрезы" - это то, где я хочу разбить изображение.
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