Обработка изображений / сверхлегкое распознавание текста

StackOverflow https://stackoverflow.com/questions/1238085

  •  11-09-2019
  •  | 
  •  

Вопрос

У меня есть 55 000 файлов изображений (как в формате JPG, так и в формате TIFF), которые представляют собой картинки из книги.

Структура каждой страницы такова:

какой-нибудь текст

--- (горизонтальная линия) ---

число

какой-нибудь текст

--- (горизонтальная линия) ---

другой номер

какой-нибудь текст

На любой данной странице может быть от нуля до 4 горизонтальных линий.

Мне нужно найти, что это за число, чуть ниже горизонтальной линии.

НО цифры строго следуют друг за другом, начиная с единицы на первой странице, поэтому для того, чтобы найти номер, мне не нужно его читать:Я мог бы просто обнаружить наличие горизонтальных линий, что должно быть проще и безопаснее, чем пытаться распознать страницу, чтобы определить цифры.

Алгоритм был бы, в основном:

for each image
  count horizontal lines
  print image name, number of horizontal lines
  next image

Вопрос в том,:какая библиотека изображений / язык были бы лучшими для выполнения части "подсчет горизонтальных линий"?

Это было полезно?

Решение

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

Преобразование OpenCV Hough определит все линии на изображении и вернет их углы и координаты начала / остановки.Вы должны хранить только те, углы которых близки к горизонтальным и имеют достаточную длину.

О'Рейли Изучает OpenCV подробно объясняет ввод и вывод функции (стр.156).

Другие советы

Если у вас хороший контраст, попробуйте запустить подключенные компоненты и проанализировать результат.Это может быть альтернативой поиску линий с помощью Hough и охватывать случай, когда ваши структурированные элементы немного изогнуты или линейный алгоритм выделяет линии, которые вы не хотите, чтобы он выделял.

Подключенные компоненты - это сверхбыстрый алгоритм сканирования с двумя растрами, который предоставит вам маску, в которой все подключенные вами элементы будут помечены разными метками и учтены.Вы можете отказаться от всего короткого (с точки зрения соотношения сторон).В целом, это может быть более общим, более быстрым, но, вероятно, немного более сложным, чем выполнение преобразования Хафа.С другой стороны, преобразование Хафа будет более терпимым к артефактам контраста и даже случайным разрывам в линиях.В OpenCV есть функция findContours(), которая находит компоненты для вас.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top