Распознавание текста на изображении — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
м (rollbackEdits.php mass rollback)
 
(не показаны 23 промежуточные версии 4 участников)
Строка 1: Строка 1:
'''Распознавание текста на изображениях''' ( оптическое распознавание символом (англ. optical character recognition, OCR)) - одно из направлений распознавания образов, задача которого заключается в переводе изображений рукописного, машинописного или печатного текста в текстовые данные, использующиеся для представления символов в компьютере (например, в текстовом редакторе).
+
{{В разработке}}
 +
 
 +
'''Распознавание текста на изображениях''' (оптическое распознавание символов (англ. optical character recognition, OCR<ref>https://en.wikipedia.org/wiki/Optical_character_recognition</ref>)) {{---}} одно из направлений распознавания образов, задача которого заключается в переводе изображений рукописного, машинного или печатного текста в текстовые данные, использующиеся для представления символов в компьютере (например, в текстовом редакторе).
  
 
== Общая информация ==
 
== Общая информация ==
Распознавание текста на изображениях является важной задачей машинного обучения, так как это позволяет удобное взаимодействие с данными —  редактирование, анализ, поиск слов или фраз и т.д..
+
Распознавание текста на изображениях является важной задачей машинного обучения, так как это позволяет организовать удобное взаимодействие с данными: редактирование, анализ, поиск слов или фраз и т.д.
 +
 
 +
В последние десятилетия, благодаря использованию современных достижений компьютерных технологий, были развиты новые методы обработки изображений и распознавания образов, благодаря чему стало возможным создание таких промышленных систем распознавания печатного текста, как, например, FineReader<ref>https://www.abbyy.com/ru/finereader/</ref>, которые удовлетворяют основным требованиям систем автоматизации документооборота.
  
В последние десятилетия, благодаря использованию современных достижений компьютерных технологий, были развиты новые методы обработки изображений и распознавания образов, благодаря чему стало возможным создание таких промышленных систем распознавания печатного текста, как например, FineReader, которые удовлетворяют основным требованиям систем автоматизации документооборота. Тем не менее, создание каждого нового приложения в данной области по-прежнему остается творческой задачей и требует дополнительных исследований в связи со специфическими требованиями по разрешению, быстродействию, надежности распознавания и объему памяти, которыми характеризуется каждая конкретная задача.
+
Тем не менее, создание приложения в данной области по-прежнему остается творческой задачей и требует дополнительных исследований в связи со специфическими требованиями по разрешению, быстродействию, надежности распознавания и объему памяти, которыми характеризуется каждая конкретная задача.
  
 
== История ==
 
== История ==
 +
Разработка OCR-систем основана на технологиях, связанных с  телеграфией и созданием считывающих устройств для слепых. В 1914 году Эммануэль Гольдберг разработал устройство, считывающее символы и преобразовывающее их в стандартный телеграфный код. Одновременно Эдмунд Фурнье д'Альбе разработал «Оптофон», ручной сканер, который, при перемещении по напечатанной странице, вырабатывал тональные сигналы, соответствующие определенным буквам или символам.
  
Разработка OCR-систем берет начало из  технологий, связанных с  телеграфией и созданием считывающих устройств для слепых. В 1914 году Эммануэль Гольдберг разработал устройство, которое считывало символы и преобразовывало их в стандартный телеграфный код. Одновременно Эдмунд Фурнье д'Альбе разработал «Оптофон», ручной сканер, который при перемещении по напечатанной странице вырабатывал тональные сигналы, соответствующие определенным буквам или символам.
+
В 1974 году Рэй Курцвейл создал компанию «Kurzweil Computer Products, Inc» и начал работать над развитием первой системы оптического распознавания символов, способной распознавать текст, напечатанный любым шрифтом. Курцвейл считал, что лучшее применение этой технологии {{---}} создание машины чтения для слепых, которая позволила бы слепым людям иметь компьютер, умеющий читать текст вслух. Данное устройство требовало изобретения сразу двух технологий {{---}} ПЗС (прибор с зарядовой связью<ref>https://ru.wikipedia.org/wiki/ПЗС</ref>) планшетного сканера и синтезатора, преобразующего текст в речь.
  
В 1974 году Рэй Курцвейл создал компанию «Kurzweil Computer Products, Inc», и начал работать над развитием первой системы оптического распознавания символов, способной распознать текст, напечатанный любым шрифтом. Курцвейл считал, что лучшее применение этой технологии — создание машины чтения для слепых, которая позволила бы слепым людям иметь компьютер, умеющий читать текст вслух. Данное устройство требовало изобретения сразу двух технологий — ПЗС планшетного сканера и синтезатора, преобразующего текст в речь.
+
Первой коммерчески успешной программой, распознающей кириллицу, стала программа «AutoR» российской компании «ОКРУС». Алгоритм «AutoR» был компактный, быстрый и шрифтонезависимый. Этот алгоритм разработали и испытали ещё в конце 60-х два молодых биофизика, выпускники МФТИ {{---}} Г. М. Зенкин и А. П. Петров. В настоящее время алгоритм Зенкина-Петрова применяется в нескольких прикладных системах, решающих задачу распознавания графических символов.  
  
Первой коммерчески успешной программой, распознающей кириллицу, была программа «AutoR» российской компании «ОКРУС». Алгоритм «AutoR» был компактный, быстрый и в полной мере «интеллектуальный», то есть по-настоящему шрифтонезависимый. Этот алгоритм разработали и испытали ещё в конце 60-х два молодых биофизика, выпускники МФТИ — Г. М. Зенкин и А. П. Петров. В настоящее время алгоритм Зенкина-Петрова применяется в нескольких прикладных системах, решающих задачу распознавания графических символов.  
+
В 1993 году вышла технология распознавания текстов российской компании ABBYY. На её основе создан ряд корпоративных решений и программ для массовых пользователей. Технологии распознавания текстов ABBYY OCR лицензируют международные ИТ-компании, такие как Fujitsu, Panasonic, Xerox, Samsung, EMC и другие.
  
В 1993 году вышла технология распознавания текстов российской компании ABBYY. На её основе создан ряд корпоративных решений и программ для массовых пользователей. Технологии распознавания текстов ABBYY OCR лицензируют международные ИТ-компании, такие как Fujitsu, Panasonic, Xerox, Samsung[3], EMC и другие.
+
В 2000-х годах производительность и компактность OCR-системы позволила представить на рынок онлайн-сервисы по переводу текста с одного языка на другой. Со временем  такие программы получили возможность обрабатывать изображения как печатного, так и рукописного текста.
  
В 2000-х годах OCR-системы стали доступны в режиме онлайн в том числе и в мобильных приложения, например, перевод знаков на иностранный язык на смартфоне в режиме реального времени. Различные коммерческие и открытые OCR-системы доступны для большинства распространенных алфавитов, включая латинский, кириллический, арабский, иврит, индийский, деванагарский, тамильский, китайские, японские и корейские иероглифы.
+
С развитием технологий производства мобильных устройств и упрощения процесса разработки мобильных приложений, OCR-системы стали неотъемлемой частью разнообразных программ: от развлекательных до обучающих, от мобильных помощников до систем управления.
  
 
== Применение систем распознавания текстов ==
 
== Применение систем распознавания текстов ==
 
 
Системы OCR применяются во многих областях. Вот некоторые из задач, которые решают системы распознавания текстов:
 
Системы OCR применяются во многих областях. Вот некоторые из задач, которые решают системы распознавания текстов:
* считывание данных с бланков и анкет
+
* Считывание данных с бланков и анкет.
* автоматическое распознавание номерного знака
+
* Автоматическое распознавание номерного знака.
* распознавание паспортных данных
+
* Распознавание паспортных данных.
* извлечение информации из визитных карточек в список контактов
+
* Извлечение информации из визитных карточек в список контактов.
* более быстрое создание текстовых версий печатных документов, например, сканирование книг для проекта "Гутенберг".
+
* Создание цифровых версий печатных и рукописных документов, например, сканирование книг для проекта "Гутенберг"<ref>https://ru.wikipedia.org/wiki/Проект_«Гутенберг»</ref>.
* вспомогательная технология для слепых и слабовидящих пользователей
+
* Технология для помощи слепым и слабовидящим.
* оцифровывание документов с целью получить возможность удобной работы с текстом - редактирование, поиск слов или строк или анализ.
 
  
== Типовые проблемы, связанные с системами OCR ==
+
== Наиболее распространенные задачи OCR ==
 
С задачей распознавания символов связаны следующие проблемы:
 
С задачей распознавания символов связаны следующие проблемы:
* Разнообразие форм начертания символов
+
* Разнообразие форм начертания символов: документ может содержать несколько шрифтов сразу, а символы могут быть схожи по начертанию.
Документ может содержать несколько шрифтом сразу, что усложняет задачу распознавания текста.  Некоторые символы похожи по начертанию (например, “G” и “6”, “S” и “5”, “U” и “V” и тд.) и в нестандартных шрифтах отличить их еще затруднительней
+
* Искажение изображения, содержащего текст:
 
+
** Шумы при печати.
* Искажение изображения, содержащего текст
+
** Плохое качество изображения (засвеченность, размытость).
** Шумы при печати
+
* Вариации размеров, масштаба и положения символов на странице.
** Изображение плохого качества (засвет, размытость)
+
* Влияние исходного масштаба печати: система оптического распознавания текста должна быть нечувствительной по отношению к способу верстки, расстоянию между строками и другим параметрам печати.
 
 
* вариации размеров и масштаба символов.
 
Существенным является и влияние исходного масштаба печати, поэтому система оптического распознавания текста должна быть нечувствительной (устойчивой) по отношению к способу верстки, расстоянию между строками и другим параметрам печати.
 
 
 
  
 
== Процесс распознавания текста ==
 
== Процесс распознавания текста ==
[[Файл:Процесс_распознавания_текста.jpg|thumb|400px|Процесс распознавания текста]]
+
[[Файл:Процесс_распознавания_текста.jpg|thumb|380px|Процесс распознавания текста]]
  
Система распознавания текста предполагает наличие на входе изображения с текстом (в формате данных графического файла). На выходе система должна выдать текст,  выделенный из входных данных. Весь процесс распознавания текста состоит из нескольких задач.
+
Система распознавания текста предполагает наличие на входе изображения с текстом (в формате данных графического файла). На выходе система должна выдать текст,  выделенный из входных данных. Весь процесс распознавания текста состоит из нескольких задач.
  
 
=== Обработка изображения ===
 
=== Обработка изображения ===
 +
Перед началом распознавания текста изображение должно быть очищено от шума и приведено к виду, позволяющему эффективно выделять символы и распознавать их. Обычно у изображения повышают резкость, контрастность, выравнивают его и преобразовывают в используемый системой формат (например, 8-битное изображение в градациях серого).
  
Перед началом распознавания текста изображение должно быть очищено от шума и приведено к виду, позволяющему эффективно выделять символы и распознавать их. Обычно у изображения повышают резкость, контрастность, выравнивают его и преобразовывают в  в используемый системой формат (например, 8-битное изображение в градациях серого).
+
=== Распознавание символов ===
 
+
''' ДОБАВИТЬ ОБЩИЕ СЛОВА '''
=== Сегментация ===
+
<br>
 
+
<br>
Сегментация подразумевает собой разбиение изображения документа на отдельные области. Сначала система выделяет блоки текста. Это особенно важно при обработке документов с несколькими столбцами или таблиц.
 
 
[[Файл:БлокСтрокаСлово.png|thumb|250px|Блок, строка, слово]]
 
 
 
Далее в каждом блоке  выделяются базовые линии, которые позволяют разделить блок на строки, а в дальнейшем на символы. Это позволяет системе обрабатывать каждый символ по отдельности. Сначала производится предварительное разбиение изображения текста на отдельные изображения символов и после этого определяется зависимость между разными изображениями с оценкой расстояния между ними. На этапе распознавания результаты разбиения могут уточняться с целью дополнительного разбиения или объединения нескольких полученных изображений. Уточнения могут строиться на основе контекста: если часть символов хорошо распознаны, они могут указать на нераспознанный, либо факт уточнения может основываться на плохом распознании получившегося изображения символа.
 
 
 
=== Распознавание символы ===
 
 
 
Для распознавания символа существуют 2 основных алгоритма.
 
 
 
==== Распознавание при помощи метрик ====
 
  
 +
== Алгоритмы распознавания символов ==
 +
=== Распознавание при помощи метрик ===
 
Этой способ лучше всего работает с машинописным текстом, но при обработке новых шрифтов точность распознавания падает.  
 
Этой способ лучше всего работает с машинописным текстом, но при обработке новых шрифтов точность распознавания падает.  
Метрика по сути является признаком символа, поэтому иногда в контексте данного способа говорят о процессе выявления признаков.
+
Метрика является признаком символа, поэтому иногда в контексте данного способа говорят о процессе выявления признаков.
 
В качестве метрики используют [[Расстояние Хэмминга| расстояние Хэмминга]], которое показывает, на сколько пикселей различаются изображения.
 
В качестве метрики используют [[Расстояние Хэмминга| расстояние Хэмминга]], которое показывает, на сколько пикселей различаются изображения.
Если  признаки двух символов максимально похожи, то разность между их метриками (то есть расстояние между ними) стремится к нулю. Дальнейшая классификация символа происходит по [[Метрический классификатор и метод ближайших соседей|методу ближайшего соседа]]  
+
Если  признаки двух символов максимально похожи, то разность между их метриками (то есть расстояние между ними) стремится к нулю. Дальнейшая классификация символа происходит по [[Метрический классификатор и метод ближайших соседей|методу ближайшего соседа]].
  
Однако одной метрики недостаточно для распознавания символа, так как некоторые символы очень похожи между собой (например, “j” и “i”, “Z” и “2”) и это может привести к ошибке. Чтобы избежать этого, есть несколько способов:
+
Однако, одной метрики недостаточно для распознавания символа, так как некоторые очень похожи между собой, (например, “j” и “i”, “Z” и “2”) что может привести к ошибке. Для избежания этого, используют следующие техники:
* группировка символов
+
<br>
Например, некоторые символы (“O”, “H”, “I”) обладают суперсимметрией (полностью совпадают со своими отражениями и значимые пиксели распределены равномерно по всему изображению) и их можно выделить в отдельный класс. Это сокращает перебор метрик в несколько раз.
+
<br>
* контекстное распознавание
+
1) Группировка символов<br>
В качестве помощи алгоритмам распознавания в систему включают словари. Словари предоставляют справки во многих случаях, но быстро отказывают, когда, например, имеют дело с именами собственными, которые не находятся в словаре.
+
$\;$Некоторые символы (“O”, “H”, “I”) обладают суперсимметрией, (полностью совпадают со своими отражениями, значимые пиксели распределены равномерно по всему изображению) и их можно выделить в отдельный класс. Это значительно сокращает перебор метрик.
 +
<br>
 +
<br>
 +
2) Контекстное распознавание<br>
 +
$\;$В качестве помощи алгоритмам распознавания в систему включают словари. Они предоставляют справки во многих случаях, но быстро отказывают, когда, например, имеют дело с именами собственными, которые не находятся в словаре.
  
==== Распознавание с применением нейронных сетей ====
+
=== Распознавание с применением нейронных сетей ===
 
  [[Файл:Нейронная_сеть_для_распознавания_символов.png|thumb|800px|Сверточная нейронная сеть для распознавания символа]]
 
  [[Файл:Нейронная_сеть_для_распознавания_символов.png|thumb|800px|Сверточная нейронная сеть для распознавания символа]]
 
[[Нейронные сети, перцептрон|Нейронные сети]]  – это структура связанных элементов, на которых заданы функции преобразования сигнала, а также коэффициенты, которые могут быть настроены на определенный характер работы.  
 
[[Нейронные сети, перцептрон|Нейронные сети]]  – это структура связанных элементов, на которых заданы функции преобразования сигнала, а также коэффициенты, которые могут быть настроены на определенный характер работы.  
  
Часть элементов структуры выделены как входные: на них поступают сигналы извне, таким образом, они описывают значения пикселя изображения. То есть, если имеется изображение 16х16, входов у сети должно быть 256. Другая часть – выходные: они формируют результирующие сигналы.  
+
Часть элементов структуры выделены как входные: на них поступают сигналы извне, таким образом, они описывают значения пикселя изображения. То есть, если имеется изображение 16х16, входов у сети должно быть 256. Другая часть – выходные, они формируют результирующие сигналы.  
  
Сигнал, который проходит через нейронную сеть, преобразуется согласно формулам на элементах сети, и на выходе формируется ответ. Так как все нейроны поименованы значениями букв, следовательно, среагировавший нейрон и несет ответ распознавания.  
+
Сигнал, проходящий через нейронную сеть, преобразуется согласно формулам на элементах сети, на выходе формируется ответ. Так как все нейроны поименованы значениями букв, следовательно, среагировавший нейрон и несет ответ распознавания.  
  
Нейронная сеть может служить в системе распознавания текста в качестве классификатора. Этот классификатор сначала обучают, настраивая коэффициенты на элементах сети. При обучении сеть получает на вход изображения, анализирует все позиции черных пикселей и выравнивает коэффициенты, минимизируя ошибку. Таким образом, достигается лучший результат распознавания.  
+
Нейронная сеть может быть использована в системе распознавания текста в качестве классификатора. При обучении, сеть получает на вход изображения, анализирует все позиции черных пикселей и выравнивает коэффициенты, минимизируя ошибку. Таким образом, достигается лучший результат распознавания.  
  
'''Пример нейронной сети'''
+
====Пример нейронной сети====
 +
[[Файл:Пример нейронной сети для распознавания символов.jpg|thumb|800px|Пример нейронной сети для распознавания символов]]
  
[[Файл:Пример нейронной сети для распознавания символов.jpg | Пример нейронной сети для распознавания символов]]
+
На картинке в качестве примера схематически показана двухслойная нейронная сеть, включающая в себя 35 входов (каждый символ {{---}} матрица 7x5, соответственно, вектор, описывающий матрицу, состоит из 35 элементов), 26 выходов (количество букв) и 10 нейронов скрытого слоя. В качестве [[Практики реализации нейронных сетей#Функции активации|функции активации]] в данной сети используется сигмоидная функция<ref>https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D0%B3%D0%BC%D0%BE%D0%B8%D0%B4%D0%B0</ref>, выход которой представлен в диапазоне от 0 до 1, что потом удобно перевести в булеву алгебру.
 
+
<br>
На картинке в качестве примера схематически показана нейронная сеть, которая включает в себя 35 входов (каждый символ - матрица 7x5, соответственно, вектор, описывающий матрицу, состоит из 35 элементов) и 26 выходов (количество букв). Данная НС является двухслойной сетью. [[Практики реализации нейронных сетей#Функции активации|Функцией активации]] поставим логарифмическую сигмоидную функцию, которую удобно использовать, потому что выходные векторы содержат элементы со значениями в диапазоне от 0 до 1, что потом удобно перевести в булеву алгебру. На скрытый уровень выделим 10 нейронов (это число можно регулировать).
+
<br>
 
+
<br>
'''Пример на синтаксисе скриптового языка MATLAB'''
+
<br>
 +
<br>
 +
<br>
 +
====Пример на синтаксисе скриптового языка MATLAB====
 
     S1 = 10; ''% количество нейронов на скрытом слое''
 
     S1 = 10; ''% количество нейронов на скрытом слое''
 
     [S2,Q] = size(targets); ''% количество нейронов на втором слое (количество выходов сети)''
 
     [S2,Q] = size(targets); ''% количество нейронов на втором слое (количество выходов сети)''
Строка 103: Строка 102:
 
         );
 
         );
  
 +
====Недостатки нейронных сетей====
 +
Нейронные сети с успехом могут применяться в системах распознавания текста, однако обладают существенными недостатками, препятствующими их широкому применению:
 +
* Затраты памяти: необходимо построить достаточно большую сеть элементов, что приводит к большим затратам памяти.
 +
* Затраты ресурсов системы: в процессе распознавания используются большие объемы ресурсов системы, так как функции на элементах сети работают с числами с плавающей точкой.
 +
* Необходимость в обучении: для достижения более точного результата нейронную сеть необходимо обучать, однако и это не гарантирует идеальный результат.
 +
* Сложность построения: так как работа нейронной сети во многом зависит от ее конфигурации, требуется больше усилий для создания наиболее эффективной архитектуры.
  
'''Недостатки нейронных сетей'''  
+
== Алгоритмы распознавания текста ==
 
+
=== E2E-MLT ===
Нейронные сети с успехом могут применяться в системах распознавания текста, но существует большое число недостатков, которые препятствуют их широкому применению.  
+
{{Определение
* Затраты памяти - для построения сети, обеспечивающей распознавание каждого символа текста, необходимо построить достаточно большую сеть элементов, что приводит к большим затратам памяти.  
+
|definition='''E2E-MLT'''<ref>https://arxiv.org/abs/1801.09919</ref> {{---}} метод, позволяющий решать задачи локализации и распознавания текста на изображениях, содержащих фрагменты на разных языках. Основан на FCN-сети с общими слоями для обеих задач.
* Затраты ресурсов системы - помимо памяти, еще сильнее тратятся ресурсы системы в процессе распознавания, так как функции на элементах сети работают с числами с плавающей точкой.  
+
}}
* Необходимость в обучение - для достижения более точного результата нейронную сеть необходимо обучать на все случаи, однако и это не гарантирует 100% результат.
+
Реализация размещена в Github репозитории<ref>https://github.com/MichalBusta/E2E-MLT</ref> одного из авторов проекта.
* Зависимость от конфигураций сети -так как работа нейронной сети по распознаванию текста во многом зависит от конфигурации сети и функций, заданных в элементах, требуется больше усилий для построения эффективно работающей сети.
+
<gallery mode="packed-hover" widths=500px heights=250px>
 +
Image:e2emlt_work.jpg|250px|500px|''Результат работы E2E-MLT''
 +
</gallery>
  
 
== См. также ==
 
== См. также ==
 
*[[Задача нахождения объектов на изображении]]
 
*[[Задача нахождения объектов на изображении]]
 
*[[Сверточные нейронные сети]]
 
*[[Сверточные нейронные сети]]
 +
*[[Глубокое обучение]]
  
 
== Источники информации ==
 
== Источники информации ==
* [https://en.wikipedia.org/wiki/Optical_character_recognition Wikipedia {{---}} Optical character recognition ]
 

Текущая версия на 19:36, 4 сентября 2022

Эта статья находится в разработке!

Распознавание текста на изображениях (оптическое распознавание символов (англ. optical character recognition, OCR[1])) — одно из направлений распознавания образов, задача которого заключается в переводе изображений рукописного, машинного или печатного текста в текстовые данные, использующиеся для представления символов в компьютере (например, в текстовом редакторе).

Общая информация

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

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

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

История

Разработка OCR-систем основана на технологиях, связанных с телеграфией и созданием считывающих устройств для слепых. В 1914 году Эммануэль Гольдберг разработал устройство, считывающее символы и преобразовывающее их в стандартный телеграфный код. Одновременно Эдмунд Фурнье д'Альбе разработал «Оптофон», ручной сканер, который, при перемещении по напечатанной странице, вырабатывал тональные сигналы, соответствующие определенным буквам или символам.

В 1974 году Рэй Курцвейл создал компанию «Kurzweil Computer Products, Inc» и начал работать над развитием первой системы оптического распознавания символов, способной распознавать текст, напечатанный любым шрифтом. Курцвейл считал, что лучшее применение этой технологии — создание машины чтения для слепых, которая позволила бы слепым людям иметь компьютер, умеющий читать текст вслух. Данное устройство требовало изобретения сразу двух технологий — ПЗС (прибор с зарядовой связью[3]) планшетного сканера и синтезатора, преобразующего текст в речь.

Первой коммерчески успешной программой, распознающей кириллицу, стала программа «AutoR» российской компании «ОКРУС». Алгоритм «AutoR» был компактный, быстрый и шрифтонезависимый. Этот алгоритм разработали и испытали ещё в конце 60-х два молодых биофизика, выпускники МФТИ — Г. М. Зенкин и А. П. Петров. В настоящее время алгоритм Зенкина-Петрова применяется в нескольких прикладных системах, решающих задачу распознавания графических символов.

В 1993 году вышла технология распознавания текстов российской компании ABBYY. На её основе создан ряд корпоративных решений и программ для массовых пользователей. Технологии распознавания текстов ABBYY OCR лицензируют международные ИТ-компании, такие как Fujitsu, Panasonic, Xerox, Samsung, EMC и другие.

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

С развитием технологий производства мобильных устройств и упрощения процесса разработки мобильных приложений, OCR-системы стали неотъемлемой частью разнообразных программ: от развлекательных до обучающих, от мобильных помощников до систем управления.

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

Системы OCR применяются во многих областях. Вот некоторые из задач, которые решают системы распознавания текстов:

  • Считывание данных с бланков и анкет.
  • Автоматическое распознавание номерного знака.
  • Распознавание паспортных данных.
  • Извлечение информации из визитных карточек в список контактов.
  • Создание цифровых версий печатных и рукописных документов, например, сканирование книг для проекта "Гутенберг"[4].
  • Технология для помощи слепым и слабовидящим.

Наиболее распространенные задачи OCR

С задачей распознавания символов связаны следующие проблемы:

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

Процесс распознавания текста

Процесс распознавания текста

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

Обработка изображения

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

Распознавание символов

ДОБАВИТЬ ОБЩИЕ СЛОВА

Алгоритмы распознавания символов

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

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

Однако, одной метрики недостаточно для распознавания символа, так как некоторые очень похожи между собой, (например, “j” и “i”, “Z” и “2”) что может привести к ошибке. Для избежания этого, используют следующие техники:

1) Группировка символов
$\;$Некоторые символы (“O”, “H”, “I”) обладают суперсимметрией, (полностью совпадают со своими отражениями, значимые пиксели распределены равномерно по всему изображению) и их можно выделить в отдельный класс. Это значительно сокращает перебор метрик.

2) Контекстное распознавание
$\;$В качестве помощи алгоритмам распознавания в систему включают словари. Они предоставляют справки во многих случаях, но быстро отказывают, когда, например, имеют дело с именами собственными, которые не находятся в словаре.

Распознавание с применением нейронных сетей

Сверточная нейронная сеть для распознавания символа

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

Часть элементов структуры выделены как входные: на них поступают сигналы извне, таким образом, они описывают значения пикселя изображения. То есть, если имеется изображение 16х16, входов у сети должно быть 256. Другая часть – выходные, они формируют результирующие сигналы.

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

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

Пример нейронной сети

Пример нейронной сети для распознавания символов

На картинке в качестве примера схематически показана двухслойная нейронная сеть, включающая в себя 35 входов (каждый символ — матрица 7x5, соответственно, вектор, описывающий матрицу, состоит из 35 элементов), 26 выходов (количество букв) и 10 нейронов скрытого слоя. В качестве функции активации в данной сети используется сигмоидная функция[5], выход которой представлен в диапазоне от 0 до 1, что потом удобно перевести в булеву алгебру.





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

   S1 = 10; % количество нейронов на скрытом слое
   [S2,Q] = size(targets); % количество нейронов на втором слое (количество выходов сети)
   P = alphabet; % входная матрица, содержащая информацию о буквах
   % создаем новую сеть с использованием диалогового окна
   net = newff(minmax(P), % матрица минимальных и максимальных значений строк входной матрицы
           [S1 S2], % количество нейронов на слоях
           {’logsig’ ’logsig’}, % функция активации
           ’traingdx’ % алгоритм подстройки весов и смещений (обучающий алгоритм)
       );

Недостатки нейронных сетей

Нейронные сети с успехом могут применяться в системах распознавания текста, однако обладают существенными недостатками, препятствующими их широкому применению:

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

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

E2E-MLT

Определение:
E2E-MLT[6] — метод, позволяющий решать задачи локализации и распознавания текста на изображениях, содержащих фрагменты на разных языках. Основан на FCN-сети с общими слоями для обеих задач.

Реализация размещена в Github репозитории[7] одного из авторов проекта.

См. также

Источники информации