как определить буквы на изображении?(до распознавания) - PullRequest
1 голос
/ 04 февраля 2011

все, что я могу найти в Интернете, это OCR, но я еще не там, мне все еще нужно распознать, где буквы на изображении.

любая помощь будет оценена

Ответы [ 2 ]

8 голосов
/ 04 февраля 2011

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

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

Всего несколько примеров:

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

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

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

Теперь, когда у вас есть строки, вы можете подумать, что теперь это просто, вы можете разделить их на символы, ура! Опять же, это неправильно. Существуют такие явления, как связанные символы, ломаные символы и даже лигатуры (две буквы, образующие одну единственную форму), или буквы, у которых их части идут дальше вправо выше или ниже следующего символа. Что вам нужно сделать, это создать несколько гипотез расщепления линии на слова и отдельные символы, затем попробовать OCR для каждого варианта, взвесить каждый гипотез с уровнем достоверности. Последним шагом будет проверка различных путей в этом графе с использованием словаря и выбор наилучшего.

И только теперь, когда вы на самом деле все узнали, вы можете сказать, где находятся отдельные персонажи.

Итак, простой ответ: узнайте ваше изображение с помощью программы OCR и получите координаты символов из его вывода.

0 голосов
/ 04 февраля 2011

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

Оптимизация возможна, если заранее знать размер шрифта, качество и/ или цвет текста.Если нет, то вы захотите быть довольно щедрым со своими порогами того, что составляет «смежную область».

...