Укажите что затрудняет распознавание текста
Что затрудняет распознавание текста
Распознавание текста даже для мощных компьютеров – задача не из простых. Поэтому раньше существовали специальные типы шрифтов для распознавания, символы которых машина понимала лучше.
Неправильная ориентация страницы. Необычно оформленный текст, расположенный на странице, например по диагонали, создает программе распознавания дополнительные трудности и скорее всего будет распознан с ошибками. А текст, расположенный вверх тормашками, OCR-приложение почти наверняка не сможет распознать правильно. Правда, во всех современных приложениях существуют инструменты, позволяющие автоматически повернуть страницу.
Многостраничные документы– серьезное испытание для OCR-приложений, поскольку их методы распознавания эффективно работают только в рамках отдельной страницы. Поэтому программы разбивают многостраничные документы на отдельные страницы и поочередно выполняют распознавание каждой из них.
Шрифт. Эффективнее всего OCR-системы справляются с такими легко читаемыми шрифтами, как Times New Roman или Courier. А вот с мелкими или декоративными шрифтами у них с большей долей вероятности возникнут проблемы, равно как и с математическими или химическими символами (в последнем случае необходимо явно указать программе, что ее задача – распознать формулы).
Профессиональные термины и слова на иностранном языке.Большинство OCR-приложений содержит мультиязычные и тематические словари и легко справляется с распознаванием слов из других языков и терминов. Однако узкоспециальные слова и выражения доставляют программам большие трудности – например, словосочетание «дезоксирибонуклеиновая кислота» может отсутствовать в словаре программы и будет помечено ею как нераспознанное, чтобы пользователь мог исправить его написание.
Пятна и грязь на документе могут сбить систему распознавания с толку. Так, две крупинки тонера способны быстро превратить «е» в «ё». Поэтому OCR-приложения имеют специальные функции «очистки» документа.
Текст на рисунках. В некоторых случаях программа должна «читать» и иллюстрации, выделяя на них текстовые блоки, к примеру, чтобы распознавать надписи на диаграммах. Эта задача решается следующим образом: как только на странице обнаруживаются элементы, похожие на текст, выполняется предварительное выборочное распознавание символов. Если результат проверки окажется убедительным, то программа продолжит работать с надписями на рисунках.
Таблицы. Для любого OCR-приложения таблица представляет собой смесь графических элементов (линий) и текста. Для того чтобы любой элемент таблицы удалось распознать, разработчики предусмотрели специальные функции. Корректно распознанные таблицы можно редактировать, к примеру в Excel или Word.
Каким должен быть сканер
Первым делом нужно определиться, с какими бумажными носителями вы чаще будете работать. Если это книги, журналы и рукописи (то есть сброшюрованные материалы), вам потребуется планшетный сканер. Требования OCR-программ к подобному оборудованию достаточно скромны: оптимальным решением будет недорогой (от 1500 руб.) «планшетник», позволяющий работать с
оригиналами формата A4. Он удобен тем, что на его стекло можно класть не только отдельные бумажные листы, но также книги и журналы. Кстати, во многих моделях крышка не просто откидывается, а еще и приподнимается вверх – можно сканировать толстые книги. Планшетные сканеры обычно встраивают в многофункциональные устройства; такие интегрированные скан-модули вполне пригодны для оцифровки текста и старых фотографий.
Если вы чаще будете сканировать отдельные листы, ищите модель, оборудованную устройством для автоматической подачи оригиналов. Оно освободит вас от необходимости менять страницы вручную, а будет затягивать их из приемного лотка автоматически, аналогично тому, как принтер затягивает листы чистой бумаги.
Читальный зал
Как происходит распознавание текста на ПК
Процесс оцифровки и оптического распознавания текста включает в себя пять этапов.
1 Ввод страницы. На этом этапе отсканированный или сфотографированный документ попадает в компьютер в виде изображения.
2 Анализ макета. OCR-приложение определяет, где на странице находятся текст, рисунки, таблицы и т.п., и разбивает ее на блоки. Программа последовательно дробит страницу на все более мелкие блоки: разбивает текст на абзацы, затем на предложения, отдельные слова и символы. В финале анализа макета документ представляет собой набор отдельных символов. Программа запоминает, в каком месте на странице каждый из них находится.
3 Распознавание символов – самый ответственный этап процесса OCR, ведь программа должна правильно идентифицировать все найденные знаки. Используется в тексте буква «В» (и какая – русская или латинская) или это цифра «8»? Если программа допустит ошибку, результат распознавания превратится в абракадабру.
Для более точного распознавания текста программы комбинируют различные методы, которые условно делятся на две категории: методы сопоставления с образцом и методы сопоставления признаков (более подробно о них читайте далее).
4 Реконструкция документа. После завершения процесса распознавания программа начинает воссоздавать страницы, с помощью встроенного словаря объединяя отдельные символы в слова, слова в предложения, предложения в абзацы и т.д.
Для ускорения процесса используются результаты анализа макета страницы (этап 2). Кроме того, применяя специальные методы, программы пытаются учитывать грамматические особенности текста, чтобы в итоге получились корректные с точки зрения распознаваемого языка предложения.
5 Сохранение документа. OCR-приложение сохраняет распознанный документ в определенном пользователем формате (только текст – TXT; макет страницы – файлы Microsoft Word или PDF).
Как выполняется распознавание символов
Для этого используется несколько различных технологий (см. врезку ниже).
Что затрудняет распознавание текста
Распознавание текста даже для мощных компьютеров – задача не из простых. Поэтому раньше существовали специальные типы шрифтов для распознавания, символы которых машина понимала лучше (см. рис. выше).
Программы распознавания текста
Каким должен быть сканер
Первым делом нужно определиться, с какими бумажными носителями вы чаще будете работать. Если это книги, журналы и рукописи (то есть сброшюрованные материалы), вам потребуется планшетный сканер. Требования OCR-программ к подобному оборудованию достаточно скромны: оптимальным решением будет недорогой (от 1500 руб.) «планшетник», позволяющий работать с оригиналами формата A4. Он удобен тем, что на его стекло можно класть не только отдельные бумажные листы, но также книги и журналы. Кстати, во многих моделях крышка не просто откидывается, а еще и приподнимается вверх – можно сканировать толстые книги. Планшетные сканеры обычно встраивают в многофункциональные устройства; такие интегрированные скан-модули вполне пригодны для оцифровки текста и старых фотографий.
Если вы чаще будете сканировать отдельные листы, ищите модель, оборудованную устройством для автоматической подачи оригиналов. Оно освободит вас от необходимости менять страницы вручную, а будет затягивать их из приемного лотка автоматически, аналогично тому, как принтер затягивает листы чистой бумаги.
Может ли OCR-программа распознавать рукописный текст
Решив распознать письмо, написанное от руки, вы будете неприятно удивлены, ведь рукописный шрифт для многих программ является камнем преткновения. Только в том случае, если текст написан печатными буквами, им удается добиться более-менее приемлемого результата.
Совсем по-иному распознавание рукописного текста происходит на планшетных ПК. Поставляемая в комплекте с ними программа умеет читать символы. Она понимает, каким образом пользователь пишет отдельные буквы: к примеру, букву «Е» она узнает по тому, что за вертикальной чертой следует написание трех горизонтальных линий, а цифра «1» для нее представляет собой одну вертикальную линию. Цифра «0» и буква «о» различаются лишь благодаря тому, что первый символ пишется по часовой стрелке, а второй – наоборот.
По следам госслужб
Конец 1989 года. В округе Лихтенберг города Берлина царит суета: после объединения Германии сотрудники секретных служб в спешном порядке уничтожают архивы. Результат: информация об осведомителях, жертвах службы госбезопасности и о проведении тайных операций набита в 16 000 мешков с мелкими бумажными обрезками. Согласно оценкам экспертов, человеку потребовалось бы несколько сотен лет, чтобы вручную сложить этот «пазл». С использованием же последних разработок эксперты Фраунхоферовского института производственного оборудования намерены выполнить данную задачу за пять лет. В настоящее время обрезки сканируются и объединяются в полноценные страницы. Эксперты Фраунхоферовского института намерены соединить 80% кусочков в автоматическом режиме, а позднее пропустить полученные страницы через программу распознавания текста, чтобы получить возможность поиска в архивах – по ключевым словам и именам. Согласно современным прогнозам, восстановленные документы будут переданы специальному ведомству, отвечающему за архивы «Штази», не позднее 2012 года.
Распознавание текста
Распознавание текста
Количество | 1 — 5 | 5+ | 10+ | 50+ | 100+ | 300+ |
Цена руб./1шт. | 15 | 14 | 13 | 10 | 7 | 5 |
РЕДАКТИРОВАНИЕ ТЕКСТОВЫХ ДОКУМЕНТОВ ОТ 100 РУБЛЕЙ ЗА СТРАНИЦУ.
Распознавание текста
Большинству из нас когда-нибудь приходилось писать рефераты. Можно, конечно, в интернете найти подходящую информацию, но что делать, когда эта информация есть в книге, а набирать текст вручную ой как не хочется? Ведь сразу надо отсканировать добытый материал, перевести, так сказать, в электронный вид. Затем переместить в ПК, найти программу для распознавания текста, редактировать остальные ошибки вручную. А это так утомительно. Доверьтесь профессионалам, лето на дворе, а работа за нами. Хорошую программу для распознавания не так-то просто найти, в основном, если программа хорошая – то на коммерческой основе. Мы распознаем книги, фотографии, текст с изображениями, печатные листы разных форматов. Минуя процедуру набора текста – из бумаги в компьютер!
Оптическое распознавание текста – это перевод изображений с текстом в текстовые символы. Распознавание часто используется для публикации текста. При этом можно редактировать текст, анализировать данные, искать слово или фразу, применять к тексту форматирование, электронный перевод.
Система распознавания текста должна быть настроена для работы с разными шрифтами, символами, изображенными на рисунках; восстанавливать исходное форматирование текста, включая колонки, рисунки и другие компоненты.
100% распознавание текста – это на 99% четкие изображения отсканированного материала и 1% редактирования вручную человеком. Распознавать можно также и рукописный текст хорошего качества.
При распознавании символов используется два метода сопоставления: признаков и с образцом.
То, что затрудняет распознавание текста:
— неправильная ориентация страницы;
— цветной фон или рисунок;
— математические, химические формулы;
— мелкие декоративные шрифты.
Приложение распознавания текста OCR работает только с изображениями в градациях серого цвета и цветные диаграммы, рисунки не распознает. Текст, расположенный по диагонали или вверх ногами, распознается с большей степенью с ошибками, чем расположенный строго горизонтально по тексту.
Почему ИИ сложно распознать текст на фото и как ему в этом помочь — пошаговая инструкция
Нейросетям по-прежнему тяжело находить текст на фото. Они справляются с отсканированными документами, но теряются в работе с фотографиями. Почему это происходит и как помочь ИИ в работе — рассказываем ниже.
Технологией распознавания документов сегодня уже никого не удивить. Мы за две минуты регистрируемся в каршеринге — для этого достаточно отправить фотографию паспорта и селфи, а также берём кредиты, не выходя из дома. И нет нужды перепечатывать многострочное «кем выдано» в нужную формочку, уж тем более идти в офис для подтверждения личности.
Дело в том, что распознать текст на фотографии сложно. Низкое качество съедает отдельные слова, а из-за того, что мы фотографируем документ под углом, появляются перспективные искажения, с которыми алгоритму не справиться.
Также на результат влияет нестандартный фон (например, вместо белой стены — бабушкин ковер), в таком случае алгоритм не может определить границы документа.
Для сравнения возьмём сканер: он выдаёт текст на чистом белом фоне, где видны все поля и нет искажений. Отсканированные документы похожи друг на друга, поэтому достаточно сотни примеров, чтобы обучить нейросеть.
Как повысить точность распознавания на фото? Решение, которое сработало у нас, — подготовка изображения с помощью нескольких алгоритмов сразу. Другими словами — делаем из фотографии подобие отсканированного документа, прежде чем нейросеть распознает текст.
Первый алгоритм, который вступает в игру, — выравниватель. Он находит границы документа и устраняет искажение на картинке. Даже в самом запущенном случае алгоритм исправит перспективу на фотографии, под каким бы углом её ни сняли, и найдёт края документа, если их нет в кадре.
Помогите прочитать, что здесь написано? (OCR)
Тонны архивных бумаг, чеков и счетов проходят сканирование и оцифровку во многих отраслях: в розничной торговле, логистике, банковских услугах и т.п. Компании получают конкурентное преимущество, если быстро оцифровывают и находят нужную информацию.
В 2020 году нам тоже пришлось решать проблему качественной оцифровки документов, и над этим проектом мы с коллегами работали совместно с компанией Verigram. Вот как мы проводили оцифровку документов на примере заказа клиентом SIM-карты прямо из дома.
Оцифровка позволила нам автоматически заполнять юридические документы и заявки на услуги, а также открыла доступ к аналитике фискальных чеков, отслеживанию динамики цен и суммарных трат.
Для преобразования различных типов документов (отсканированные документы, PDF-файлы или фото с цифровой камеры) в редактируемые форматы с возможностью поиска мы используем технологию оптического распознавания символов – Optical Character Recognition (OCR).
Работа со стандартными документами: постановка задачи
Заказ SIM-карты для пользователя выглядит так:
пользователь решает заказать SIM-карту;
фотографирует удостоверение личности для автоматического заполнения анкеты;
курьер доставляет SIM-карту.
Важно: пользователь фотографирует удостоверение личности своим смартфоном со специфическим разрешением камеры, качеством, архитектурой и другими особенностями. А на выходе мы получаем текстовое представление информации загруженного изображения.
Цель проекта OCR: построить быструю и точную кросc-платформенную модель, занимающую небольшой объем памяти на устройстве.
Верхнеуровневая последовательность обработки изображения стандартного документа выглядит так:
Выделяются границы документа, исключая не интересующий нас фон и исправляя перспективу изображения документа.
Выделяются интересующие нас поля: имя, фамилия, год рождения и т.п. На их основе можно построить модель предсказания соответствующего текстового представления для каждого поля.
Post-processing: модель вычищает предсказанный текст.
Локализация границ документа
Загруженное с камеры устройства изображение документа сравнивается с набором заранее подготовленных масок стандартных документов: фронтальная или задняя часть удостоверения, документ нового или старого образца, страницы паспорта или водительские права.
Предварительно делаем pre-processing обработку изображения и в результате ряда морфологических операций получаем соответствующее бинарное (черно-белое) представление.
Техника работает так: в каждом типе документа есть фиксированные поля, не меняющиеся по ширине и высоте. Например, название документа в правом верхнем углу как на картинке ниже. Они служат опорными полями, от которых рассчитывается расстояние до других полей документа. Если количество обнаруженных полей от опорного выше определенного порога для проверочной маски, мы останавливаемся на ней. Так подбирается подходящая маска.
Так выглядит подбор подходящей маски
исправляется перспектива изображения;
определяется тип документа;
изображение обрезается по найденной маске c удалением фона.
В нашем примере мы выявили, что загруженное фото — это фронтальная часть удостоверения личности Республики Казахстан образца позднее 2014 года. Зная координаты полей, соответствующие этой маске, мы их локализуем и вырезаем для дальнейшей обработки.
Следующий этап — распознавание текста. Но перед этим расскажу, как происходит сбор данных для обучения модели.
Распознавание текста
Данные для обучения
Мы подготавливаем данные для обучения одним из следующих способов.
Первый способ используется, если достаточно реальных данных. Тогда мы выделяем и маркируем поля с помощью аннотационного инструмента CVAT. На выходе получаем XML-файл с названием полей и их атрибутами. Если вернуться к примеру, для обучения модели по распознаванию текста, на вход подаются всевозможные локализованные поля и их соответствующие текстовые представления, считающиеся истинными.
Но чаще всего реальных данных недостаточно или полученный набор не содержит весь словарь символов (например, в реальных данных могут не употребляться некоторые буквы вроде «ъ» или «ь»). Чтобы получить большой набор бесплатных данных и избежать ошибок аннотаторов при заполнении, можно создать синтетические данные с аугментацией.
Сначала генерируем рандомный текст на основе интересующего нас словаря (кириллица, латиница и т.п.) на белом фоне, накладываем на каждый текст 2D-трансформации (повороты, сдвиги, масштабирование и их комбинации), а затем склеиваем их в слово или текст. Другими словами, синтезируем текст на картинке.
Примеры 2D-трансформаций
Показательный пример 2D-трансформации представлен в библиотеке для Python Text-Image-Augmentation-python. На вход подается произвольное изображение (слева), к которому могут применяться разные виды искажений.
Применяем разные виды искажений
Дисторсия, перспектива и растяжение изображения с помощью библиотеки Text-Image-Augmentation-python
После 2D-трансформации на изображение текста добавляются композитные эффекты аугментации: блики, размытия, шумы в виде линий и точек, фон и прочее.
Пример изображений в сформированной нами обучающей выборке на основе применения аугментации
Так можно создать обучающую выборку.
Обучающая выборка
Распознавание текста
Следующий этап — распознавание текста стандартного документа. Мы уже подобрали маску и вырезали поля с текстовой информацией. Дальше можно действовать одним из двух способов: сегментировать символы и распознавать каждый по отдельности или предсказывать текст целиком.
Посимвольное распознавание текста
В этом методе строится две модели. Первая сегментирует буквы: находит начало и конец каждого символа на изображении. Вторая модель распознает каждый символ по отдельности, а затем склеивает все символы.
Предсказывание локального текста без сегментации (end-2-end-решение)
Мы использовали второй вариант — распознавание текста без сегментирования на буквы, потому что этот метод оказался для нас менее трудозатратным и более производительным.
В теории, создается нейросетевая модель, которая выдает копию текста, изображение которого подается на вход. Так как текст на изображении может быть написан от руки, искажен, растянут или сжат, символы на выходе модели могут дублироваться.
Отличие результатов распознавания реальной и идеальной модели
Чтобы обойти проблему дублирования символов, добавим спецсимвол, например «-», в словарь. На этапе обучения каждое текстовое представление кодируется по следующим правилам декодировки:
два и более повторяющихся символа, встретившиеся до следующего спецсимвола, удаляются, остается только один;
повторение спецсимвола удаляется.
Так во время тренировочного процесса на вход подается изображение, которое проходит конволюционный и рекуррентный слои, после чего создается матрица вероятностей встречаемости символов на каждом шаге.
Истинное значение получает различные представления с соответствующей вероятностью за счет СТС-кодировки. Задача обучения — максимизировать сумму всех представлений истинного значения. После распознавания текста и выбора его представления проводится декодировка, описанная выше.
Архитектура модели по распознаванию текста
Мы попробовали обучить модель на разных архитектурах нейросетей с использованием и без использования рекуррентных слоев по схеме, описанной выше. В итоге остановились на варианте без использования рекуррентных слоев. Также для придания ускорения inference части, мы использовали идеи сетей MobileNet разных версий. Граф нашей модели выглядел так:
Схема итоговой модели
Методы декодирования
Хочу выделить два наиболее распространенных метода декодирования: CTC_Greedy_Decoder и Beam_Search.
CTC_Greedy_Decoder-метод на каждом шаге берет индекс, с наибольшей вероятностью соответствующий определенному символу. После чего удаляются дублирующиеся символы и спецсимвол, заданный при тренировке.
Метод «Beam_Search» — лучевой алгоритм, в основании которого лежит принцип: следующий предсказанный символ зависит от предыдущего предсказанного символа. Условные вероятности совстречаемости символов максимизируются и выводится итоговый текст.
Post-processing
Есть вероятность, что в продакшене при скоринге на новых данных модель может ошибаться. Нужно исключить такие моменты или заранее предупредить пользователя о том, что распознавание не получилось, и попросить переснять документ. В этом нам помогает простая процедура постобработки, которая может проверять на предсказание только ограниченного словаря для конкретного поля. Например, для числовых полей выдавать только число.
Другим примером постобработки являются поля с ограниченным набором значений, которые подбираются по словарю на основе редакторского расстояния. Проверка на допустимость значений: в поле даты рождения не могут быть даты 18 века.
Оптимизация модели
Техники оптимизации
На предыдущем этапе мы получили модель размером 600 килобайт, из-за чего распознавание были слишком медленным. Нужно было оптимизировать модель с фокусом на увеличение скорости распознавания текста и уменьшение размера.
В этом нам помогли следующие техники:
Квантование модели, при котором вычисления вещественных чисел переводятся в более быстрые целочисленные вычисления.
«Стрижка» (pruning) ненужных связей. Некоторые веса имеют маленькую магнитуду и оказывают малый эффект на предсказание, их можно обрезать.
Для увеличения скорости распознавания текста используются мобильные версии архитектур нейросеток, например, MobileNetV1 или MobileNetV2.
Так, в результате оптимизации мы получили снижение качества всего на 0,5 %, при этом скорость работы увеличилась в 6 раз, а размер модели снизился до 60 килобайт.
Вывод модели в продуктив
Процесс вывода модели в продуктив выглядит так:
Мы создаем 32-битную TensorFlow модель, замораживаем ее и сохраняем с дополнительными оптимизациями типа weight или unit pruning. Проводим дополнительное 8-битное квантование. После чего компилируем модель в Android- или iOS-библиотеку и деплоим ее в основной проект.
Рекомендации
На этапе развертывания задавайте статическое выделение тензоров в графе модели. Например, в нашем случае скорость увеличилась в два раза после указания фиксированного размера пакета (Batch size).
Не используйте LSTМ- и GRU-сети для обучения на синтетических данных, так как они проверяют совстречаемость символов. В случайно сгенерированных синтетических данных последовательность символов не соответствует реальной ситуации. Помимо этого они вызывают эффект уменьшения скорости, что важно для мобильных устройств, особенно для старых версий.
Аккуратно подбирайте шрифты для обучающей выборки. Подготовьте для вашего словаря набор шрифтов, допустимых для отрисовки интересующих символов. Например, шрифт OCR B Regular не подходит для кириллического словаря.
Пробуйте тренировать собственные модели, поскольку не все opensource-библиотеки могут подойти. Перед тем как тренировать собственные модели, мы пробовали Tesseract и ряд других решений. Так как мы планировали развертывать библиотеку на Android и iOS, их размер был слишком большим. Кроме того, качество распознавания этих библиотек было недостаточным.