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

Проект GoldenSIM и ABBYY далек от телепортации, но сокращает эти полтора часа до полутора минут.

Пообещать проще, чем реализовать
За процессом регистрации SIM-ки стоит много бизнес-процедур и бюрократии. Возможно, поэтому до сих пор по пути автоматизации не пошли сами мобильные операторы — им необходим более гибкий партнер, способный быстро сформировать команду разработки и подстроиться под требования всех заинтересованных сторон. И в таком формате мы в GoldenSIM дошли до стадии работающего продукта.
Мы решили сделать две версии автоматического инструмента: терминал и мобильное приложение. Людям не хочется никуда специально заходить, чтобы подключить связь, а с нашими решениями они смогли бы просто и быстро активировать SIM-карту в любом месте. Терминал по нашей задумке должен устанавливаться в аэропортах, на железнодорожных вокзалах и других объектах, где есть большой поток приезжих, в том числе иностранцев. Задача терминала — сформировать абонентский договор, выдать SIM-карту и тут же зарегистрировать ее на абонента, для чего нужно сначала распознать его паспорт и извлечь из отсканированного документа данные. Мобильное приложение, конечно, SIM-карту не выдаст в любом случае, но оно должно помочь зарегистрировать нового абонента, который получил «чистую» SIM любым удобным способом. Например, в Москве и Московской области сейчас это можно сделать в ближайшей «Пятерочке» или магазинах «Лента».
В обеих версиях продукта ключевой момент — авторизация абонента. В 2018 году вступили в силу поправки в «Закон о связи», согласно которым мобильный оператор не имеет права предоставлять связь анонимным абонентам, то есть не предоставившим паспортные данные. Соответственно, при регистрации SIM-карты как терминал, так и мобильное приложение должны получить паспортные данные и убедиться, что они действительно принадлежат человеку, который обратился за услугой. Начнем с того, как мы решили эту задачу.
Читаем паспорт
На рынке есть разные решения для чтения документов и проверки их подлинности. Мы пощупали их и оценили с точки зрения интегрируемости, производительности и стабильности. В итоге в качестве партнера выбрали ABBYY с двумя технологиями: серверный SDK для извлечения данных из паспортов в терминале ID.Terminal и мобильный SDK для распознавания документов в режиме реального времени на смартфоне, уже в мобильном приложении ID.Abonent.
Выбор мы сделали не случайно.
Во-первых, ABBYY — родоначальник технологий распознавания данных, у которого есть собственная исследовательская база, а продукты постоянно развиваются. Во-вторых, это стабильная международная команда, а мы со своим терминалом прицеливались на федеральный и, возможно, даже международный уровень — так что масштаб наш. В-третьих, у ABBYY есть специалисты, которые были готовы помочь нам провести интеграцию с нашей технологической инфраструктурой.
Но главное, что технологии ABBYY работают с более чем сотней различных видов документов, т.е. SDK заточен на чтение паспортов не только Российской Федерации, но и внутренних документов стран СНГ, а также международных паспортов множества других государств, которые соответствуют спецификации документов с машиносчитываемой зоной (ICAO). На данный момент можно распознавать ID 145 различных стран.
Процесс чтения паспорта на самом деле имеет массу нюансов.
Только в России у нас есть несколько типов бланков и еще больше разновидностей внутреннего паспорта, и только один из них — с MRZ-строкой, упрощающей считывание. Паспорта (российские и заграничные) содержат множество защитных элементов: фоновая сетка, водяные знаки, голограммы, типографские рисунки и так далее. У каждого бланка — свои степени защиты, в частности, изображения, проявляющиеся в УФ/ИК-диапазонах и в видимом спектре, микротекст и вязь вокруг фотографии. На все это есть определенные стандарты. И все это нужно учитывать не только для нашей страны, но и для государств, из которых к нам приезжают гости. Например, во время тестирования в терминале был распознан паспорт жителя одного из островов в Тихом океане (чтобы увидеть это государство на Google Maps, надо очень долго скроллить!). Кроме того, надписи в документе бывают недостаточно контрастными, а ламинированное изображение и голограмма могут бликовать. Словом, автоматизировать обработку паспортов непросто.
Обеспечить качество распознаваемого изображения — это отдельная большая задача. И если в терминале мы могли контролировать качество камеры и метод съемки, то в мобильном приложении ID.Abonent пришлось пойти на хитрости.
Хотя камеры большинства современных телефонов делают неплохие фото с толстыми котами, сделать качественный снимок документа им не всегда просто. У пользователя может дрогнуть рука, на изображении появятся блики, оно окажется расфокусировано и смазано, а при плохом освещении проявятся шумы. Чтобы улучшить качество распознавания, инструменты ABBYY позволяют обрабатывать последовательность кадров, полученных от камеры устройства в режиме реального времени — при наведении смартфона на паспорт. Из них выбираются лучшие снимки, подходящие для извлечения данных. Распознавая разные кадры отдельно, а затем объединяя полученные результаты для каждого поля, можно повысить точность извлекаемых данных.
В процессе непосредственного чтения данных нам помог ABBYY PassportReader SDK, c помощью которого было реализовано распознавание документов и экспорт данных. Фактически это набор готовых шаблонов распознавания документов, удостоверяющих личность. Каждый такой шаблон указывает расположение текстовых блоков и блоков изображений на отсканированном документе. Например, шаблон для распознавания паспорта гражданина Казахстана содержит описание расположения блоков со следующими данными:
Лицевая сторона
Обратная сторона
ABBYY PassportReader SDK предоставляет два варианта доступа к распознанным данным:
  • в виде XML-строки — для сохранения результатов в базу данных или передачи по сети.
string xmlBody = result.GetXml( ... );
string xml = string.Format( "<?xml version='1.0' encoding='UTF-8'?>(0)", xmlBody);
System.IO.File.WriteAllText( fileName, xml, Encoding.UTF8 );
  • в виде набора пар «идентификатор поля — распознанное значение». Этот метод удобен для отображения результатов на экране и сохранения отдельных полей в базу данных. Именно этот вариант обработки данных мы используем в терминале.
string lastName = result.FieldValue ( "LastName", "" );
string firstName = result.FieldValue ( "FirstName", "" );
string middleName = result.FieldValue ( "MiddleName", "" );
string dateOfBirth= result.FieldValue ( "DateOfBirth", "" );
string placeOfBirth= result.FieldValue ( "PlaceOfBirth", "" );
При этом свойство Value позволяет посмотреть результат распознавания отдельного поля.
Итак, данные распознаны — время убедиться в их подлинности. Паспортные данные российских граждан сверяются по федеральным базам действующих документов. Также мы используем еще некоторые алгоритмы, позволяющие убедиться, что нас не обманули. Например, проверяем принадлежность всех страниц одному документу. Это повышает эффективность проверки паспортов.
Следующий этап — сравнить фото в паспорте с лицом человека.
Проверяем соответствие документа человеку
Вторая задача в рамках проверки подлинности документа — сверка лица человека с фотографией из паспорта при одновременной оценке вероятности, что камера видит лицо живого человека, а не распечатку, фото или видеозапись на смартфоне.
Эта задача решалась в ID.Terminal и мобильном приложении ID.Abonent по-разному.
В терминал мы имели возможность поставить любое оборудование, поэтому использовали камеру, которая на самом деле состоит из трех модулей: обычной камеры, ИК-проектора и ИК-камеры. С обычной камеры мы получаем стандартную картинку. ИК-проектор отображает на лице человека сетку в ИК-диапазоне, а ИК-камера ловит ее отражение, чтобы получить глубину. С помощью этих модулей сначала отсеиваются очевидные подделки — распечатки фотографий на глянцевой или матовой бумаге, смартфоны и планшеты (техника вообще проявляет себя особым образом в ИК-диапазоне). После этого проверяется объемная модель лица.
Так терминал Goldensim «видит» лицо пользователя
Не во всех телефонах установлены ИК-камеры, поэтому для проверки используются иные технологии и математические модели. В видимом спектре тоже можно собрать довольно много данных. Это технологии Intel, сходные с разблокировкой смартфона по лицу в режиме селфи. Но только у нас используются собственные алгоритмы, основанные на мимике, моргании, расчете перекрытия областей глаз.
В зависимости от требований сотового оператора мы либо просим человека в режиме селфи выполнить определенные хаотичные действия, под которые невозможно подстроиться — например, повернуться, наклониться, моргнуть, улыбнуться, либо переходим в фоновый режим и снимаем мимику (если оператор не готов нагружать абонента дополнительными действиями). Сам алгоритм нелинейный, он состоит из нескольких этапов обработки. Каждый из этапов дает свою оценку, участвующую в итоговой. Так, приложение принимает решение, можно ли перейти на следующий шаг оформления SIM-карты.
После того как мы убедились, что перед нами живой человек, выполняется сравнение фотографии в паспорте и лица перед терминалом. Для этого мы использовали продукт компании VisionLabs — они предоставили нам свою SDK-библиотеку для отслеживания различных параметров человеческого лица.
Казалось бы, человек редко похож на свое фото в паспорте (сколько анекдотов ходит на эту тему!). Но человеческий глаз не так эффективен, как машина. В процессе взросления человека определенные признаки остаются неизменными, так что соответствие можно проверить, даже если с фото на паспорте разница в 15 лет.
Сам процесс распознавания лица разделен на три этапа:
  • Получение фотоизображения лица интересующего человека;
  • Извлечение из фотографии набора уникальных признаков лица — биометрического дескриптора;
  • Сравнение дескрипторов, полученных с фото в паспорте, и живого лица.
В рамках наших экспериментов алгоритм давал оценку соответствия до 99%. Но в данном случае 30% соответствия — уже хороший показатель, потому что когда фото и лицо принадлежат разным людям, оценка не поднимается выше 16%. Необходимый процент соответствия определяют сами операторы.
На этом этапе в работе системы участвует back-офис. Хотя терминал и мобильное приложение выполняют довольно большую часть работы, снижая нагрузку на back-офис, итоговое решение о регистрации SIM-карты принимает именно он. Так мы можем однозначно отсечь фрод.
Честно скажу, на презентациях терминала и мобильного приложения качество решения именно задачи сверки лица с документом проверяли чаще всего. Народ-то у нас талантливый: как только слышит, что есть система, проверяющая соответствие паспорту, сразу же ищет способы ее хакнуть. Но наша ставка на технологии сработала. И терминал, и мобильное приложение проходят не только через такие кустарные эксперименты, но и через проверки служб безопасности операторов.
Самым сложным вопросом остается корректное распознавание близнецов. Человек точно не сможет определить, стоит перед ним владелец паспорта или его близнец. Решения по распознаванию лиц лучше справляются с этой задачей, но пока еще есть к чему стремиться. Разработчики совершенствуют свои системы для решения этой задачи, и та компания, которая предложит лучший инструмент, получит конкурентное преимущество на рынке. На мой взгляд, это будет настоящим прорывом для индустрии.
Подписываем договор
Еще один момент, предписанный законодательством, — собственноручная или электронная подпись абонента на договоре об оказании услуг связи. Мы хотели упростить процедуру получения подписи, и нам удалось кое-что сделать.
Мы получаем подпись клиента на чувствительном сенсорном экране, что позволяет преобразовывать ее в электронную. И в нашем случае новоиспеченный абонент просто расписывается на экране. Тут вопрос больше юридический, нежели технический. Соответствующие письма Роскомнадзора и других государственных органов не запрещают такой подход.
Стек разработки и железо
Проект разрабатывала команда из 17 человек. На исследования и проектирование у нас ушло порядка трех месяцев. Спустя полгода после проектирования у нас была готовая альфа. А еще 6 месяцев ушло на тестирование продукта и презентации. Все сроки мы закладывали с учетом того, что наши специалисты уже имели опыт выпуска софта на рынок. Если бы мы набрали под этот проект новичков, в такие рамки было бы не уложиться.
Требования мы ставили себе сами. По нашей задумке аппарат должен быть компактным, т.е. борьба шла за каждый миллиметр пространства. С другой стороны, как и у банкомата, у него должны быть определенные зоны доступа, замки и антивандальное исполнение. А еще необходимо было соблюсти требования по пожарной безопасности.
Конечно же, в процессе мы столкнулись с массой подводных камней. В терминале много различного оборудования: сканер паспорта, диспенсер SIM-карт, камера, модем и т. п. Каждую из компонент необходимо было выбрать среди 2-3 возможных претендентов, протестировать, написать к ней драйвера и заставить работать должным образом.
Больше всего сложностей у нас было с модемами. Первые просто зависали. А ведь терминал не может работать в офлайне. Каждое зависание — это остановка работы, выезд техника, перезагрузка модема и ОС терминала. Так что мы выбрали промышленный модем с поддержкой двух SIM-карт и аппаратным VPN. Это сделало систему более стабильной — выезды из-за разрыва связи сократились до минимума.
Отдельная история с диспенсером SIM-карт. Считывать штрихкод с SIM-карты, чтобы занести ее данные в договор, слишком сложно и неэффективно. Штрихкоды могут читаться с ошибками или не считываться вовсе. В этом случае SIM-карта непригодна к продаже и должна быть сброшена в специальный лоток, а это влечет за собой различные бухгалтерские ошибки (проверка / сверка по бухгалтерии). Поэтому мы считываем чип SIM-карты напрямую — подаем на нее питание, заходим в каталог чипа и извлекаем необходимые данные. В итоге при подписании договора у человека уже есть конкретный номер телефона — с помощью данных с SIM-карты мы запрашиваем его на сервере, он присваивается и вставляется в абонентский договор.
По софтовой части пришлось осуществить интеграцию специализированного оборудования с GUI и заставить все это работать в едином комплексе стабильно без сбоев. Мы использовали довольно обширный стек технологий — Delphi 10 Seattle, С#, ASP.NET WebForms, JAVA, PHP и их фреймворки — и не видим в этом никаких проблем. Требования у сотовых операторов разные, как и протоколы обмена данными. А наша задача — подстраиваться.
Все, что касается работы с железом, мы писали на Delphi с различными библиотеками. И зря вы думаете, что Delphi уже умер. Если человек профессионально на нем программирует и знает вдоль и поперек, Delphi позволяет работать с железом на очень высоком уровне. Для разработки мобильного приложения использовалась Java.
С серверной стороны задействованы C#, ASP.Net, различные Web-фреймворки. При этом клиент-серверное взаимодействие проектировалось не только с прицелом на проверку документов back-офисом, но и на упрощение обслуживания терминалов. Любое изменение тарифов мобильных операторов, корректировки в юридических адресах, правовых формах и лицензиях — это повод для обновления ПО терминала. И большая часть таких функций (в том числе перевод интерфейса на иностранные языки) у нас автоматические. Достаточно подготовить данные и запустить централизованное обновление.
Тестируем
Наш ID.Terminal уже прошел «боевую» обкатку во время прошлогоднего Чемпионата мира по футболу. Тестирование началось 14 июня 2018 года. А «подопытными» стали иностранные туристы, которые могли оформить SIM-карту на понятном им языке без обращения в офис оператора. Пользователей из-за рубежа было чуть больше, чем граждан России. Если быть точными, то из России их было 43%, а иностранцев — 57%.
Кстати, язык — это еще один плюс терминала на фоне стандартного офиса продаж. Чтобы иностранцу оформить SIM-карту в офисе, ему в любом случае придется как-то коммуницировать с сотрудниками. И если есть языковой барьер, это всегда сложно. В терминале этого барьера нет. У нас поддерживается несколько языков, в том числе английский, так что иностранец может все оформить в комфортных для себя условиях.
Надо сказать, что терминал оказался популярен. Со стороны back-офиса тестирование поддерживали несколько модераторов. Большого штата тут не потребовалось, поскольку регистрация SIM-карты — это не пополнение личного счета, тут нет миллионов транзакций.
Терминалы уже внедрены и работают в аэропортах Москвы — Домодедово, Шереметьево, Внуково — а также в инфраструктуре РЖД. Мобильное приложение ID.Abonent можно скачать с официальных маркетов, а SIM-карты, которые активируются с его помощью, можно найти даже в Аэроэкспрессе. По данным на ноябрь 2019 года, приложение скачали несколько десятков тысяч человек в Appstore и Google Play. К проекту уже подключились Tele2, Yota, Ростелеком, Cбермобайл и Лайкамобайл, Тинькофф мобайл и еще 17 операторов.
Параллельно проект продолжает развиваться. Постоянно идут обновления по софтовой части — в программном коде всегда есть что улучшать. Также мы готовим вторую версию терминала с улучшенной функциональностью. Навскидку кажется, что логичным будет добавить возможность пополнения счета. Расширение доступных услуг планируется и в терминалах первой версии, но подробности пока оставим за кадром.
Мы убеждены, что с передачей функции регистрации SIM-карты от человека к машине «серых» подключений к сотовым операторам станет меньше. У нашей компании есть не только этот бизнес, но и сеть салонов связи. Так что мы можем сравнивать и знаем, о чем говорим. Терминал, в отличие от офисов, обеспечивает операторов совершенно «белыми» контрактами. Этот аппарат может использоваться и в других областях в рамках любых услуг, которые требуют идентификации личности по паспорту, например, в каршеринге, для открытия счета в банке, покупки авиабилетов и так далее.
Процедура регистрации SIM-карт не менялась уже более двух десятков лет. В сравнении с остальными технологиями — вечность. Пока одни всерьез обсуждают возможности телепортации, другие тащатся в офис оператора или его партнера, стоят в очереди и теряют чуть ли не полчаса на том, что медленный сотрудник забивает в учетную систему паспортные данные. А потом еще примерно час ждут, пока купленная SIM-карта активируется в биллинге, чтобы с нее можно было позвонить.

Проект GoldenSIM и ABBYY далек от телепортации, но сокращает эти полтора часа до полутора минут.

Пообещать проще, чем реализовать
За процессом регистрации SIM-ки стоит много бизнес-процедур и бюрократии. Возможно, поэтому до сих пор по пути автоматизации не пошли сами мобильные операторы — им необходим более гибкий партнер, способный быстро сформировать команду разработки и подстроиться под требования всех заинтересованных сторон. И в таком формате мы в GoldenSIM дошли до стадии работающего продукта.
Мы решили сделать две версии автоматического инструмента: терминал и мобильное приложение. Людям не хочется никуда специально заходить, чтобы подключить связь, а с нашими решениями они смогли бы просто и быстро активировать SIM-карту в любом месте. Терминал по нашей задумке должен устанавливаться в аэропортах, на железнодорожных вокзалах и других объектах, где есть большой поток приезжих, в том числе иностранцев. Задача терминала — сформировать абонентский договор, выдать SIM-карту и тут же зарегистрировать ее на абонента, для чего нужно сначала распознать его паспорт и извлечь из отсканированного документа данные. Мобильное приложение, конечно, SIM-карту не выдаст в любом случае, но оно должно помочь зарегистрировать нового абонента, который получил «чистую» SIM любым удобным способом. Например, в Москве и Московской области сейчас это можно сделать в ближайшей «Пятерочке» или магазинах «Лента».
В обеих версиях продукта ключевой момент — авторизация абонента. В 2018 году вступили в силу поправки в «Закон о связи», согласно которым мобильный оператор не имеет права предоставлять связь анонимным абонентам, то есть не предоставившим паспортные данные. Соответственно, при регистрации SIM-карты как терминал, так и мобильное приложение должны получить паспортные данные и убедиться, что они действительно принадлежат человеку, который обратился за услугой. Начнем с того, как мы решили эту задачу.
Читаем паспорт
На рынке есть разные решения для чтения документов и проверки их подлинности. Мы пощупали их и оценили с точки зрения интегрируемости, производительности и стабильности. В итоге в качестве партнера выбрали ABBYY с двумя технологиями: серверный SDK для извлечения данных из паспортов в терминале ID.Terminal и мобильный SDK для распознавания документов в режиме реального времени на смартфоне, уже в мобильном приложении ID.Abonent.
Выбор мы сделали не случайно.
Во-первых, ABBYY — родоначальник технологий распознавания данных, у которого есть собственная исследовательская база, а продукты постоянно развиваются. Во-вторых, это стабильная международная команда, а мы со своим терминалом прицеливались на федеральный и, возможно, даже международный уровень — так что масштаб наш. В-третьих, у ABBYY есть специалисты, которые были готовы помочь нам провести интеграцию с нашей технологической инфраструктурой.
Но главное, что технологии ABBYY работают с более чем сотней различных видов документов, т.е. SDK заточен на чтение паспортов не только Российской Федерации, но и внутренних документов стран СНГ, а также международных паспортов множества других государств, которые соответствуют спецификации документов с машиносчитываемой зоной (ICAO). На данный момент можно распознавать ID 145 различных стран.
Процесс чтения паспорта на самом деле имеет массу нюансов.
Только в России у нас есть несколько типов бланков и еще больше разновидностей внутреннего паспорта, и только один из них — с MRZ-строкой, упрощающей считывание. Паспорта (российские и заграничные) содержат множество защитных элементов: фоновая сетка, водяные знаки, голограммы, типографские рисунки и так далее. У каждого бланка — свои степени защиты, в частности, изображения, проявляющиеся в УФ/ИК-диапазонах и в видимом спектре, микротекст и вязь вокруг фотографии. На все это есть определенные стандарты. И все это нужно учитывать не только для нашей страны, но и для государств, из которых к нам приезжают гости. Например, во время тестирования в терминале был распознан паспорт жителя одного из островов в Тихом океане (чтобы увидеть это государство на Google Maps, надо очень долго скроллить!). Кроме того, надписи в документе бывают недостаточно контрастными, а ламинированное изображение и голограмма могут бликовать. Словом, автоматизировать обработку паспортов непросто.
Обеспечить качество распознаваемого изображения — это отдельная большая задача. И если в терминале мы могли контролировать качество камеры и метод съемки, то в мобильном приложении ID.Abonent пришлось пойти на хитрости.
Хотя камеры большинства современных телефонов делают неплохие фото с толстыми котами, сделать качественный снимок документа им не всегда просто. У пользователя может дрогнуть рука, на изображении появятся блики, оно окажется расфокусировано и смазано, а при плохом освещении проявятся шумы. Чтобы улучшить качество распознавания, инструменты ABBYY позволяют обрабатывать последовательность кадров, полученных от камеры устройства в режиме реального времени — при наведении смартфона на паспорт. Из них выбираются лучшие снимки, подходящие для извлечения данных. Распознавая разные кадры отдельно, а затем объединяя полученные результаты для каждого поля, можно повысить точность извлекаемых данных.
В процессе непосредственного чтения данных нам помог ABBYY PassportReader SDK, c помощью которого было реализовано распознавание документов и экспорт данных. Фактически это набор готовых шаблонов распознавания документов, удостоверяющих личность. Каждый такой шаблон указывает расположение текстовых блоков и блоков изображений на отсканированном документе. Например, шаблон для распознавания паспорта гражданина Казахстана содержит описание расположения блоков со следующими данными:
Лицевая сторона
Обратная сторона
ABBYY PassportReader SDK предоставляет два варианта доступа к распознанным данным:
  • в виде XML-строки — для сохранения результатов в базу данных или передачи по сети.
string xmlBody = result.GetXml( ... );
string xml = string.Format( "<?xml version='1.0' encoding='UTF-8'?>(0)", xmlBody);
System.IO.File.WriteAllText( fileName, xml, Encoding.UTF8 );
  • в виде набора пар «идентификатор поля — распознанное значение». Этот метод удобен для отображения результатов на экране и сохранения отдельных полей в базу данных. Именно этот вариант обработки данных мы используем в терминале.
string lastName = result.FieldValue ( "LastName", "" );
string firstName = result.FieldValue ( "FirstName", "" );
string middleName = result.FieldValue ( "MiddleName", "" );
string dateOfBirth= result.FieldValue ( "DateOfBirth", "" );
string placeOfBirth= result.FieldValue ( "PlaceOfBirth", "" );
При этом свойство Value позволяет посмотреть результат распознавания отдельного поля.
Итак, данные распознаны — время убедиться в их подлинности. Паспортные данные российских граждан сверяются по федеральным базам действующих документов. Также мы используем еще некоторые алгоритмы, позволяющие убедиться, что нас не обманули. Например, проверяем принадлежность всех страниц одному документу. Это повышает эффективность проверки паспортов.
Следующий этап — сравнить фото в паспорте с лицом человека.
Проверяем соответствие документа человеку
Вторая задача в рамках проверки подлинности документа — сверка лица человека с фотографией из паспорта при одновременной оценке вероятности, что камера видит лицо живого человека, а не распечатку, фото или видеозапись на смартфоне.
Эта задача решалась в ID.Terminal и мобильном приложении ID.Abonent по-разному.
В терминал мы имели возможность поставить любое оборудование, поэтому использовали камеру, которая на самом деле состоит из трех модулей: обычной камеры, ИК-проектора и ИК-камеры. С обычной камеры мы получаем стандартную картинку. ИК-проектор отображает на лице человека сетку в ИК-диапазоне, а ИК-камера ловит ее отражение, чтобы получить глубину. С помощью этих модулей сначала отсеиваются очевидные подделки — распечатки фотографий на глянцевой или матовой бумаге, смартфоны и планшеты (техника вообще проявляет себя особым образом в ИК-диапазоне). После этого проверяется объемная модель лица.
Так терминал Goldensim «видит» лицо пользователя
Не во всех телефонах установлены ИК-камеры, поэтому для проверки используются иные технологии и математические модели. В видимом спектре тоже можно собрать довольно много данных. Это технологии Intel, сходные с разблокировкой смартфона по лицу в режиме селфи. Но только у нас используются собственные алгоритмы, основанные на мимике, моргании, расчете перекрытия областей глаз.
В зависимости от требований сотового оператора мы либо просим человека в режиме селфи выполнить определенные хаотичные действия, под которые невозможно подстроиться — например, повернуться, наклониться, моргнуть, улыбнуться, либо переходим в фоновый режим и снимаем мимику (если оператор не готов нагружать абонента дополнительными действиями). Сам алгоритм нелинейный, он состоит из нескольких этапов обработки. Каждый из этапов дает свою оценку, участвующую в итоговой. Так, приложение принимает решение, можно ли перейти на следующий шаг оформления SIM-карты.
После того как мы убедились, что перед нами живой человек, выполняется сравнение фотографии в паспорте и лица перед терминалом. Для этого мы использовали продукт компании VisionLabs — они предоставили нам свою SDK-библиотеку для отслеживания различных параметров человеческого лица.
Казалось бы, человек редко похож на свое фото в паспорте (сколько анекдотов ходит на эту тему!). Но человеческий глаз не так эффективен, как машина. В процессе взросления человека определенные признаки остаются неизменными, так что соответствие можно проверить, даже если с фото на паспорте разница в 15 лет.
Сам процесс распознавания лица разделен на три этапа:
  • Получение фотоизображения лица интересующего человека;
  • Извлечение из фотографии набора уникальных признаков лица — биометрического дескриптора;
  • Сравнение дескрипторов, полученных с фото в паспорте, и живого лица.
В рамках наших экспериментов алгоритм давал оценку соответствия до 99%. Но в данном случае 30% соответствия — уже хороший показатель, потому что когда фото и лицо принадлежат разным людям, оценка не поднимается выше 16%. Необходимый процент соответствия определяют сами операторы.
На этом этапе в работе системы участвует back-офис. Хотя терминал и мобильное приложение выполняют довольно большую часть работы, снижая нагрузку на back-офис, итоговое решение о регистрации SIM-карты принимает именно он. Так мы можем однозначно отсечь фрод.
Честно скажу, на презентациях терминала и мобильного приложения качество решения именно задачи сверки лица с документом проверяли чаще всего. Народ-то у нас талантливый: как только слышит, что есть система, проверяющая соответствие паспорту, сразу же ищет способы ее хакнуть. Но наша ставка на технологии сработала. И терминал, и мобильное приложение проходят не только через такие кустарные эксперименты, но и через проверки служб безопасности операторов.
Самым сложным вопросом остается корректное распознавание близнецов. Человек точно не сможет определить, стоит перед ним владелец паспорта или его близнец. Решения по распознаванию лиц лучше справляются с этой задачей, но пока еще есть к чему стремиться. Разработчики совершенствуют свои системы для решения этой задачи, и та компания, которая предложит лучший инструмент, получит конкурентное преимущество на рынке. На мой взгляд, это будет настоящим прорывом для индустрии.
Подписываем договор
Еще один момент, предписанный законодательством, — собственноручная или электронная подпись абонента на договоре об оказании услуг связи. Мы хотели упростить процедуру получения подписи, и нам удалось кое-что сделать.
Мы получаем подпись клиента на чувствительном сенсорном экране, что позволяет преобразовывать ее в электронную. И в нашем случае новоиспеченный абонент просто расписывается на экране. Тут вопрос больше юридический, нежели технический. Соответствующие письма Роскомнадзора и других государственных органов не запрещают такой подход.
Стек разработки и железо
Проект разрабатывала команда из 17 человек. На исследования и проектирование у нас ушло порядка трех месяцев. Спустя полгода после проектирования у нас была готовая альфа. А еще 6 месяцев ушло на тестирование продукта и презентации. Все сроки мы закладывали с учетом того, что наши специалисты уже имели опыт выпуска софта на рынок. Если бы мы набрали под этот проект новичков, в такие рамки было бы не уложиться.
Требования мы ставили себе сами. По нашей задумке аппарат должен быть компактным, т.е. борьба шла за каждый миллиметр пространства. С другой стороны, как и у банкомата, у него должны быть определенные зоны доступа, замки и антивандальное исполнение. А еще необходимо было соблюсти требования по пожарной безопасности.
Конечно же, в процессе мы столкнулись с массой подводных камней. В терминале много различного оборудования: сканер паспорта, диспенсер SIM-карт, камера, модем и т. п. Каждую из компонент необходимо было выбрать среди 2-3 возможных претендентов, протестировать, написать к ней драйвера и заставить работать должным образом.
Больше всего сложностей у нас было с модемами. Первые просто зависали. А ведь терминал не может работать в офлайне. Каждое зависание — это остановка работы, выезд техника, перезагрузка модема и ОС терминала. Так что мы выбрали промышленный модем с поддержкой двух SIM-карт и аппаратным VPN. Это сделало систему более стабильной — выезды из-за разрыва связи сократились до минимума.
Отдельная история с диспенсером SIM-карт. Считывать штрихкод с SIM-карты, чтобы занести ее данные в договор, слишком сложно и неэффективно. Штрихкоды могут читаться с ошибками или не считываться вовсе. В этом случае SIM-карта непригодна к продаже и должна быть сброшена в специальный лоток, а это влечет за собой различные бухгалтерские ошибки (проверка / сверка по бухгалтерии). Поэтому мы считываем чип SIM-карты напрямую — подаем на нее питание, заходим в каталог чипа и извлекаем необходимые данные. В итоге при подписании договора у человека уже есть конкретный номер телефона — с помощью данных с SIM-карты мы запрашиваем его на сервере, он присваивается и вставляется в абонентский договор.
По софтовой части пришлось осуществить интеграцию специализированного оборудования с GUI и заставить все это работать в едином комплексе стабильно без сбоев. Мы использовали довольно обширный стек технологий — Delphi 10 Seattle, С#, ASP.NET WebForms, JAVA, PHP и их фреймворки — и не видим в этом никаких проблем. Требования у сотовых операторов разные, как и протоколы обмена данными. А наша задача — подстраиваться.
Все, что касается работы с железом, мы писали на Delphi с различными библиотеками. И зря вы думаете, что Delphi уже умер. Если человек профессионально на нем программирует и знает вдоль и поперек, Delphi позволяет работать с железом на очень высоком уровне. Для разработки мобильного приложения использовалась Java.
С серверной стороны задействованы C#, ASP.Net, различные Web-фреймворки. При этом клиент-серверное взаимодействие проектировалось не только с прицелом на проверку документов back-офисом, но и на упрощение обслуживания терминалов. Любое изменение тарифов мобильных операторов, корректировки в юридических адресах, правовых формах и лицензиях — это повод для обновления ПО терминала. И большая часть таких функций (в том числе перевод интерфейса на иностранные языки) у нас автоматические. Достаточно подготовить данные и запустить централизованное обновление.
Тестируем
Наш ID.Terminal уже прошел «боевую» обкатку во время прошлогоднего Чемпионата мира по футболу. Тестирование началось 14 июня 2018 года. А «подопытными» стали иностранные туристы, которые могли оформить SIM-карту на понятном им языке без обращения в офис оператора. Пользователей из-за рубежа было чуть больше, чем граждан России. Если быть точными, то из России их было 43%, а иностранцев — 57%.
Кстати, язык — это еще один плюс терминала на фоне стандартного офиса продаж. Чтобы иностранцу оформить SIM-карту в офисе, ему в любом случае придется как-то коммуницировать с сотрудниками. И если есть языковой барьер, это всегда сложно. В терминале этого барьера нет. У нас поддерживается несколько языков, в том числе английский, так что иностранец может все оформить в комфортных для себя условиях.
Надо сказать, что терминал оказался популярен. Со стороны back-офиса тестирование поддерживали несколько модераторов. Большого штата тут не потребовалось, поскольку регистрация SIM-карты — это не пополнение личного счета, тут нет миллионов транзакций.
Терминалы уже внедрены и работают в аэропортах Москвы — Домодедово, Шереметьево, Внуково — а также в инфраструктуре РЖД. Мобильное приложение ID.Abonent можно скачать с официальных маркетов, а SIM-карты, которые активируются с его помощью, можно найти даже в Аэроэкспрессе. По данным на ноябрь 2019 года, приложение скачали несколько десятков тысяч человек в Appstore и Google Play. К проекту уже подключились Tele2, Yota, Ростелеком, Cбермобайл и Лайкамобайл, Тинькофф мобайл и еще 17 операторов.
Параллельно проект продолжает развиваться. Постоянно идут обновления по софтовой части — в программном коде всегда есть что улучшать. Также мы готовим вторую версию терминала с улучшенной функциональностью. Навскидку кажется, что логичным будет добавить возможность пополнения счета. Расширение доступных услуг планируется и в терминалах первой версии, но подробности пока оставим за кадром.
Мы убеждены, что с передачей функции регистрации SIM-карты от человека к машине «серых» подключений к сотовым операторам станет меньше. У нашей компании есть не только этот бизнес, но и сеть салонов связи. Так что мы можем сравнивать и знаем, о чем говорим. Терминал, в отличие от офисов, обеспечивает операторов совершенно «белыми» контрактами. Этот аппарат может использоваться и в других областях в рамках любых услуг, которые требуют идентификации личности по паспорту, например, в каршеринге, для открытия счета в банке, покупки авиабилетов и так далее.

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


  1. Stas911
    16.12.2019 19:11
    +4

    Близнецов различает уверенно?


    1. Slavagoa
      17.12.2019 11:11
      +2

      По-разному. Есть определенные вероятности, которые зависят от многих факторов, например освещения и положения лица объекта. У меня кстати есть брат близнец :) И если он возьмет мой паспорт, то сможет оформить кредит в банке без проблем.


  1. buriy
    16.12.2019 22:26
    +6

    А что такая система будет делать, если на чужой паспорт наклеить своё фото и прийти за симкой?


    1. Slavagoa
      17.12.2019 11:13

      Система будет проверять вклеено ли фото


      1. buriy
        17.12.2019 13:17
        +4

        Но тут, как я понимаю, надёжность сразу становится намного ниже, и это становится уязвимым местом…


        1. Slavagoa
          17.12.2019 17:33

          Не могу говорить о деталях проверок, их много. Естественно были попытки «фрода» и при разработке системы мы как раз исходили из того, что терминал будут «активно фродить», что будет предпринята попытка загубить востребованный сервис. Совместно с заинтересованными сторонами (СБ операторов) были разработаны и протестированы критерии надежности системы. Уровень надежности на самом деле достаточно высокий.


          1. buriy
            18.12.2019 20:35
            +5

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


            1. Slavagoa
              23.12.2019 16:23

              Мы это понимаем, уже на этапе проектирования думали об узких местах. Пока я не знаю такой системы, которую нельзя было обойти при определенном уровне подготовки и знания самого алгоритма разумеется…


              1. buriy
                26.12.2019 16:58

                А с судебно-доказательной точки зрения кстати есть ли разница, был ли живой человек-продавец-свидетель или нет?


      1. ipswitch
        27.12.2019 10:02

        Паспорт Украины старого образца.
        Вклеено фото. И зачастую даже не одно )
        Всё хорошо.

        image


        1. Slavagoa
          27.12.2019 16:14
          -3

          Где все хорошо? В ультрафиолете, в ИК, в видимом? Такой документ не должен быть положительно обработан


          1. H_I_R_U_R_G
            02.01.2020 14:16
            +1

            Такой документ не должен быть положительно обработан

            Почему?


  1. joyfolk
    17.12.2019 11:30
    +2

    "Пока одни всерьез обсуждают возможности телепортации, другие тащатся в офис оператора или его партнера, стоят в очереди и теряют чуть ли не полчаса на том, что медленный сотрудник забивает в учетную систему паспортные данные" — а третьи покупают esim на сайте, 1 минута и все работает. Правда, пока, не в России. Хотя на том же airalo для РФ тоже что-то вроде можно купить.


    1. mig126
      07.01.2020 07:18

      Теле2 вроде разрешили продолжить тестирование.
      Да и дальше будущее видится за esim. Т.к. технология обычных симок уже давно устарела.
      Один раз зарегистрировал(возможно даже сразу при покупке смарта) и всё.
      Единственная проблема как мне видится, это замена смартфона или покупка б.у.


  1. Sir3x
    17.12.2019 11:44
    +1

    А интегрировать с e-SIM не пробовали. Тогда и ходить никуда не придется )


    1. Slavagoa
      17.12.2019 11:58
      +1

      Думаем об этом… Так или иначе это придется делать. Но для того, чтобы начать — нужны согласованные позиции всех участников рынка, в т.ч. и регуляторов . Мы наблюдаем за этим :)


  1. Sir3x
    18.12.2019 14:37
    +3

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

    А вариант выбора желаемого номера абонентом с последующей передачей в CRM оператора не рассматривали?


    1. Slavagoa
      23.12.2019 16:26

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


  1. GoooodBoy
    20.12.2019 10:27

    Какой VPN используете? Opensource решения или проприетарные, например VipNet?


    1. Slavagoa
      23.12.2019 16:30

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


  1. Tangeman
    24.12.2019 21:38
    +1

    И терминал, и мобильное приложение проходят не только через такие кустарные эксперименты, но и через проверки служб безопасности операторов.

    Как насчёт «подставных» паспортов, которые отличить от оригинала можно только пристальным изучением различных защитных элементов (голограммы, ультрафиолет, фото на просвет etc)? Такие не всякий полицейский или даже пограничник распознает (без спецсредств), а стоят они до сотни баксов всего.


    1. C_21
      25.12.2019 14:58
      +1

      По номеру паспорта можно проверить действителен документ или нет.
      А вот как с паспортами других стран уже никак не проверить. В итоге симки в переходе просто подымутся в цене.


      1. ipswitch
        27.12.2019 10:00

        Пока нет интеграции с ФМС МВД на тему проверки, въезжал ли такой иностранец в РФ и ограничения срока действия купленной SIM-карты максимальным сроком пребывания в РФ (и снятием ограничения с получением вида на жительство или долговременное пребывание)… Вот это был бы кошмар для экспатов, водителей автобусов, дальнобоев и тех, кто живёт на Украине / в РБ / Казахстане и держит российский номер для частых поездок.
        Да, отмена роуминга внутри ТС / ЕврАзЭС тоже «просится», но при реализации ограничений из п.1 будет лишь «подслащенной пилюлей».


        1. Slavagoa
          27.12.2019 16:24

          Вы работали с «гос. банками данных», уверены что инфо в них будет актуальным на момент обращения? Уверены что у нас нет этих проверок? Уверены, что все страны договорятся такую базу создать и открыть доступ для коммерческих сервисов. Из вашей логики вытекает, иностранцам вообще надо SIM-карты перестать оформлять, т.к. проверить паспорт иностранного гражданина никто не сможеет…


  1. ipswitch
    27.12.2019 09:56
    +2

    А дальше пошёл бардак.
    GoldenSIM, ID World, ООО «МСК МОБАЙЛ»…
    Сколько там сущностей Вы ещё наплодили, меня не так интересует. В каких отношениях вы стоите с операторами? Всегда бесило это приложение ID.Abonent, сделанное под отдельное юр.лицо (не оператор), которое собирает биометрию и персональные данные абонентов и так «форсится» Пятёрочкой для активации продающихся там SIM-карт. Из принципа не буду им пользоваться. Вот к слову, с ходу первый вопрос — куплю я SIM-карту в «Пятёрочке» и НЕ БУДУ пользоваться приложением. Смогут ли мне активировать купленную SIM-карту «по старинке», в офисе соответствующего оператора?

    И второй вопрос, который реально интересует.
    КТО ВЫ ДЛЯ ОПЕРАТОРА? Дилер? Агент (суб-дилер)? Оператор выделил Вам некий «пул» номеров под такой эксперимент? Или Вы теперь поставщик решений идентификации для всех операторов по новой инициативе государства и любое новое подключение (даже в офисе оператора) будет происходить через Ваши системы?

    Наверняка ещё и бонусы за количество подключений получаете… От каждого гостя у терминала и каждого покупателя из Пятёрочки… Как на ж/д вокзале был такой весёлый кассир, по имени-отчеству Терминал Билето-Печатающий, уже третью премию подряд получает за производительность и безотказную работу…

    Ну и третий вопрос…
    Оферта на сайте…
    id.world/offer.pdf
    Она вообще «ни о чём».
    Где условия обработки персональных данных?
    Где информация о том, будут ли сохраняться все эти кадры, дескрипторы и прочее на Ваших серверах после прохождения проверки?
    Куда писать заявление об отзыве согласия на обработку ПД и как запретить Вашей компании любые действия с данными уже существующего абонента?


    1. mk2
      27.12.2019 16:56
      +1

      Не только Пятёрочкой, кстати. Ещё как минимум в "Ленте" видел.


  1. kSx
    30.12.2019 21:34
    +2

    Процедура регистрации SIM-карт не менялась уже более двух десятков лет.

    Лет семь назад пришёл к <оператору> с загранпаспортом и оформил симку. Года два назад пришёл к туда же и на загран симку оформлять отказались ввиду какого-то нового закона. Других операторов попробовал тоже. Т.е. процедура изменилась.
    Вопрос к тем, кто в курсе, — как гражданин РФ, пусть и не имеющий прописки в России (и действующего внутреннего паспорта), имею ли право оформить симку, ну или всё же тварь дрожащая (оформляем «на бомжа»)? И какова процедура для иностранцев?


    1. Ndochp
      01.01.2020 13:39
      -2

      Вроде тварь. В положении о загране «Ввести в действие паспорт гражданина Российской Федерации, удостоверяющий личность гражданина Российской Федерации за пределами территории Российской Федерации»
      четко видно, что на территории РФ не действует.
      А у иностранцев, есть свой загран, который действует за пределами родины (те в РФ), или по закону внутренний паспорт является заграном.


      1. kSx
        02.01.2020 14:06

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


    1. mk2
      01.01.2020 16:34
      -1

      И кстати, а почему бы вам просто не оформить внутренний паспорт? Получить его можно и по месту обращения. При этом ни постоянная, ни временная регистрация не требуется.


  1. anonymous
    00.00.0000 00:00