Как определить, нужно ли повернуть изображение

Я пытаюсь найти способ определить, нужно ли повернуть изображение, чтобы текст был выровнен по горизонтали. А если его нужно повернуть, то на сколько градусов?

Я отправляю изображения в tesseract, и для того, чтобы tesseract был эффективным, текст в изображениях должен быть выровнен по горизонтали.

Я ищу способ сделать это без зависимости от метаданных «Ориентация» в изображении.

Я придумал следующие способы сделать это:

  1. Поверните изображение на 90 градусов по часовой стрелке четыре раза и отправьте все четыре изображения в тессеракт. Это не идеально из-за необходимости обрабатывать одно изображение 4 раза.
  2. Используйте преобразование горизонтальной линии, чтобы увидеть, являются ли линии вертикальными или горизонтальными. Если они вертикальные, поверните изображение. Таким образом, изображение все равно придется повернуть на 180 градусов. Так что я не уверен, насколько это будет эффективно.

Мне интересно, есть ли другие способы сделать это с помощью OpenCV, imageMagik или любых других методов обработки изображений.


person Adam    schedule 18.04.2016    source источник
comment
Взгляните на коррекцию перекоса Python OpenCV для OCR с помощью профиля проекции Метод определения угла перекоса   -  person nathancy    schedule 31.12.2019


Ответы (3)


Aytempting ocr во всех 4 ориентациях кажется разумным выбором, и я сомневаюсь, что вы найдете более надежную эвристику.

Если скорость является проблемой, вы можете сначала распознать небольшую часть изображения. Выберите прямоугольную область с нужным количеством краевых пикселей и соотношением белого / черного для текста, затем отправьте его в тессеракт в разных ориентациях. С небольшой областью вы можете даже попробовать меньшие шаги, чем 90 °, или объединить это с другой эвристикой, такой как Hough.

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

person HugoRune    schedule 18.04.2016

Если у вас есть 1000 изображений, которые говорят горизонтальные или вертикальные, вы можете изменить размер этих изображений до 224x224, а затем точно настроить сверточную нейронную сеть, такую ​​как AlexNet или VGG, для этой задачи. Если вы хотите знать, сколько правых вращений нужно сделать для изображения, вы можете установить метки как количество поворотов по часовой стрелке, например 0,1,2,3.

http://caffe.berkeleyvision.org/gasted/examples/finetune_flickr_style.html

person Bharat    schedule 18.04.2016

Вы можете выяснить это в терминале с опцией tesseract psm.

tesseract --psm 0 "infile" "outfile" создаст outfile.osd, содержащий информацию:

Page number: 0
Orientation in degrees: 90
Rotate: 270
Orientation confidence: 27.93
Script: Latin
Script confidence: 6.55

man tesseract

...       
--psm N
           Set Tesseract to only run a subset of layout analysis and assume a certain form of image. The options for N are:

               0 = Orientation and script detection (OSD) only.
               1 = Automatic page segmentation with OSD.
               2 = Automatic page segmentation, but no OSD, or OCR. (not implemented)
...
person Eric Ihli    schedule 30.12.2019