Подтвердить что ты не робот

Распознавание символов (алгоритм распознавания)

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

Шаги для выполнения первой задачи.

  • Загрузка любого формата изображения (bmp, jpg, png) из заданного источника. Затем преобразуйте изображение в оттенки серого и добавьте его в бинарную форму с использованием порогового значения (алгоритм Otsu).//завершено (как удалить шум из выходного изображения???)

Результаты

Input Image

Output Image

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

  2. Обнаружение и удаление линий. Этот шаг необходим для улучшения анализа макета страницы, для достижения лучшего качества распознавания для подчеркнутого текста, для обнаружения таблиц и т.д. (Решено завершить эту часть в конце)

  3. Анализ макета страницы. На этом этапе я пытаюсь определить текстовые зоны, присутствующие на изображении. Так что только эта часть используется для распознавания и остальной части региона, не учитывается.

  4. Обнаружение текстовых строк и слов. Здесь нам также нужно позаботиться о разных размерах шрифта и небольших пробелах между словами.

  5. Распознавание символов. Это основной алгоритм OCR; образ каждого символа должен быть преобразован в соответствующий код символа. Иногда этот алгоритм создает несколько кодов символов для неопределенных изображений. Например, распознавание изображения персонажа "I" может производить "I", "|" Коды "1", "l" и окончательный код символа будут выбраны позже.

  6. Сохранение результатов в выбранный формат вывода, например, PDF с возможностью поиска, DOC, RTF, TXT. Важно сохранить исходный макет страницы: столбцы, шрифты, цвета, рисунки, фон и т.д.

Так что мне нужна помощь в part6.I завершили часть обнаружения линии (получите n изображений из абзаца, содержащего n строк), но застряли в следующей части, получая слова и распознавание символов. Если вы знаете хорошие ссылки, связанные с OCR и частью распознавания символов то пожалуйста, напишите здесь.

Для распознавания символов я собираюсь использовать asprise (библиотека Java) http://asprise.com/product/ocr/index.php?lang=java

4b9b3361

Ответ 1

Чтобы определить угол поворота, используйте Преобразование Hough.

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

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

Сравните фрагменты символов с библиотекой символов. Если производительность не является основной проблемой, попробуйте найти символы в разных библиотеках шрифтов, пока не сможете определить используемый шрифт. Затем придерживайтесь этого шрифта для распознавания символов.

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

Ответ 3

Вы можете посмотреть Tesseract для части распознавания символов.

Ответ 4

Вы можете использовать potrace для уменьшения шума Он векторизовывает данное изображение (bmp) и преобразует его в svg, pdf и некоторые другие форматы.

http://potrace.sourceforge.net/potrace.html