Как ABBYY Cloud OCR SDK помогает ловить дешёвые авиабилеты
Как знают наши постоянные читатели, некоторое время назад у нас появился ABBYY Cloud OCR SDK, сервис распознавания для разработчиков, «облачный брат» ABBYY FineReader Engine. Сервис работает настолько просто, что вашему редактору (тм) редко удаётся уговорить разработчиков написать про него пост на Хабр – технических подробностей не хватает на целую статью. Вот разве что был самый первый пост о бета-тестировании.
Сегодня мы расскажем, как использует сервис один из наших клиентов — Aviasales. Это один из крупнейших поисковиков авиабилетов в мире (на зарубежных рынках компания работает под именем JetRadar), в месяц им пользуется около 10 миллионов человек, а количество поисковых сессий в сутки приближается к миллиону. Уже довольно давно Aviasales, как и любой уважающий себя сервис, выпустил мобильные приложения для поиска и покупки авиабилетов.
Надо сказать, что «мобильные путешественники» отличаются от тех, кто планирует свои поездки на компьютере. Зачастую авиабилеты ищут и оплачивают на бегу, поэтому вводить паспортные данные получается медленнее. На заполнение стандартных полей и в более комфортной обстановке уходит от 3 до 5 минут. И это не считая обычных ошибок вроде перепутанных имен и фамилий или неправильно указанного срока действия паспорта.
В общем, разработчики Aviasales решили добавить в мобильное приложение функцию распознавания данных паспорта по фотографии и, проанализировав доступные на тот момент предложения на рынке, обратились с этой задачей к нам. Паспортные данные умеют распознавать несколько наших продуктов, партнёры остановились на веб-сервисе ABBYY Cloud OCR SDK. О том, как работает эта наша технология, вы можете почитать здесь.
Благодаря веб-API Cloud OCR SDK, добавить функциональность распознавания в мобильную версию Aviasales было легко. Поскольку от приложения требуется только уметь отправлять HTTP-запросы, распознавание можно прикрутить к приложению на любой платформе — наши партнёры для начала добавили его в мобильную версию Aviasales для iOS, в планах – Android. Поскольку сам процесс распознавания происходит на стороне сервиса, эта функциональность не увеличивает в размере дистрибутив и не высаживает батарею.
Вкратце процесс таков: в приложении Aviasales при заполнении данных пассажира можно сфотографировать паспорт или выбрать фото из галереи, файл с изображением страницы паспорта отправляется в наш сервис, он распознаёт машиночитаемую зону (machine-readable zone, MRZ) и возвращает в виде XML (фамилия, имя, номер паспорта, даты выдачи и окончания действия). Приложение разбирает ответ и сохраняет данные в iCloud, чтобы потом можно было использовать автозаполнение при каждой покупке. Поскольку MRZ имеет единый международный формат, распознавание работает на паспортах всех стран, в которых эта строка есть.
Некоторые сложности возникли поначалу с распознаванием российских внутренних паспортов. Данные внутреннего, общегражданского паспорта нужны для покупки билетов на внутрироссийские рейсы, при этом имя и фамилия пассажира в билете должны быть написаны на латинице. Латинское написание имени и фамилии берётся по-прежнему из машиночитаемой строки (MRZ), которая появилась в российских внутренних паспортах в 2011 году. Проблема заключалась в том, что информация в этой строчке кодируется особым способом: некоторые буквы русского алфавита заменяются цифрами или буквами латиницы (это кодирование называется «модернизированный клер»). Например, буква Ю превращается в 7, а Й — в Q. И именно так технология ABBYY распознавала эти символы. Эту проблему решили просто: разработчики Aviasales написали немного кода несложный скрипт со словарем, который превращает модернизированный клер в латиницу.
Для пользователя новая функциональность выглядит так: нужно зайти в раздел «Пассажиры» и нажать на кнопку «Новый пассажир». Откроется окно с формой, в верхнем правом углу которой есть иконка фотоаппарата. Нажав на эту иконку и сфотографировав паспорт (можно просто выбирать фото из памяти телефона), нужно подождать пару секунд, а после в соответствующих полях появятся паспортные данные. Пассажиру остается лишь проверить данные и нажать на кнопку «Добавить», чтобы программа его запомнила.
Да, это наша девушка и она не против, чтобы её паспорт тут показывали
Коллеги из Aviasales внедрили несколько мелких, но приятных деталей в приложение, среди которых есть уведомление пользователя об истечении срока годности документа — за несколько месяцев до этого срока.
Данные паспорта хранятся в iCloud для синхронизации между девайсами пользователя. Это абсолютно безопасно, данные не передаются и не хранятся на серверах Aviasales. Когда клиент переходит со страницы Aviasales на сайт агентства по продаже авиабилетов, ему предлагается нажать на кнопку «заполнить», чтобы не вносить все данные вручную. Но подстановка в формы при заполнении на сайтах партнеров происходит только по желанию пользователя и одобряется им каждый раз.
В заключение скажем, что разработчики Aviasales интегрировали функцию извлечения данных из фотографии паспорта всего за 2 недели.
Коллеги из Aviasales рассказывают, что автозаполнение повышает шанс «поймать» дешевый авиабилет, пока его не перехватил кто-то ещё. Мы не проверяли, но, чисто теоретически, несколько минут форы в некоторых ситуациях действительно могут сыграть свою роль, учитывая тот факт, что стоимость билетов может меняться каждые 15 минут.
Конечно, сканирование документов это, как говорят сейчас в интернете, wow-сервис и пользуются им не все, но за первые 4 месяца после появления функции автозаполнения ей воспользовались более 10 тысяч путешественников – не так уж мало. Для пользователя заполнение формы с большим количеством полей — это обычно не очень приятное занятие. А когда есть возможность просто сфотографировать, и данные сами заполнятся, это располагает к тому, чтобы все-таки добавить свои данные в приложение.