
Привет, Хабр! Когда речь заходит о проверке возраста для доступа к онлайн-платформам, нельзя не упомянуть один из самых очевидных сценариев — мессенджеры. Они уже давно перестали быть просто инструментами для обмена сообщениями, и для многих новых функций существуют конкретные возрастные ограничения. В этом материале мы расскажем, как за пару минут встроить распознавание паспорта для удобной верификации возраста в мини-приложении мессенджера — без биометрии, ЕБС и раскрытия личных данных. С кодом и видео. В общем, заглядывайте под кат!
Верификация возраста в мессенджерах — зачем и как это сделать
За последние несколько лет регуляторное давление на онлайн-платформы значительно возросло. Для многих финансовых сервисов, платформ для шеринга и игр, онлайн-кинотеатров или билетных агрегаторов возрастная верификация уже стала обязательным элементом контроля доступа. Для мессенджеров — с учетом интеграции новых возможностей — эта задача актуальна для предоставления доступа к определенному контенту. Сегодня такие механизмы глобально применяются, например, в WeChat, Discord, Snapchat и ряде других платформ.
Суть технической проблемы везде одинакова: нужно максимально достоверно убедиться, что пользователю действительно исполнилось N лет, причем за минимальное количество действий. Один из способов решения этой задачи — проверка возраста по удостоверяющему личность документу: паспорту, загранпаспорту или водительскому удостоверению. Этот метод позволяет подтвердить возраст без использования биометрии, раскрытия персональных данных и переходов на сторонние сервисы.
При грамотной реализации — с локальной обработкой документа на стороне клиента и возвратом токена — проверка может быть полностью анонимной. А применение антифрод-технологий и небиометрической сверки лиц дает возможность удостовериться, что пользователь не использует чужой документ, дипфейк или подделку. Вот как работают распознавание паспорта и небиометрическая сверка лиц на примере мини-приложения в Telegram:
Причем для подтверждения возраста можно предъявить не только паспорт РФ, но и удостоверяющий личность документ любой другой страны, содержащий возрастной атрибут и фото для небиометрической сверки. Подробнее об этом мы писали здесь. Теперь же перейдем к мессенджерам. Встроить туда распознавание документов можно с помощью механизма мини-приложений.
Миниаппы: когда мессенджер превращается в платформу
Мини-приложения (миниаппы) — это встроенные веб-приложения, работающие прямо внутри мессенджера. Такие приложения интегрируются с API мессенджера и используют встроенные механизмы авторизации, уведомлений и платежей. Пользователю не нужно ничего скачивать отдельно: он открывает бота или ссылку и сразу попадает в интерфейс целевого сервиса — прямо в окне мессенджера.
Сегодня миниаппы есть практически во всех социальных сетях и мессенджерах, включая VK, MAX и Telegram. Их преимущество в том, что они доступны в один тап, не требуют загрузки отдельных нативных приложений и работают везде, где есть мессенджер. С точки зрения онлайн-сервисов, миниаппы позволяют интегрировать достаточно широкий функционал классических приложений на уже готовую платформу с, как правило, большой аудиторией. Например, только у одного Telegram месячная аудитория составляет около 96 млн пользователей в России (данные Mediascope).
Кроме того, разработка мини-приложений обходится значительно дешевле нативной разработки. По сути, один веб-стек покрывает iOS, Android и десктоп одновременно. При этом компании не нужно ни поддерживать приложения в AppStore и Google Play, ни придумывать способы обхода блокировок в случае их наличия. Последняя причина особенно актуальна для российских банков, которые также активно интегрируют ежедневные клиентские сервисы в мессенджеры.
Но по-настоящему интересными миниаппы становятся, когда речь идет не просто о пользовательских сервисах, а о выполнении сложных вычислительных операций. Одной из таких операций является распознавание документов на изображениях и в видеопотоке — для интеграции проверки возраста прямо в мессенджер.
WebAssembly — ключ к распознаванию в вебе
Для переноса распознавания данных с камеры в среду мессенджеров мы в Smart Engines используем WebAssembly. Именно Wasm обеспечивает исключительную для веб-задач производительность, открывает возможности легкого интегрирования нативно исполняемых функций в веб-версии приложений и позволяет значительно упростить решение технически сложных задач прямо в браузере. Стандартные веб-страницы без дополнений в виде модулей Wasm просто не умеют получать и обрабатывать данные с камеры смартфона.
Наши технологии, запускаемые в браузере с помощью WebAssembly, позволяют обрабатывать фотографии и видеопоток с камеры непосредственно на устройстве пользователя, используя ресурсы браузера. Это дает возможность распознавать данные на устройстве самого пользователя, не передавая изображения даже на внешний сервер компании, не говоря уже об облачных сервисах. Еще в 2019 году мы добились скорости распознавания паспортов, QR-кодов и банковских карт прямо в браузере, сопоставимой с нативными SDK. Сейчас эти возможности доступны и в миниаппах. Ниже мы показываем, как это реализовать.
Реализация: код интеграции
Наш основной продукт — библиотека компьютерного зрения. Поскольку она написана на С++, для переноса кодовой базы в браузер мы используем инструмент emscripten, поддерживаемый Google. На выходе мы получаем Wasm-файл и js-файл для работы с ним.
Указываем режим распознавания и маску документа. Можно указать маску звездочкой “*”, а режим “anydoc”, тогда поиск будет выполняться по всем доступным документам.
Следующая настройка позволяет вернуть в результате изображение документа, исправленное по перспективе (утюг) и обрезанное по пропорциям физического документа.
Теперь мы инициализируем сессию.
Результат — объект с именованными полями документа: ФИО, дата рождения, серия и номер и т.д. Плюс изображения (фото, подпись, шаблон документа). Структура ответа гибкая: можно собрать JSON с нужным набором полей — с коэффициентами уверенности, с изображениями или без, с метаданными.
Повторимся, при Wasm-распознавании все происходит локально. Персональные данные и изображения документа не покидают устройство пользователя. Это принципиально отличает наш подход от решений, основанных на загрузке фото на сервер или облачный сервис для обработки.
Итоги
Как можно убедиться, интеграция технологии Smart Engines в мессенджеры осуществляется быстро и просто. Универсальность архитектуры и глубокая оптимизация нейросетевого стека позволяют встраивать распознавание документов в любой мессенджер, где есть возможность создавать сторонние мини-приложения. Таким образом, добавить верификацию возраста можно и в Telegram, и в MAX, и в VK, и в любой другой мессенджер.
Если вы разрабатываете миниапп или веб-сервис, где требуется (или может потребоваться) проверка возраста — Wasm-подход с нашим SDK позволяет решить задачу без сервера, GPU и раскрытия персональных данных.