Я пишу код, который извлекает текст из изображения (документ, в данном конкретном случае). Прежде чем сделать это, я выполняю обычные задачи обработки изображений - бинаризацию и сегментацию, чтобы определить, где именно на изображении я могу найти биты текста.
Все это работает относительно идеально, за исключением одной детали: среди сегментов, которые я получаю от OpenCV, есть один сегмент, который представляет собой само изображение. Поэтому я извлекаю текст из изображения дважды: один раз из каждого бита текста (то есть правильно идентифицированных сегментов) и один раз из всего изображения (то есть неправильно идентифицированного сегмента).
К сожалению Я не могу опубликовать изображение по вопросам конфиденциальности, так как это свидетельство о рождении, но у меня такой вопрос: как я могу помешать самому изображению считаться одним из сегментов?
Вот как я получение сегментов после бинаризации и расширения:
contours, hierarchy = cv2.findContours(image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
А вот мое довольно простое извлечение текста l oop:
text = ''
for contour in contours:
x, y, w, h = cv2.boundingRect(contour)
image_segment = image[y:y + h, x:x + w]
text += pytesseract.image_to_string(image_segment, lang='eng') + '\n'
Я нашел решение, которое включает сравнение границы контура с границами изображения и игнорирование этого сегмента в l oop, если они совпадают. Но это не похоже на идеальное решение.