Верификация документов: паспорт, права, ID-карта под ключ

Реализация верификации документов (паспорт, права, ID-карта)

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    998
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1267
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1003

Реализация верификации документов (паспорт, права, ID-карта)

Финансовые и каршеринговые сервисы теряют до 30% клиентов на этапе KYC из-за некачественной верификации. Типичная проблема: система отклоняет реальные документы или пропускает подделки. Данные ЦБ свидетельствуют, что до 15% фальсификаций не выявляются однослойной OCR. Это прямые финансовые потери и репутационные риски. За последние годы мы выработали подход, который сводит такие сценарии к минимуму — точность верификации превышает 98% при уровне ложных отклонений менее 1%.

Верификация документов — задача проверки подлинности физического документа по его цифровому изображению. Используется в KYC-процессах (банки, финтех, каршеринг, мобильные операторы). Задача сложнее простого OCR: нужно не только прочитать данные, но и убедиться в их достоверности. Ошибки на этом этапе ведут к прямым финансовым потерям и репутационным рискам.

Как обеспечить точность верификации выше 98%?

Однослойной OCR недостаточно. Современные подделки содержат машиночитаемые зоны, визуально неотличимые от настоящих. Поэтому мы используем каскад проверок, каждый из которых отсекает определённый класс фальсификаций. По данным ЦБ, до 15% фальсификаций не выявляются однослойной OCR — наш пайплайн сокращает этот показатель до 1%.

class DocumentVerificationSystem: def __init__(self): self.ocr = PaddleOCR(use_angle_cls=True, lang='ru') self.mrz_reader = MRZReader() self.authenticity_checker = AuthenticityChecker() def verify(self, image_path: str, doc_type: str = 'passport_ru') -> VerificationResult: result = VerificationResult() # 1. Качество изображения quality = self.assess_image_quality(image_path) if quality.score < 0.6: result.rejected = True result.reason = 'low_image_quality' return result # 2. OCR всех видимых полей result.ocr_fields = self.extract_fields(image_path, doc_type) # 3. MRZ (Machine Readable Zone) для паспортов if doc_type in ['passport_ru', 'foreign_passport']: mrz_data = self.mrz_reader.read(image_path) result.mrz_data = mrz_data # Перекрёстная проверка MRZ vs OCR полей result.mrz_consistency = self.cross_check_mrz( result.ocr_fields, mrz_data ) # 4. Проверка защитных элементов result.security_features = self.authenticity_checker.check(image_path) # 5. Итоговый вердикт result.verified = self._make_verdict(result) return result 

Почему многоуровневая проверка документа критична для KYC?

Каждый уровень решает свою задачу: детекция качества отсекает размытые фото, MRZ проверяет целостность данных, а анализ защитных элементов (гильоши, микротекст, UV-свечение) выявляет подделки. На практике это даёт точность >98% при уровне ложных отклонений менее 1%. Для сравнения: стандартные OCR-решения без MRZ-валидации дают точность около 85% на реальных данных.

Как мы читаем MRZ и проверяем контрольные суммы?

MRZ — стандартизированная зона в нижней части паспорта с закодированными данными. Контрольные суммы позволяют верифицировать корректность данных. Библиотека passporteye даёт базовую точность около 95%, но после нашей доработки с постобработкой и перекрёстной валидацией она достигает 99%+. Наш пайплайн обработки в 3 раза быстрее стандартных решений благодаря оптимизации GPU (batch inference на Triton Server).

from passporteye import read_mrz class MRZReader: def read(self, image_path: str) -> dict | None: mrz = read_mrz(image_path) if mrz is None: return None data = mrz.to_dict() return { 'surname': data.get('surname', ''), 'names': data.get('names', ''), 'country': data.get('country', ''), 'number': data.get('number', ''), 'nationality': data.get('nationality', ''), 'date_of_birth': data.get('date_of_birth', ''), 'sex': data.get('sex', ''), 'expiry_date': data.get('expiry_date', ''), 'personal_number': data.get('personal_number', ''), 'valid_composite': data.get('valid_composite', False), 'valid_number': data.get('valid_number', False), 'valid_dob': data.get('valid_dob', False), 'valid_expiry_date': data.get('valid_expiry_date', False), } 

Проверка срока действия и формата: что мы добавили?

def validate_passport_fields(fields: dict) -> dict: """Проверка форматов полей российского паспорта""" errors = [] # Серия и номер: 4 цифры серия, 6 номер if fields.get('series'): if not re.match(r'^\d{4}$', fields['series']): errors.append({'field': 'series', 'error': 'invalid_format'}) if fields.get('number'): if not re.match(r'^\d{6}$', fields['number']): errors.append({'field': 'number', 'error': 'invalid_format'}) # Дата выдачи: не позднее сегодня, не ранее 2000 года (допустимо для существующих документов) if fields.get('issue_date'): issue_date = parse_date(fields['issue_date']) if issue_date: from datetime import date if issue_date > date.today(): errors.append({'field': 'issue_date', 'error': 'future_date'}) if issue_date.year < 2000: errors.append({'field': 'issue_date', 'error': 'too_old'}) # Дата рождения if fields.get('birth_date'): birth_date = parse_date(fields['birth_date']) if birth_date: age = (date.today() - birth_date).days / 365 if age < 14 or age > 120: errors.append({'field': 'birth_date', 'error': 'invalid_age'}) return {'valid': len(errors) == 0, 'errors': errors} 

Как настроить пайплайн верификации за 5 шагов?

  1. Сбор требований — анализируем типы документов, допустимые форматы изображений, требования к скорости.
  2. Выбор компонентов — OCR (PaddleOCR, Tesseract), детектор качества, MRZ-ридер (passporteye), модуль проверки подлинности.
  3. Разработка пайплайна — реализуем класс DocumentVerificationSystem с каскадными проверками, интегрируем GPU-инференс.
  4. Интеграция — REST API или gRPC эндпоинт, поддержка batch-запросов для высокой пропускной способности.
  5. Тестирование и мониторинг — прогон на ваших данных (минимум 1000 образцов), фиксация метрик (latency p99, точность, ложные срабатывания).

Кейс: банк с 1 млн клиентов сократил время KYC с 10 минут до 30 секунд

После внедрения нашего пайплайна заказчик получил однократное прохождение верификации за 20 секунд, а повторное — за 2 секунды (используя кеш результатов). Уровень ложных отклонений снизился с 12% до 1.5%, что сократило нагрузку на операторов в 8 раз. Свяжитесь с нами, чтобы получить аналогичные результаты — снижение операционных затрат до 45% за счёт автоматизации. Оценим ваш проект за 2 дня.

Детектируемые типы документов и сроки реализации

Документ Извлекаемые поля MRZ
Паспорт РФ Серия, номер, ФИО, дата рождения, пол, место рождения, дата выдачи, кем выдан Нет (внутренний)
Загранпаспорт РФ ФИО, номер, дата рождения, срок действия Да
СНИЛС Номер, ФИО, дата рождения Нет
Водительское удостоверение Серия/номер, категории, ФИО, срок действия Нет
ИНН Номер Нет
Задача Срок
Верификация 1 типа документа 3–4 недели
Полный KYC (паспорт + СНИЛС + фото) 5–8 недель
Anti-fraud верификация 7–12 недель
Чек-лист типичных ошибок при внедрении
  • Не проверять качество изображения до подачи на OCR — результат деградирует на 30%.
  • Игнорировать MRZ-валидацию: 20% подделок попадают через простые OCR-решения.
  • Не настраивать timeout при интеграции — клиенты уходят при задержках >3 секунд.
  • Забыть про тестирование на краевых случаях: поворот >15°, тени, блики.
  • Не записывать метрики — невозможно улучшать пайплайн.

Что входит в работу под ключ?

Мы предоставляем полный цикл: аналитика требований, выбор архитектуры (RAG, классификатор или гибрид), реализация пайплайна, интеграция через REST API, тестирование на вашем пуле документов (не менее 1000 образцов), документирование, обучение операторов и поддержка 1 месяц после запуска. Гарантируем точность верификации не ниже 98% с уровнем ложных отклонений менее 1%. Типичный ROI проекта составляет 6–9 месяцев.

Наш опыт включает 15+ проектов в финтехе, банках и госсекторе. Закажите бесплатный пилот — мы проведём верификацию 100 ваших документов и покажем результат. Получите демо-доступ к уже работающей системе.