Координаты текста в рамке на изображении

Dec 18 2020

Я хочу получить координаты текста в рамке на изображении. Абзацы имеют тонкую черную рамку. Остальная часть изображения состоит из обычных абзацев и набросков.

Вот пример:

Вы хоть представляете, какие алгоритмы мне следует использовать в Python с библиотекой изображений для достижения этой цели? Спасибо.

Ответы

2 alecxe Dec 18 2020 at 18:02

Несколько идей по обнаружению текста в рамке, который в значительной степени сводится к поиску полей / прямоугольников значительного размера:

  • находите контуры с помощью OpenCV, анализируйте формы с помощью алгоритма аппроксимации многоугольника (также известного как алгоритм Рамера – Дугласа – Пойкера ). Вы можете дополнительно проверить соотношение сторон ограничивающей рамки, чтобы убедиться, что форма представляет собой прямоугольник, а также проверить ширину страницы, поскольку в вашем случае это известная метрика. PyImageSearch сделал эту замечательную статью:cv2.approxPolyDP()

    • Обнаружение формы OpenCV
  • в связанном вопросе также есть предложение заглянуть в Hough Lines, чтобы обнаружить горизонтальную линию, делая поворот таким же образом, обнаруживая вертикальные линии. Не уверен на 100%, насколько надежным будет такой подход.


Как только вы найдете рамки ящиков, следующим шагом будет проверка, есть ли внутри них какой-либо текст. Обнаружение текста в целом является более широкой проблемой, и есть много способов сделать это, вот несколько примеров:

  • применить детектор текста EAST

  • PixelLink

  • tesseract (например, через pytesseract), но не уверен, не будет ли у этого слишком много ложных срабатываний

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

    • Как определить пустой прямоугольник с помощью OpenCV
    • Подсчитайте черные пиксели с помощью OpenCV

Дополнительные ссылки:

  • идеи по обнаружению четырехугольника / прямоугольника с использованием сверточных нейронных сетей