Реализация распознавания текста (OCR) в мобильном приложении

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

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Реализация распознавания текста (OCR) в мобильном приложении
Средний
~3-5 дней
Часто задаваемые вопросы

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

Точность распознавания в мобильном приложении редко ломается на идеальном скане — она рушится на том, как документ реально снят. Блик от лампы на глянцевой квитанции съедает половину строки при бинаризации, тень от руки переводит участок в «серое», и слой детекции текста перестаёт видеть блоки.

Разбор, который на тестовом наборе давал 98%, на потоке из поля уходит к 80–85% — это уже не косметика, а ручная правка оператором. Каждый такой документ возвращается в очередь, и точность распознавания перестаёт быть технической метрикой — она становится узким местом процесса.

Геометрия добавляет своё: наклон в 10–15 градусов, заломы на сгибе, перспектива от съёмки под углом. Линейная коррекция такие случаи не вытягивает — нужна выпрямляющая деформация по границам страницы, иначе строки «плывут» и символы склеиваются.

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

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

Что меняется после внедрения: скорость, точность, автономность

Автоматизация ручного ввода измеряется не «удобством», а долей документов, которые попадают в учёт без правок оператора. До внедрения эта доля обычно держится на 55-70%: часть реквизитов не читается, часть считывается неверно — и всё равно перебивается руками. После настройки распознавания под конкретные типы документов и разметку полей показатель выходит на 90-95%, причём растёт дальше: исправления оператора возвращаются в систему как обратная связь. Снимки при этом не уходят на сторонний сервер — распознавание выполняется на устройстве, на проверенном движке Tesseract.

Скорость ввода данных меняется качественно. Вместо цепочки «снял → отправил → дождался ответа → сверил» пользователь видит заполненные поля через 1-2 секунды после съёмки, ещё до записи в учётную систему. На пакете из нескольких десятков накладных это разница между паузой у каждого документа и непрерывной работой смены.

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

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

Режимы обработки: облако, на устройстве, гибрид

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

На практике поток почти никогда не бывает однородным: массовые типовые документы и редкие сложные бланки выгоднее вести разными контурами. Ниже — три схемы и их реальные границы применимости.

Схема Когда подходит Ограничения
Обработка в облаке Сложная вёрстка, рукописные и нестандартные бланки, где важна максимальная точность; поток документов умеренный Нужен устойчивый канал: при слабом сигнале растёт время ответа и появляются обрывы. Изображение покидает устройство — требуются явное согласие пользователя и регламент хранения на стороне сервиса
Обработка на устройстве Типовые документы с предсказуемой вёрсткой, сценарии без сети, данные с повышенными требованиями к приватности Точность на сложных бланках ниже. Модель и её обновления занимают место в сборке, на старых устройствах обработка заметно медленнее
Гибридная схема Смешанный поток: много простых документов плюс редкие сложные; нужен офлайн-отклик без потери качества Сложнее в разработке и поддержке: два контура распознавания, правила переключения и единое журналирование результатов приходится тестировать вместе

Гибрид чаще всего и выигрывает: на устройстве идёт предварительная оценка и разбор типовых случаев, в облако уходит только то, что не прошло порог уверенности. Требования к каналу связи при этом снижаются — передаётся не каждый кадр, а единицы из потока, поэтому распознавание остаётся рабочим даже на нестабильной связи, а чувствительные документы не покидают устройство. Схему фиксируем матрицей «тип документа → контур обработки» и прогоняем на реальном потоке сканов, а не на демонстрационных образцах.

Внедрение по шагам: от аудита образцов до передачи

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

  1. Аудит образцов документов. Реальные кадры: разные устройства, освещение, углы, заломы, рукописные вставки. По ним видно, какие бланки идут в потоке на самом деле, а не в описании.
  2. Эталонная разметка. Поля и классы символов размечаем вручную, спорные случаи трактуем письменно. Дальше считаем долю верно извлечённых полей, а не абстрактную точность распознавания.
  3. Выбор схемы обработки. На устройстве, на сервере или смешанная: офлайн-режим и приватность данных тянут на устройство, тяжёлые бланки и частое обновление моделей — на сервер.
  4. Настройка под типы бланков. Для каждого документа — своя зона интереса, предобработка (выравнивание, контраст, шум) и постобработка: сверка с базой, контрольные суммы, разбор неоднозначных символов.
  5. Проверка на сложных случаях. Регрессионный набор: мятые чеки, тени, повороты, смешанные языки, рукописные правки. Провал либо закрываем предобработкой, либо отдаём сценарий на ручной ввод.
  6. Пилотное внедрение. Ограниченная группа пользователей и сбор проблемных кадров из эксплуатации — так вылавливаются случаи, которых не было в исходной выборке.
  7. Приёмка качества и передача. Замер на независимом наборе, зафиксированные пороги, при низкой уверенности — ручной ввод вместо тихой ошибки. Отдаём конфигурации, разметку и наборы для регрессии.

После передачи у команды остаётся воспроизводимый конвейер: новые образцы пополняют эталонный набор, метрики видны на панели мониторинга, и деградация качества заметна до того, как её увидят пользователи.

Конфигурации, схемы и регламенты, которые остаются у вас

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

  • Профиль распознавания под каждый тип документа: состав полей, порог уверенности и правило на случай низкой уверенности — принять, отправить на ручную проверку или запросить повторный снимок.
  • Правила разбора: как извлекается каждое поле, какие проверки согласованности обязательны, какие ошибки блокируют запись в учётную систему.
  • Схема потока данных: снимок, предобработка, распознавание, проверка оператором, запись — с отметкой, где данные покидают устройство.
  • Матрица доступа и хранения: кто видит изображения и результаты, сколько они живут, что шифруется на устройстве и что стирается сразу после разбора.
  • Журналы событий: тип документа, версия профиля, уверенность по полям, время обработки и код отказа — по ним видно, просела ли точность на новом бланке.
  • Тестовый набор образцов и регламент приёмки: доля полей, разобранных без правки оператора, и граница, ниже которой выкатка новой версии блокируется.
  • Инструкция по дообучению и порядок эскалации сбоев: как добавить образцы, проверить профиль, откатить его и к кому идти при отказе.

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

Кейс: разбор накладных на складе без ручного ввода

Что было до внедрения

На складе дистрибьютора «Гарант-Логистика» приёмка выглядела так: кладовщик раскладывал бумажные накладные и вбивал позиции в терминал сбора данных вручную. Партия из 50–60 строк занимала 20–25 минут, а при мятой бумаге или слабом свете — заметно дольше. Доля строк, которые потом правили руками, держалась около трети: ошибка в артикуле всплывала уже на сверке.

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

Что изменили и что получили

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

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

Результат по замерам за квартал: доля ручных правок — с 30% до 4% строк, партия из 60 строк вместо 25 минут обрабатывается за 3–4, спорных позиций на смену — с 25–30 до 4–6. Закрытие смены укладывается в 20 минут, потому что расхождения закрываются в момент приёмки.

Чем отличается обработка на устройстве от серверной?

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

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

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

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

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

Ограничения и частые сомнения: что уточняем до старта

До старта мы фиксируем, какие сценарии приложение обязано закрывать, а где распознавание текста заведомо ошибается. Это снимает главный риск — расхождение ожиданий: точность зависит от качества съёмки, структуры документа и типа данных, а не только от выбранной технологии.

Ниже — сомнения, которые чаще всего всплывают на согласовании, и то, как мы закрываем их в архитектуре.

Насколько точно распознаются плохие снимки?

Перед разбором кадр проходит подготовку: определяются границы документа, выравнивается перспектива и наклон, подавляются тени и блики. На ровных снимках точность по печатному тексту высокая; на мятых бланках и при слабом свете мы задаём порог уверенности и отправляем сомнительные поля на ручную проверку — ошибка не уходит дальше по процессу.

Что делать с рукописными записями?

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

Где хранятся персональные данные из документов?

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

Как добавить новый тип бланка без выпуска новой версии?

Шаблон описывает зоны интереса и правила разбора, поэтому новый бланк часто добавляется настройкой. Если структура отличается сильно, нужна размеченная выборка и настройка модели — её объём оцениваем заранее, до начала работ.

Обсудим задачу: вернёмся с оценкой и планом работ

Чтобы оценка проекта была предметной, а не «плюс-минус порядок», нам нужен вход от вас: чем снимают документы, при каком свете, какие типы бланков и языки встречаются. Распознавание текста — задача, где точность определяется не моделью, а качеством входных кадров и разметкой, поэтому разбор реальных образцов даёт больше, чем любое описание требований.

Что нужно от заказчика для оценки:

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

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

Наши компетенции:

Последние работы

  • Разработка мобильного приложения для компании FEEDME
    Разработка мобильного приложения для компании FEEDME
    1010
  • Разработка мобильного приложения для компании XOOMER
    Разработка мобильного приложения для компании XOOMER
    903
  • Разработка мобильного приложения для компании RHL
    Разработка мобильного приложения для компании RHL
    1332
  • Разработка мобильного приложения для компании ZIPPY
    Разработка мобильного приложения для компании ZIPPY
    1180
  • Разработка мобильного приложения для компании Affhome
    Разработка мобильного приложения для компании Affhome
    1107
  • Разработка мобильного приложения для компании FLAVORS
    Разработка мобильного приложения для компании FLAVORS
    714