Обработка изображений - вращать отсканированный документ для выравнивания текста - PullRequest
2 голосов
/ 20 января 2011

У меня есть проект OCR C #, в котором я получаю отсканированный документ с текстом, и мне нужно вернуть текст в документе.

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

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

Спасибо

Ответы [ 2 ]

3 голосов
/ 26 января 2011

Используйте Преобразование Хафа , чтобы определить самую сильную ориентацию линии, которая должна быть горизонтальной ориентацией текста. Основная предпосылка преобразования Хафа состоит в преобразовании координаты x-y в систему координат r-тета, где r - расстояние от начала координат, а тета - ориентация.

Как только изображение преобразуется, поместите те же самые тэты, чтобы найти самую сильную ориентацию.

Потому что этот метод использует голосование в пределах дискретного т и тэта. Разрешение тэты зависит только от количества используемых бинов. Поэтому вместо использования от -180 до +180 градусов с шагом в один градус вы можете привязать его к более точному углу или скорости.

1 голос
/ 20 января 2011

(я не эксперт но по любопытству напишу этот пост)

ИМХО, эта проблема может быть решена экономически эффективно с помощью метода грубой силы методом проб и ошибок. Потому что неправильной ориентации может быть не слишком много.

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

То есть вы можете найти правильную ориентацию документа без дальнейшей обработки изображения для определения выравнивания текста. И определение выравнивания текста будет довольно большой обработкой, я думаю.

UPDATE

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

1) сделать монтажную коробку в вертикальном положении
2) запустите OCR, проверьте результат, если все в порядке, то все сделано
3) повернуть на 180 градусов
2) запустить OCR. на этот раз оно должно быть под прямым углом

Если нам действительно нужно найти точный угол поворота, я думаю, что он должен начинаться с поиска возможной формы символа 'o', 'c' или 'm' (исключая курсивный шрифт). Или найдите относительное местоположение периода ('.'). Это потребует сложной операции, я думаю.

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