Этот кейс будет интересен, если:
- сотрудники вручную переносят в систему данные из сканов документов
- ручной ввод замедляет работу и повышает риск ошибок
- приходится обрабатывать разные типы документов и форматы данных
- нужно безопасно работать с документами с персональными данными
В терминале агентских продаж крупной российской авиакомпании мы автоматизировали ввод данных пассажиров по фото и сканам документов. Сервис распознает данные и заполняет форму, а кассиру остается сверить результат с оригиналом.
От первого прототипа до промышленной эксплуатации прошло около трех месяцев. За несколько месяцев после запуска больше половины продающих агентов стали использовать новую функцию в ежедневной работе.
Контекст задачи
Мы развиваем терминал агентских продаж для крупной российской авиакомпании. Это веб-приложение, в котором кассиры агентств создают бронирования и выписывают билеты. Одно из направлений развития продукта — сокращать время, которое кассир тратит на рутинные операции.
При создании бронирования нужно вручную заполнить данные каждого пассажира: ФИО, дату рождения, пол, гражданство, тип, номер и срок действия документа. При этом пассажиры часто заранее присылают документы по почте или в мессенджерах. У кассира уже есть фотография или скан с нужными сведениями, но их все равно приходится переносить в систему вручную.
Мы предложили использовать для этой операции OCR, технологию оптического распознавания текста. Вместе с нашей ML-командой за две недели собрали прототип, получили положительную обратную связь и перешли к разработке версии для промышленной эксплуатации.
Зачем автоматизировать ввод данных пассажира
Ручное заполнение формы занимает время, особенно если кассир оформляет сразу несколько пассажиров. И скорость здесь влияет не только на удобство работы.
Пока кассир вводит данные группы пассажиров, выбранные места на рейсе могут выкупить. Ошибка в фамилии или номере документа потребует последующей корректировки бронирования и может привести к обращению в контакт-центр. А при обслуживании клиентов у стойки время заполнения формы влияет и на очередь.
Как работает распознавание
Перед проектированием мы посмотрели, как кассиры получают документы и работают с ними при оформлении бронирования. Отдельный сценарий для OCR не создавали: загрузку встроили непосредственно в форму пассажира.
1) Для каждого пассажира загружается свой документ
Мы отказались от массовой загрузки документов. В таком сценарии кассиру пришлось бы дополнительно сопоставлять файлы с пассажирами и отслеживать, какой документ распознан полностью, какой частично, а какой не обработан.
Вместо этого у каждого пассажира в форме есть собственная зона загрузки. Документ можно выбрать на компьютере или перетащить в окно. Терминал принимает JPEG, PNG и PDF.
2) Результат распознавания сразу виден кассиру
Распознавание занимает несколько секунд, поэтому во время обработки кассир видит индикатор процесса. После этого по каждому пассажиру появляется один из трех статусов:
- Заполнено - все обязательные поля распознаны.
- Частично заполнено - часть данных распознать не удалось. Форма сразу подсвечивает поля, которые нужно заполнить вручную.
- Не заполнено - документ обработать не удалось.
Кассир может загрузить другой файл или продолжить ввод вручную. Статусы позволяют сразу понять, что делать дальше, а ошибка распознавания не блокирует оформление: кассир может исправить или дополнить данные вручную и продолжить работу.
3) Результат можно сразу сверить с документом
Автозаполнение не отменяет проверку данных кассиром. Поэтому рядом с формой остается превью загруженного документа. Его можно увеличить и повернуть, чтобы сравнить оригинал с распознанными значениями.
Все автоматически заполненные поля остаются редактируемыми. Если сервис ошибся или не смог определить отдельное значение, кассир исправляет его в той же форме и продолжает оформление.
Какие документы поддерживает сервис
В первую версию включили четыре типа документов:
- общегражданский паспорт РФ;
- заграничный паспорт РФ;
- национальные паспорта и ID-карты иностранных граждан;
- заграничные паспорта иностранных граждан международного формата ICAO 9303.
Очередность определяли по реальной структуре продаж. Сначала охватили документы взрослых пассажиров из России и СНГ, на которых приходится больше всего бронирований, затем Китай и остальные направления.
При этом документы отличаются не только внешне. Нужные сведения в них могут быть представлены обычным текстом, в машиночитаемой зоне или в штрих-коде. Поэтому для разных типов документов сервис использует разные источники данных.
Для заграничных паспортов основной источник - MRZ, машиночитаемая зона в нижней части страницы документа. Данные из визуальной части используются как запасной вариант. Для национальных паспортов и ID-карт сервис использует MRZ или штрих-код PDF417 либо QR, если они есть, а при их отсутствии распознает визуальную зону.
Так мы не сводим обработку документа только к чтению текста с изображения, а используем доступный для конкретного типа документа источник данных.
Как работаем с персональными данными
Сервис получает изображения документов, удостоверяющих личность, поэтому требования к безопасности учитывали при проектировании самого процесса обработки. После загрузки документ проходит проверку и передается на распознавание в Yandex Vision OCR. Сам файл мы не сохраняем, а распознанные данные используем для заполнения формы пассажира и отдельно также не храним. Yandex Vision работает на инфраструктуре Yandex Cloud, которая соответствует требованиям 152-ФЗ и аттестована по первому, наивысшему уровню защищенности персональных данных УЗ-1. Переданные изображения на стороне сервиса не сохраняются и не используются для обучения моделей.
До отправки файла на распознавание система проверяет его тип и размер. Принимаются JPEG, PNG и PDF размером до 10 МБ. Формат определяется по содержимому файла, а не только по его расширению. Например, исполняемый файл, которому просто присвоили расширение .jpg, будет отклонен и не попадет в сервис распознавания.
Персональные данные не сохраняются и в логах. В них нет ФИО, номеров документов, дат рождения и других значений распознанных полей. Система фиксирует только технический результат: какие поля удалось заполнить, а какие нет.
Маскируются и названия загружаемых файлов, поскольку пользователи могут указывать в них фамилию пассажира
Как контролируем работу OCR после запуска
В Grafana собрали дашборд, который показывает количество успешных, частичных и неуспешных распознаваний в разрезе агентств и типов документов. По нему можно оценивать использование функции и видеть, с какими документами работают чаще.
Дополнительно анализируем пользовательские сценарии через Вебвизор: как кассиры работают с загрузкой документов и на каких этапах процесса есть возможности для улучшения. Так можно оценивать работу функции после релиза, не запрашивая у пользователей повторно сами документы.
Что изменилось после запуска
Для кассира. Оформление бронирования занимает меньше времени, особенно при работе с группами пассажиров. Данные из документов заполняются автоматически, кассиру остается проверить их корректность.
Для бизнеса. Быстрее проходит один из самых долгих этапов оформления, особенно при работе с группами пассажиров. Снижается и риск ошибок ручного ввода, которые приводят к корректировкам бронирований и обращениям в контакт-центр.