Изменения

Перейти к: навигация, поиск

Распознавание текста на изображении

4 байта убрано, 17:02, 23 апреля 2020
м
Нет описания правки
== Общая информация ==
 Примерами распознавания текста являются оцифровка изображений текста (отсканированные книги, статьи, журналы), обработка анкетных бланков, распознавание номеров машин и надписей на объектах и т.д.. Распознавание текста на изображениях является важной задачей машинного обучения, так как это позволяет удобное взаимодействие с данными — редактирование, анализ, поиск слов или фраз и т.д..
В последние десятилетия, благодаря использованию современных достижений компьютерных технологий, были развиты новые методы обработки изображений и распознавания образов, благодаря чему стало возможным создание таких промышленных систем распознавания печатного текста, как например, FineReader, которые удовлетворяют основным требованиям систем автоматизации документооборота. Тем не менее, создание каждого нового приложения в данной области по-прежнему остается творческой задачей и требует дополнительных исследований в связи со специфическими требованиями по разрешению, быстродействию, надежности распознавания и объему памяти, которыми характеризуется каждая конкретная задача.
== История ==
Разработка OCR-систем берет начало из технологий, связанных с телеграфией и созданием считывающих устройств для слепых. В 1914 году Эммануэль Гольдберг разработал устройство, которое считывало символы и преобразовывало их в стандартный телеграфный код. Одновременно Эдмунд Фурнье д'Альбе разработал "Оптофон"«Оптофон», ручной сканер, который при перемещении по напечатанной странице вырабатывал тональные сигналы, соответствующие определенным буквам или символам. В конце 1920-х и начале 1930-х годов Эмануэль Гольдберг разработал то, что он назвал "Статистической машиной" для поиска микрофильмов в архивах с помощью оптической системы кодового распознавания. В 1931 году он получил патент на машину, который позже был приобретен компанией IBM. В 1974 году Рэй Курцвейл создал компанию «Kurzweil Computer Products, Inc», и начал работать над развитием первой системы оптического распознавания символов, способной распознать текст, напечатанный любым шрифтом. Курцвейл считал, что лучшее применение этой технологии — создание машины чтения для слепых, которая позволила бы слепым людям иметь компьютер, умеющий читать текст вслух. Данное устройство требовало изобретения сразу двух технологий — ПЗС планшетного сканера и синтезатора, преобразующего текст в речь. Конечный продукт был представлен 13 января 1976 во время пресс-конференции, возглавляемой Курцвейлом и руководителями национальной федерации слепых. В 1978 году компания «Kurzweil Computer Products» начала продажи коммерческой версии компьютерной программы оптического распознавания символов. Компания «LexisNexis» была одним из первых покупателей и приобрела программу для загрузки юридических бумаг и новостных документов в онлайн базы данных. Два года спустя Курцвейл продал свою компанию корпорации «Xerox», которая была заинтересована в дальнейшей коммерциализации систем распознавания текста. «Kurzweil Computer Products» стала дочерней компанией «Xerox», известной как «Scansoft».
Первой коммерчески успешной программойВ 1974 году Рэй Курцвейл создал компанию «Kurzweil Computer Products, распознающей кириллицуInc», была программа «AutoR» российской компании «ОКРУС». Программа начала распространяться в 1992 годуи начал работать над развитием первой системы оптического распознавания символов, работала под управлением операционной системы DOS и обеспечивала приемлемое по скорости и качеству распознавание даже на персональных компьютерах IBM PC/XT с процессором Intel 8088 при тактовой частоте 4способной распознать текст,77 МГцнапечатанный любым шрифтом. В начале 90-х компания Hewlett-Packard поставляла свои сканеры на российский рынок в комплекте с программой «AutoR». Алгоритм «AutoR» был компактныйКурцвейл считал, что лучшее применение этой технологии — создание машины чтения для слепых, быстрый и в полной мере «интеллектуальный»которая позволила бы слепым людям иметь компьютер, то есть по-настоящему шрифтонезависимыйумеющий читать текст вслух. Этот алгоритм разработали и испытали ещё в конце 60-х два молодых биофизика, выпускники МФТИ Данное устройство требовало изобретения сразу двух технологий Г. М. Зенкин ПЗС планшетного сканера и А. П. Петров. Свой метод распознавания они опубликовали в журнале «Биофизика» в номере 12, вып. 3 за 1967 год. В настоящее время алгоритм Зенкина-Петрова применяется в нескольких прикладных системахсинтезатора, решающих задачу распознавания графических символов. На основе алгоритма компанией Paragon Software Group в 1996 была создана технология PenReader. Г.М Зенкин продолжил работу над технологией PenReader в компании Paragon Software Group[1]. Технология используется преобразующего текст в одноимённом продукте компании[2]речь.
В 1993 году вышла технология распознавания текстов Первой коммерчески успешной программой, распознающей кириллицу, была программа «AutoR» российской компании ABBYY«ОКРУС». На её основе создан ряд корпоративных решений Алгоритм «AutoR» был компактный, быстрый и программ для массовых пользователейв полной мере «интеллектуальный», то есть по-настоящему шрифтонезависимый. В частностиЭтот алгоритм разработали и испытали ещё в конце 60-х два молодых биофизика, программа для распознавания текстов ABBYY FineReader, приложения для распознавания текстовой информации с мобильных устройств, система потокового ввода документов выпускники МФТИ — Г. М. Зенкин и данных ABBYY FlexiCaptureА. Технологии распознавания текстов ABBYY OCR лицензируют международные ИТП. Петров. В настоящее время алгоритм Зенкина-компанииПетрова применяется в нескольких прикладных системах, такие как Fujitsu, Panasonic, Xerox, Samsung[3], EMC и другиерешающих задачу распознавания графических символов.
В 1993 году вышла технология распознавания текстов российской компании ABBYY. На её основе создан ряд корпоративных решений и программ для массовых пользователей. Технологии распознавания текстов ABBYY OCR лицензируют международные ИТ-компании, такие как Fujitsu, Panasonic, Xerox, Samsung[3], EMC и другие.
В 2000-х годах OCR-системы стали доступны в режиме онлайн в том числе и в мобильных приложения, например, перевод знаков на иностранный язык на смартфоне в режиме реального времени. Сейчас на смартфонах доступны приложения, которые позволяют извлекать текст с помощью камеры устройства.  Различные коммерческие и открытые OCR-системы доступны для большинства распространенных алфавитов, включая латинский, кириллический, арабский, иврит, индийский, деванагарский, тамильский, китайские, японские и корейские иероглифы.
== Применение систем распознавания текстов ==
* оцифровывание документов с целью получить возможность удобной работы с текстом - редактирование, поиск слов или строк или анализ.
== Типовые проблемы, связанные с системами OCR==
С задачей распознавания символов связаны следующие проблемы:
* Разнообразие форм начертания символов
Документ может содержать несколько шрифтом сразу, что усложняет задачу распознавания текста. Некоторые символы похожи по начертанию (например, “G” и “6”, “S” и “5”, “U” и “V” и тд.) и в нестандартных шрифтах отличить их еще затруднительней
 
* Искажение изображения, содержащего текст
** Шумы при печати
** Изображение плохого качества (засвет, размытость)
 
* вариации размеров и масштаба символов.
Существенным является и влияние исходного масштаба печати, поэтому система оптического распознавания текста должна быть нечувствительной (устойчивой) по отношению к способу верстки, расстоянию между строками и другим параметрам печати.
== Процесс распознавания текста ==
[[Файл:Процесс_распознавания_текста.jpg|thumb|400px|Процесс распознавания текста]]
Система распознавания текста предполагает наличие на входе изображения с текстом (в формате данных графического файла). На выходе система должна выдать текст, выделенный из входных данных. Весь процесс распознавания текста состоит из нескольких задач.
Сегментация подразумевает собой разбиение изображения документа на отдельные области. Сначала система выделяет блоки текста. Это особенно важно при обработке документов с несколькими столбцами или таблиц.
[[Файл:БлокСтрокаСлово.png|thumb|250px|Блок, строка, слово]]
Далее в каждом блоке выделяются базовые линии, которые позволяют разделить блок на строки, а в дальнейшем на символы. Это позволяет системе обрабатывать каждый символ по отдельности. Сначала производится предварительное разбиение изображения текста на отдельные изображения символов и после этого определяется зависимость между разными изображениями с оценкой расстояния между ними. На этапе распознавания результаты разбиения могут уточняться с целью дополнительного разбиения или объединения нескольких полученных изображений. Уточнения могут строиться на основе контекста: если часть символов хорошо распознаны, они могут указать на нераспознанный, либо факт уточнения может основываться на плохом распознании получившегося изображения символа.
[[Файл:БлокСтрокаСлово.png|thumb|250px|Блок, строка, слово]]
=== Распознавание символы ===
Этой способ лучше всего работает с машинописным текстом, но при обработке новых шрифтов точность распознавания падает.
Метрика по сути является признаком символа, поэтому иногда в контексте данного способа говорят о процессе выявления признаков.
В качестве метрики используют [[Расстояние Хэмминга| расстояние Хэмминга]], которое показывает, на сколько пикселей различаются изображения.Если признаки двух символов максимально похожи, то разность между их метриками (то есть расстояние между ними) стремится к нулю. Дальнейшая классификация символа происходит по [[Метрический классификатор и метод ближайших соседей|методу ближайшего соседа ]]  
Однако одной метрики недостаточно для распознавания символа, так как некоторые символы очень похожи между собой (например, “j” и “i”, “Z” и “2”) и это может привести к ошибке. Чтобы избежать этого, есть несколько способов:
* группировка символов
==== Распознавание с применением нейронных сетей ====
[[Файл:Нейронная_сеть_для_распознавания_символов.png|thumb|800px|Сверточная нейронная сеть для распознавания символа]][[Нейронные сети , перцептрон|Нейронные сети]] – это структура связанных элементов, на которых заданы функции преобразования сигнала, а также коэффициенты, которые могут быть настроены на определенный характер работы.
Часть элементов структуры выделены как входные: на них поступают сигналы извне, таким образом, они описывают значения пикселя изображения. То есть, если имеется изображение 16х16, входов у сети должно быть 256. Другая часть – выходные: они формируют результирующие сигналы.
Нейронная сеть может служить в системе распознавания текста в качестве классификатора. Этот классификатор сначала обучают, настраивая коэффициенты на элементах сети. При обучении сеть получает на вход изображения, анализирует все позиции черных пикселей и выравнивает коэффициенты, минимизируя ошибку. Таким образом, достигается лучший результат распознавания.
'''Пример нейронной сети'''  [[Файл:Пример нейронной сети для распознавания символов.jpg|thumb|800px| Пример нейронной сети для распознавания символов]] На картинке в качестве примера схематически показана нейронная сеть, которая включает в себя 35 входов (каждый символ - матрица 7x5, соответственно, вектор, описывающий матрицу, состоит из 35 элементов) и 26 выходов (количество букв). Данная НС является двухслойной сетью. [[Практики реализации нейронных сетей#Функции активации|Функцией активации]] поставим логарифмическую сигмоидную функцию, которую удобно использовать, потому что выходные векторы содержат элементы со значениями в диапазоне от 0 до 1, что потом удобно перевести в булеву алгебру. На скрытый уровень выделим 10 нейронов (это число можно регулировать). '''Пример на синтаксисе скриптового языка MATLAB''' S1 = 10; ''% количество нейронов на скрытом слое'' [S2,Q] = size(targets); ''% количество нейронов на втором слое (количество выходов сети)'' P = alphabet; ''% входная матрица, содержащая информацию о буквах'' ''% создаем новую сеть с использованием диалогового окна'' net = newff(minmax(P), ''% матрица минимальных и максимальных значений строк входной матрицы'' [S1 S2], ''% количество нейронов на слоях'' {’logsig’ ’logsig’}, ''% функция активации'' ’traingdx’ ''% алгоритм подстройки весов и смещений (обучающий алгоритм)'' );  '''Недостатки нейронных сетей'''  Нейронные сети с успехом могут применяться в системах распознавания текста, но существует большое число недостатков, которые препятствуют их широкому применению. Для * Затраты памяти - для построения сети, обеспечивающей распознавание каждого символа текста, необходимо построить достаточно большую сеть элементов, что приводит к большим затратам памяти. Еще * Затраты ресурсов системы - помимо памяти, еще сильнее тратятся ресурсы системы в процессе распознавания, так как функции на элементах сети работают с числами с плавающей точкой. Кроме этого нейронные сети * Необходимость в обучение - для достижения более точного результата нейронную сеть необходимо обучать на все случаи, что, однако, и это не гарантирует точного результата100% результат. И, наконец, * Зависимость от конфигураций сети -так как работа нейронной сети по распознаванию текста во многом зависит от конфигурации сети и функций, заданных в элементах, что требует больших требуется больше усилий для построения эффективно работающей сети. == См. также ==*[[Задача нахождения объектов на изображении]]*[[Сверточные нейронные сети]] == Источники информации ==* [https://en.wikipedia.org/wiki/Optical_character_recognition Wikipedia {{---}} Optical character recognition ]
17
правок

Навигация