Извлечение части отсканированного документа (персональный идентификатор) - какую библиотеку и метод выбрать? - PullRequest
2 голосов
/ 10 ноября 2011

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

enter image description here

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

  • Я проверил OpenCV, и единственное, что я обнаружил, было обнаружение прямоугольника, но оно не дало мне хороших результатов: прямоугольник не всегда достаточно хорошо совпадает на выборках. Кроме того, его алгоритм сопоставления изображений работает только для неповоротного изображения, поскольку это просто сравнение грубой силы.

  • Так что я подумал об использовании ARToolkit (lib дополненной реальности), потому что я знаю, что он может очень точно определить местонахождение данного маркера на изображении. Но похоже, что маркеры должны быть очень простыми, поэтому я не могу использовать постоянную часть документа для этой цели (пожалуйста, исправьте меня, если я ошибаюсь). Кроме того, мне было очень сложно скомпилировать его в Ubuntu 11.10.

  • OCR - еще не пробовал, и прежде чем я начну свое исследование, буду благодарен за любые предложения, что искать.

Я ищу решение C (предпочтительно) / C ++. Python тоже вариант.

1 Ответ

1 голос
/ 12 ноября 2011

Если вы не нашли другого идеального решения, один из методов, которые я в конечном итоге использовал для предварительной обработки OCR, заключался в преобразовании исходных изображений в PPM и использовании unpaper в Ubuntu.Вы можете попытаться выровнять изображение в зависимости от того, какие стороны указаны как четко определенные края, и есть возможность обойти фильтры, которые обычно применяются к черно-белому тексту.Вы, вероятно, не хотите использовать их для изображений.

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

unpaper -n -dn bottom,right -dr 15 input.ppm output.ppm

unpaperв C, если источник вам какой-либо помощи.

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