Перейти к содержанию
Innovialabs

Распознавание паспортов и ID для KYC: как это работает

Практика4 мин

Коротко

Автоматический KYC считывает MRZ и видимые поля документа, сверяет их между собой, убеждается, что перед камерой живой человек с лицом как на фото, ищет признаки подделки и хранит минимум данных со строгим доступом.

Как устроено распознавание документов для KYC

Типичная удалённая проверка личности состоит из пяти шагов:

  1. Съёмка: пользователь фотографирует документ и делает селфи.
  2. Чтение: система считывает MRZ (машиночитаемую зону), извлекает напечатанные поля через OCR и на биометрических паспортах и современных ID-картах может прочитать NFC-чип.
  3. Проверка согласованности: данные MRZ, визуальной зоны и чипа совпадают, контрольные цифры верны, срок действия не истёк.
  4. Liveness и сравнение лиц: перед камерой живой человек, и его лицо совпадает с фото в документе.
  5. Решение и хранение: одобрить, отклонить или отправить на ручную проверку, затем сохранить только то, что требуют закон и процесс.

Ни один шаг не надёжен сам по себе. Сила KYC — в перекрёстной проверке.

MRZ: самая надёжная часть документа

MRZ — блок текста с символами < внизу страницы паспорта или на обороте ID-карты. Формат задан стандартом ICAO Doc 9303:

  • TD3 (паспорта): 2 строки по 44 символа.
  • TD1 (ID-карты): 3 строки по 30 символов.

В MRZ есть номер документа, гражданство, дата рождения, пол, срок действия и имя, а ключевые поля защищены контрольными цифрами. Поэтому ошибки OCR и грубые правки легко поймать. Цифры сохраняют значение, буквы A-Z превращаются в 10-35, < равен 0, значения умножаются на повторяющиеся веса 7, 3, 1, а сумма берётся по модулю 10.

def mrz_check_digit(field: str) -> int:
    weights = (7, 3, 1)
    total = 0
    for i, ch in enumerate(field):
        if ch.isdigit():
            value = int(ch)
        elif ch.isalpha():
            value = ord(ch.upper()) - 55  # A=10 ... Z=35
        else:
            value = 0  # '<'
        total += value * weights[i % 3]
    return total % 10

Если контрольная цифра не сходится, попросите переснять документ, а не «исправляйте» текст наугад.

Извлечение видимых полей

Поля вроде имени на национальном языке, места рождения или ПИНФЛ извлекаются в три этапа:

  • Детекция: найти границы документа, выровнять перспективу, обрезать.
  • Классификация: определить страну, тип и версию шаблона, чтобы знать, где находится каждое поле.
  • OCR по полям: распознать каждую зону с учётом ожидаемого формата (даты, латиница или кириллица, номера).

Большинство ошибок возникает из-за фото, а не модели: блики, размытие, обрезанные углы. Подсказки на экране и автоматический снимок резкого кадра помогают сильнее, чем «более умный» OCR.

Liveness и сравнение лиц

Face match сравнивает селфи с фото в документе, а лучше — с фото из чипа. Liveness подтверждает, что селфи сделано с живого человека, а не с распечатки, другого экрана, маски или сгенерированного видео, подменённого в потоке камеры.

ПодходКак работаетКомпромисс
АктивныйПользователь поворачивает голову, моргает, следит за точкойСложнее обмануть, но больше трения
ПассивныйМодель анализирует один или несколько кадровУдобнее, но нужна сильная модель и защита от подмены потока

Для рискованных сценариев комбинируйте оба подхода и защищайте канал съёмки: подмена видеопотока обходит любой анализ лица.

Проверка на подделку

  • MRZ против визуальной зоны: одинаковые имя, номер и даты.
  • Соответствие шаблону: шрифты, расположение полей, фоновые узоры этой версии документа.
  • Следы редактирования: неоднородный шум, резкие края вокруг заменённого текста или фото.
  • Съёмка с экрана: муар, пиксельная сетка, отражения монитора.
  • Защитные элементы: голограммы можно проверить на видео, наклоняя документ.
  • NFC-чип: данные подписаны государством-эмитентом; проверка подписи (Passive Authentication) — самая сильная из доступных.
  • Бизнес-правила: срок действия, дубликаты в разных аккаунтах, возрастные ограничения.

Неясные случаи уходят на ручную проверку, а не на автоодобрение.

Хранение сканов и персональных данных

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

  • Собирайте только нужное и указывайте цель в тексте согласия.
  • Проверьте местное законодательство: многие страны, включая Узбекистан, регулируют обработку персональных данных и могут требовать хранить данные граждан на серверах внутри страны.
  • Шифруйте сканы при хранении и передаче, держите ключи отдельно от хранилища.
  • Ограничьте доступ несколькими ролями и логируйте каждый просмотр скана.
  • Задайте сроки хранения и удаляйте или обезличивайте данные автоматически.
  • Маскируйте данные в логах и инструментах поддержки: полный номер паспорта не должен попадать в лог ошибок.
  • Проверяйте подрядчиков: знайте, где и сколько внешний KYC-провайдер хранит данные.

Частые вопросы

Нет. MRZ легко прочитать и проверить, но её можно перенести на поддельный документ. Её нужно сочетать с проверкой визуальных полей, liveness, сравнением лиц и, где возможно, проверкой чипа.

Поможем с этим

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

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.