Сегментация изображения с OpenCV - все изображение считается сегментом - PullRequest
0 голосов
/ 24 марта 2020

Я пишу код, который извлекает текст из изображения (документ, в данном конкретном случае). Прежде чем сделать это, я выполняю обычные задачи обработки изображений - бинаризацию и сегментацию, чтобы определить, где именно на изображении я могу найти биты текста.

Все это работает относительно идеально, за исключением одной детали: среди сегментов, которые я получаю от 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, если они совпадают. Но это не похоже на идеальное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...