Для чего используют программы для распознавания текста

Человечество испокон веков создавало книги и прочую письменную продукцию, надеясь на то, что потомки ее хотя бы разок прочитают. Более или менее равномерно так и происходило до середины XX века, до появления компьютеров, когда оказалось, что будущее все же за электронными книгами. Сейчас, с началом XXI века, это предположение похоже на правду – бумажными книгами интересуются все меньше, а электронные представлены в самом широком спектре. Некоторые писатели даже изначально пишут онлайн-версии книг, а только потом начинают продавать бумажные варианты. У Стивена Кинга, правда, не получилось…

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

Идея программы проста – загоняем в сканер лист с текстом, а затем получаем ее оцифрованное изображение. Изображение поступает в программу, которая «ищет систему», выделяет символы, абзацы, таблицы и рисунки. Текстовая составляющая прогоняется через алгоритм распознавания образа и превращается в компактный код, которому придается то же оформление, что и оригиналу.

Программы распознавания текста

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

Приемы были грубоваты, и им мешало все – цвет букв, курсив и подчеркивание, искажение шрифта. Зато такие программы работали быстро, подбирая символы по принципу «похоже – не похоже». Но шрифтов стало много, и поэтому такие программы перестали справляться с работой, уступив место «интеллектуальным».

Те тоже проводили предварительные работы с изображением символа, но уже другого плана – в основном, чистили «шум», а затем пытались преобразовать графику в векторы, а векторы – в набор формул или уравнений. Особенно интересно смотрится такая подготовка в книгах Д. Кнута о программе TEX, где приведена теория сплайнов и их расчетов. Таким образом, программе становится неважно, как именно искажен шрифт – она ищет не ключевых точки, а систему и допуски на ошибку. И об ошибках – долгое время программы выдавали на вывод смешанные тексты с многочисленными ошибками, пока не появились хорошие словари, позволяющие не только определять язык текста, но и автодополняющие слова, что сделало распознавание почти стопроцентным.

23 июня 2012,
6014

Интернет-технологии, Веб-программирование, Распознавание текста

Комментировать

FacebookВКонтакте
Twitter

Распознавание текста с изображения на Python | EasyOCR vs Tesseract | Компьютерное зрение

  1. Информация об IP
  2. Антивирусная проверка
  3. Данные из Whois
  4. Проверить заголовки
  5. Punycode конвертер
  1. Обзоры
  2. Информация о сайтах
  3. Скрипты для сайта
  4. Новости Интернета

Источник: codomaza.com

Методы распознавания текста

Буквально вчера прошла 61-я студенческая научная конференция в Южном Федеральном Университете в городе Таганроге, на которой я представлял доклад по методам распознавания текста на графических изображениях. И хотелось бы поделиться этим с еще большим количеством слушателей и читателей. Кому интересно почитать про велосипеды студента-новичка в этой области, прошу под кат.
Картинки и кусочки кода присутствуют.

Немного теории

Тема распознавания текста попадает под раздел распознавания образов. И для начала коротко о самом распознавании образов.
Распознавание образов или теория распознавания образов это раздел информатики и смежных дисциплин, развивающий основы и методы классификации и идентификации предметов, явлений, процессов, сигналов, ситуаций и т. п. объектов, которые характеризуются конечным набором некоторых свойств и признаков. Данное определение нам дает Wikipedia.

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

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

  • Сравнение с заранее подготовленным шаблоном;
  • Распознавание с использованием критериев, распознаваемого объекта;
  • Распознавание при помощи самообучающихся алгоритмов, в том числе при помощи нейронных сетей.
Читайте также:
Trados программа для перевода что это

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

Фильтрация и обработка

Так как этап обнаружения был опущен и вставлен этап предобработки то изображение в большинстве своем выглядит следующим образом.

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

Медианный фильтр

public static void Median(ref Bitmap image) < var arrR = new int[8]; var arrG = new int[8]; var arrB = new int[8]; var outImage = new Bitmap(image); for (int i = 1; i < image.Width — 1; i++) for (int j = 1; j < image.Height — 1; j++) < for (int i1 = 0; i1 < 2; i1++) for (int j1 = 0; j1 < 2; j1++) < var p = image.GetPixel(i + i1 — 1, j + j1 — 1); arrR[i1 * 3 + j1] = ((p.R + p.G + p.B) / 3) arrG[i1 * 3 + j1] = ((p.R + p.G + p.B) / 3) >> 8 arrB[i1 * 3 + j1] = ((p.R + p.G + p.B) / 3) >> 16 > Array.Sort(arrR); Array.Sort(arrG); Array.Sort(arrB); outImage.SetPixel(i, j, Color.FromArgb(arrR[3], arrG[4], arrB[5])); > image = outImage; >

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

Монохром

public static void Monochrome(ref Bitmap image, int level) < for (int j = 0; j < image.Height; j++) < for (int i = 0; i < image.Width; i++) < var color = image.GetPixel(i, j); int sr = (color.R + color.G + color.B) / 3; image.SetPixel(i, j, (sr < level ? Color.Black : Color.White)); >> >

Сегментация

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

Непосредственно перед распознаванием изображение нормализуется и приводится до размеров шаблонов, подготовленных заранее.

Далее наступает сам процесс распознавания. Для пользователя имеется два выбора, при помощи метрик и при помощи нейронной сети.

Распознавание
Рассмотрим первый случай — распознавание при помощи метрик.

Метрика – некоторое условное значение функции, определяющее положение объекта в пространстве. Таким образом, если два объекта расположены близко друг от друга, то есть похожи (например, две буквы А написанные разным шрифтом), то метрики для таких объектов будут совпадать или быть предельно похожими. Для распознавания в этом режиме была выбрана метрика Хэмминга.

Метрика Хэмминга – метрика которая показывает, как сильно объекты не похожи между собой.

Данную метрику часто используют при кодировании информации и передаче данных. Например, после сеанса передачи на выходе имеется следующая последовательность бит (1001001), также нам известно, что должна прийти другая последовательность бит (1000101). Мы вычисляем метрику путем сравнения частей последовательности с соответствующими местами из другой последовательности. Таким образом метрика Хэмминга в нашем случае равна 2. Так как объекты отличаются в двух позициях. 2- это степень непохожести, чем больше, тем хуже в нашем случае.
Следовательно, чтобы определить какая буква изображена нужно найти ее метрику со всеми готовыми шаблонами. И тот шаблон, чья метрика окажется наиболее близкой к 0 будет ответом.

Читайте также:
Поступление на программу спо что это значит

Но как показала практика подсчет одной лишь метрики не дает положительного результата, так многие буквы похожи между собой. например «j» «i», что приводит к ошибочному распознаванию.

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

Экспериментом было выяснено, что такие буквы как «H» «I» «i» «O» «o» «X» «x» «l» обладают суперсимметрией (полностью совпадают со своими отражениями и значимые пиксели распределены равномерно по всему изображению), поэтому они были вынесены в отдельный класс, что сокращает перебор всех метрик примерно в 6 раз. Аналогичные действия были проведены в отношении других букв. В среднем уменьшение перебора достигает примерно 3 раза.
Также есть уникальная буква такая как «J», которая находится в своем классе одна, и значит идентифицируются однозначно. Далее, для каждого класса высчитывается метрика Хэмминга, которая на данном этапе дает лучшие показатели чем при прямом применении.
При создании шаблонов использовался шрифт «consolas», поэтому, если распознаваемый текст написан этим шрифтом, распознавание имеет точность порядка 99 процентов. При изменении шрифта, точность падает до 70 процентов.

Второй способ распознавания – при помощи нейронной сети.

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

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

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

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

Обучение

public void Teach(Bitmap img, Neuron correctNeuron) < var vector = GetVector(img); for (int i = 0; i < vector.Length; i++) < vector[i] *= 10; correctNeuron.Weigths[i] = correctNeuron.Weigths[i] + 0.5 * (vector[i] — correctNeuron.Weigths[i]); >>

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

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

P.S. Хотелось бы услышать конструктивную критику по поводу стиля написания, манеры представления и полноты освещения.

  • распознавание образов
  • распознавание текста
  • метрики
  • нейронные сети
  • Разработка веб-сайтов
  • Программирование

Источник: habr.com

Лучшие программы для распознавания текста

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

Читайте также:
Memory booster что это за программа

Зачем нужны эти программы?

Итак, программы для распознавания текста (Optical Character Recognition) предназначены для конвертирования машинописного или печатного текста в цифровые данные. Кроме того, эти же утилиты могут преобразовывать скриншоты, фотографии и PDF-файлы в обычные документы Microsoft Word.

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

FineReader

По мнению огромного числа пользователей, FineReader – это лучшая программа для распознавания текста. В Word, кстати, есть возможность интегрировать отдельную панель для «ФайнРидера», что только добавляет этой программе популярности.

Распознавание текста в FineReader

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

Главным недостатком приложения является то, что оно платное. Впрочем, вы можете попробовать воспользоваться взломанной версией.

CuneiForm

В отличие от FineReader, CuneiForm является бесплатной программой для распознавания текста. Она поддерживает более 20 языков, отлично работает со всеми популярными графическими форматами, а также легко переносит из исходного файла таблицы и графики. Помимо этого, у приложения имеется собственная база словарей, которую к тому же можно расширять.

Распознавание текста в CuneiForm

Стоит сказать, что CuneiForm распознает текст не так точно, как тот же Fine Reader. Тем не менее для большинства обычных пользователей возможностей программы будет вполне достаточно. Более того, разработчики постоянно совершенствуют свое детище. Уже сейчас приложение может составить конкуренцию своим платным аналогам, а в будущем не исключено, что и переплюнет их.

OmniPage

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

OmniPage распознавание текста

К особенностям OmniPage можно отнести возможность создавать из текста аудиофайлы. При этом вы сможете одним кликом конвертировать изображение в звук, что значительно сэкономит ваше время.

FineReader Online

А это уже не программа для распознавания текстов, а полноценный онлайн-сервис, который не требует установки на компьютер. Версия Online имеет несколько ограниченный набор функций, по сравнению с десктопным FineReader, но все же со своими базовыми задачами она справляется на отлично. Распознав текст, вы сможете либо скачать его на компьютер, либо сразу же загрузить в облачное хранилище.

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

New OCR

New ORC – это еще один удобный онлайн-сервис, который к тому же совершенно бесплатный. Помимо распознавания текстов, в нем вы сможете откорректировать яркость и контрастность исходного изображения, повернуть его при необходимости, а также выбирать формат конечного документа.

Распознанный тест вы сможете сохранить на компьютер, предварительно выбрав нужный вам формат, или же сразу отправить в облачное хранилище.

Приложения для смартфонов

Для распознавания текста можно использовать инструмент, который практически всегда под рукой у каждого человека. Речь идет о смартфоне или планшете. Так, установив соответствующее приложение, вы сможете сфотографировать текст, а затем сразу же конвертировать его в цифровой формат.

Распознавание текста на смартфоне

Самыми популярными мобильными программами для распознавания текста считаются TextGrabber + Translator (здесь есть еще и функция переводчика), CamScanner и Mobile Document Scanner. Каждая из них лучше подходит для тех или иных устройств, так что вам придется поэкспериментировать.

Источник: fb.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru