Изменения

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

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

1893 байта убрано, 19:36, 4 сентября 2022
м
rollbackEdits.php mass rollback
{{В разработке}} '''Распознавание текста на изображениях''' ( оптическое распознавание символом символов (англ. 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-систем берет начало из технологийВ 1974 году Рэй Курцвейл создал компанию «Kurzweil Computer Products, связанных с телеграфией Inc» и созданием считывающих устройств начал работать над развитием первой системы оптического распознавания символов, способной распознавать текст, напечатанный любым шрифтом. Курцвейл считал, что лучшее применение этой технологии {{---}} создание машины чтения для слепых, которая позволила бы слепым людям иметь компьютер, умеющий читать текст вслух. В 1914 году Эммануэль Гольдберг разработал Данное устройствотребовало изобретения сразу двух технологий {{---}} ПЗС (прибор с зарядовой связью<ref>https://ru.wikipedia.org/wiki/ПЗС</ref>) планшетного сканера и синтезатора, которое считывало символы и преобразовывало их преобразующего текст в стандартный телеграфный код. Одновременно Эдмунд Фурнье д'Альбе разработал «Оптофон», ручной сканер, который при перемещении по напечатанной странице вырабатывал тональные сигналы, соответствующие определенным буквам или символамречь.
В 1974 году Рэй Курцвейл создал компанию «Kurzweil Computer ProductsПервой коммерчески успешной программой, Inc»распознающей кириллицу, стала программа «AutoR» российской компании «ОКРУС». Алгоритм «AutoR» был компактный, быстрый и шрифтонезависимый. Этот алгоритм разработали и начал работать над развитием первой системы оптического распознавания символовиспытали ещё в конце 60-х два молодых биофизика, способной распознать текст, напечатанный любым шрифтомвыпускники МФТИ {{---}} Г. Курцвейл считал, что лучшее применение этой технологии — создание машины чтения для слепых, которая позволила бы слепым людям иметь компьютер, умеющий читать текст вслухМ. Данное устройство требовало изобретения сразу двух технологий — ПЗС планшетного сканера Зенкин и синтезатораА. П. Петров. В настоящее время алгоритм Зенкина-Петрова применяется в нескольких прикладных системах, преобразующего текст в речьрешающих задачу распознавания графических символов.
Первой коммерчески успешной программой, распознающей кириллицу, была программа «AutoR» В 1993 году вышла технология распознавания текстов российской компании «ОКРУС»ABBYY. Алгоритм «AutoR» был компактный, быстрый На её основе создан ряд корпоративных решений и в полной мере «интеллектуальный», то есть по-настоящему шрифтонезависимыйпрограмм для массовых пользователей. Этот алгоритм разработали и испытали ещё в конце 60Технологии распознавания текстов ABBYY OCR лицензируют международные ИТ-х два молодых биофизикакомпании, выпускники МФТИ — Г. М. Зенкин такие как Fujitsu, Panasonic, Xerox, Samsung, EMC и А. П. Петров. В настоящее время алгоритм Зенкина-Петрова применяется в нескольких прикладных системах, решающих задачу распознавания графических символовдругие.
В 1993 году вышла технология распознавания текстов российской компании ABBYY. На её основе создан ряд корпоративных решений 2000-х годах производительность и программ для массовых пользователей. Технологии распознавания текстов ABBYY компактность OCR лицензируют международные ИТ-компании, системы позволила представить на рынок онлайн-сервисы по переводу текста с одного языка на другой. Со временем такие программы получили возможность обрабатывать изображения как Fujitsu, Panasonic, Xerox, Samsung[3]печатного, EMC так и другиерукописного текста.
В 2000-х годах OCR-системы стали доступны в режиме онлайн в том числе С развитием технологий производства мобильных устройств и в упрощения процесса разработки мобильных приложенияприложений, например, перевод знаков на иностранный язык на смартфоне в режиме реального времени. Различные коммерческие и открытые OCR-системы доступны для большинства распространенных алфавитовстали неотъемлемой частью разнообразных программ: от развлекательных до обучающих, включая латинский, кириллический, арабский, иврит, индийский, деванагарский, тамильский, китайские, японские и корейские иероглифыот мобильных помощников до систем управления.
== Применение систем распознавания текстов ==
 
Системы OCR применяются во многих областях. Вот некоторые из задач, которые решают системы распознавания текстов:
* считывание Считывание данных с бланков и анкет.* автоматическое Автоматическое распознавание номерного знака.* распознавание Распознавание паспортных данных.* извлечение Извлечение информации из визитных карточек в список контактов.* более быстрое создание текстовых Создание цифровых версий печатных и рукописных документов, например, сканирование книг для проекта "Гутенберг"<ref>https://ru.wikipedia.org/wiki/Проект_«Гутенберг»</ref>.* вспомогательная технология Технология для слепых помощи слепым и слабовидящих пользователей* оцифровывание документов с целью получить возможность удобной работы с текстом - редактирование, поиск слов или строк или анализслабовидящим.
== Типовые проблемы, связанные с системами Наиболее распространенные задачи OCR ==
С задачей распознавания символов связаны следующие проблемы:
* Разнообразие форм начертания символовДокумент : документ может содержать несколько шрифтом шрифтов сразу, что усложняет задачу распознавания текста. Некоторые а символы похожи могут быть схожи по начертанию (например, “G” и “6”, “S” и “5”, “U” и “V” и тд.) и в нестандартных шрифтах отличить их еще затруднительней * Искажение изображения, содержащего текст:** Шумы при печати.** Изображение плохого качества Плохое качество изображения (засветзасвеченность, размытость).* вариации Вариации размеров , масштаба и масштаба положения символовна странице.Существенным является и влияние * Влияние исходного масштаба печати, поэтому : система оптического распознавания текста должна быть нечувствительной (устойчивой) по отношению к способу верстки, расстоянию между строками и другим параметрам печати. 
== Процесс распознавания текста ==
[[Файл:Процесс_распознавания_текста.jpg|thumb|400px380px|Процесс распознавания текста]]
Система распознавания текста предполагает наличие на входе изображения с текстом (в формате данных графического файла). На выходе система должна выдать текст, выделенный из входных данных. Весь процесс распознавания текста состоит из нескольких задач.
=== Обработка изображения ===
Перед началом распознавания текста изображение должно быть очищено от шума и приведено к виду, позволяющему эффективно выделять символы и распознавать их. Обычно у изображения повышают резкость, контрастность, выравнивают его и преобразовывают в используемый системой формат (например, 8-битное изображение в градациях серого).
Перед началом распознавания текста изображение должно быть очищено от шума и приведено к виду, позволяющему эффективно выделять символы и распознавать их. Обычно у изображения повышают резкость, контрастность, выравнивают его и преобразовывают в в используемый системой формат (например, 8-битное изображение в градациях серого).  === Сегментация === Сегментация подразумевает собой разбиение изображения документа на отдельные области. Сначала система выделяет блоки текста. Это особенно важно при обработке документов с несколькими столбцами или таблиц. [[Файл:БлокСтрокаСлово.png|thumb|250px|Блок, строка, слово]] Далее в каждом блоке выделяются базовые линии, которые позволяют разделить блок на строки, а в дальнейшем на символы. Это позволяет системе обрабатывать каждый символ по отдельности. Сначала производится предварительное разбиение изображения текста на отдельные изображения Распознавание символов и после этого определяется зависимость между разными изображениями с оценкой расстояния между ними. На этапе распознавания результаты разбиения могут уточняться с целью дополнительного разбиения или объединения нескольких полученных изображений. Уточнения могут строиться на основе контекста: если часть символов хорошо распознаны, они могут указать на нераспознанный, либо факт уточнения может основываться на плохом распознании получившегося изображения символа.  === Распознавание символы ===''' ДОБАВИТЬ ОБЩИЕ СЛОВА '''Для распознавания символа существуют 2 основных алгоритма. <br> ==== Распознавание при помощи метрик ====<br>
== Алгоритмы распознавания символов ==
=== Распознавание при помощи метрик ===
Этой способ лучше всего работает с машинописным текстом, но при обработке новых шрифтов точность распознавания падает.
Метрика по сути является признаком символа, поэтому иногда в контексте данного способа говорят о процессе выявления признаков.
В качестве метрики используют [[Расстояние Хэмминга| расстояние Хэмминга]], которое показывает, на сколько пикселей различаются изображения.
Если признаки двух символов максимально похожи, то разность между их метриками (то есть расстояние между ними) стремится к нулю. Дальнейшая классификация символа происходит по [[Метрический классификатор и метод ближайших соседей|методу ближайшего соседа]] .
Однако , одной метрики недостаточно для распознавания символа, так как некоторые символы очень похожи между собой , (например, “j” и “i”, “Z” и “2”) и это что может привести к ошибке. Чтобы избежать Для избежания этого, есть несколько способовиспользуют следующие техники:* группировка <br><br>1) Группировка символов<br>Например, некоторые $\;$Некоторые символы (“O”, “H”, “I”) обладают суперсимметрией , (полностью совпадают со своими отражениями и , значимые пиксели распределены равномерно по всему изображению) и их можно выделить в отдельный класс. Это значительно сокращает перебор метрик в несколько раз.* контекстное <br><br>2) Контекстное распознавание<br>$\;$В качестве помощи алгоритмам распознавания в систему включают словари. Словари Они предоставляют справки во многих случаях, но быстро отказывают, когда, например, имеют дело с именами собственными, которые не находятся в словаре.
==== Распознавание с применением нейронных сетей ====
[[Файл:Нейронная_сеть_для_распознавания_символов.png|thumb|800px|Сверточная нейронная сеть для распознавания символа]]
[[Нейронные сети, перцептрон|Нейронные сети]] – это структура связанных элементов, на которых заданы функции преобразования сигнала, а также коэффициенты, которые могут быть настроены на определенный характер работы.
Часть элементов структуры выделены как входные: на них поступают сигналы извне, таким образом, они описывают значения пикселя изображения. То есть, если имеется изображение 16х16, входов у сети должно быть 256. Другая часть – выходные: , они формируют результирующие сигналы.
Сигнал, который проходит проходящий через нейронную сеть, преобразуется согласно формулам на элементах сети, и на выходе формируется ответ. Так как все нейроны поименованы значениями букв, следовательно, среагировавший нейрон и несет ответ распознавания.
Нейронная сеть может служить быть использована в системе распознавания текста в качестве классификатора. Этот классификатор сначала обучают, настраивая коэффициенты на элементах сети. При обучении , сеть получает на вход изображения, анализирует все позиции черных пикселей и выравнивает коэффициенты, минимизируя ошибку. Таким образом, достигается лучший результат распознавания.
'''====Пример нейронной сети''' ====[[Файл:Пример нейронной сети для распознавания символов.jpg|thumb|800px|Пример нейронной сети для распознавания символов]]
[[Файл:Пример нейронной сети для распознавания символов.jpg|thumb|800px| Пример нейронной сети для распознавания символов]] На картинке в качестве примера схематически показана двухслойная нейронная сеть, которая включает включающая в себя 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, что потом удобно перевести в булеву алгебру. На скрытый уровень выделим 10 нейронов (это число можно регулировать).<br><br><br><br><br><br>'''====Пример на синтаксисе скриптового языка MATLAB'''====
S1 = 10; ''% количество нейронов на скрытом слое''
[S2,Q] = size(targets); ''% количество нейронов на втором слое (количество выходов сети)''
);
====Недостатки нейронных сетей====
Нейронные сети с успехом могут применяться в системах распознавания текста, однако обладают существенными недостатками, препятствующими их широкому применению:
* Затраты памяти: необходимо построить достаточно большую сеть элементов, что приводит к большим затратам памяти.
* Затраты ресурсов системы: в процессе распознавания используются большие объемы ресурсов системы, так как функции на элементах сети работают с числами с плавающей точкой.
* Необходимость в обучении: для достижения более точного результата нейронную сеть необходимо обучать, однако и это не гарантирует идеальный результат.
* Сложность построения: так как работа нейронной сети во многом зависит от ее конфигурации, требуется больше усилий для создания наиболее эффективной архитектуры.
== Алгоритмы распознавания текста ===== E2E-MLT ==={{Определение|definition='''Недостатки нейронных сетейE2E-MLT'''  Нейронные сети с успехом могут применяться в системах распознавания текста, но существует большое число недостатков, которые препятствуют их широкому применению<ref>https://arxiv.org/abs/1801. * Затраты памяти 09919</ref> {{--- для построения сети}} метод, обеспечивающей распознавание каждого символа позволяющий решать задачи локализации и распознавания текстана изображениях, необходимо построить достаточно большую сеть элементов, что приводит к большим затратам памятисодержащих фрагменты на разных языках. * Затраты ресурсов системы Основан на FCN- помимо памяти, еще сильнее тратятся ресурсы системы в процессе распознавания, так как функции на элементах сети работают с числами с плавающей точкойобщими слоями для обеих задач. * Необходимость }}Реализация размещена в обучение Github репозитории<ref>https://github.com/MichalBusta/E2E- для достижения более точного результата нейронную сеть необходимо обучать на все случаи, однако и это не гарантирует 100% результат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 ]
1632
правки

Навигация