Как знают наши постоянные читатели, некоторое время назад у нас появился 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 тысяч путешественников – не так уж мало. Для пользователя заполнение формы с большим количеством полей — это обычно не очень приятное занятие. А когда есть возможность просто сфотографировать, и данные сами заполнятся, это располагает к тому, чтобы все-таки добавить свои данные в приложение.

Комментарии (16)


  1. Sioln
    13.10.2015 13:48
    +7

    Ребята, как с вами связаться?
    Нужен аналогичный функционал.

    Может, сразу ссылочку на API + цены укажете?


    1. luciana
      13.10.2015 14:24
      +1

      Написала в личку


    1. luciana
      13.10.2015 14:37
      +1

      А также: цены, API


      1. Sioln
        13.10.2015 15:34
        +1

        ocrsdk.com/plans-and-pricing
        Это я видел, но не понимаю где там кроется распознавание данных паспорта (то, что вы называете machine-readable zone, MRZ)


        1. DmitryMe
          13.10.2015 15:48

          Сейчас стоимость извлечения данных MRZ совпадает со стоимостью полнотекстового распознавания одной страницы.


        1. chronomaster
          13.10.2015 15:58
          +1

          1. Sioln
            13.10.2015 16:04

            Благодарю!


  1. bubuq
    13.10.2015 14:34

    Можно ли сканировать другие документы, например, ID-карты?


    1. DmitryMe
      13.10.2015 14:41

      Да, если они соответствуют стандарту ISO/IEC 7501-1. Подробности и примеры — в описании вызова.


  1. AxMuha
    13.10.2015 17:40

    Интересно, а зачем Авиасейлсу паспорт? Они же «метасерч», т.е. для продажи переправляют на сайт агента. Или в приложении уже научились сами броньку от имени агента создавать?


    1. DmitryMe
      13.10.2015 17:41

      Приложение использует паспортные данные для автозаполнения форм на сайте агента.


  1. Saiten
    14.10.2015 10:03
    +4

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


  1. hayk
    17.10.2015 11:36

    Подскажите, а когда появится облачное решение на базе ABBYY PassportReader SDK?


    1. DmitryMe
      19.10.2015 10:58

      Пока мы не планируем добавлять эту функциональность в наш сервис.


  1. and7ey
    18.10.2015 21:59

    Поскольку сам процесс распознавания происходит на стороне сервиса
    Это абсолютно безопасно, данные не передаются и не хранятся на серверах Aviasales

    Почему в первом случае передача паспортных данных к вам на сервер считается безопасной, при этом во втором случае передача данных на сервер Aviasales считалась бы небезопасной?

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


    1. DmitryMe
      19.10.2015 15:26

      Почему в первом случае передача паспортных данных к вам на сервер считается безопасной, при этом во втором случае передача данных на сервер Aviasales считалась бы небезопасной?
      Хотели сделать акцент на том, что данные передаются только в наш сервис распознавания. При этом передача выполняется по защищенному SSL каналу и на стороне сервиса данные автоматически удаляются вскоре после окончания обработки и не хранятся ни в нашем сервисе, ни в сервисе Aviasales.
      Кстати, решения для распознавания российских автомобильных номеров у вас нет?
      Нет, пока такого решения у нас нет.