Реализация AI-проверки подлинности документов (Anti-Fraud) в мобильном приложении
Поддельные паспорта, распечатанные на лазерном принтере, в последние годы проходят базовые OCR-проверки в 30–40% случаев по данным отраслевых отчётов. Это не теоретическая угроза — это реальные заявки на кредиты, регистрации аккаунтов и онбординг сотрудников с подложными документами. Мы сталкиваемся с тем, что классические правила (совпадение MRZ с визуальной зоной, формат дат) недостаточны. Нужен ML-слой, который видит то, что правила не описывают. Наш опыт показывает: лучший результат даёт комбинация CNN-модели и геометрической проверки. Вы можете заказать интеграцию под ключ от 3 недель.
Что именно проверяет AI-модель?
Проверка подлинности документа на мобильном устройстве складывается из нескольких независимых сигналов:
Анализ текстуры и артефактов печати. Настоящий паспорт напечатан на intaglio-прессе с тактильными элементами и специфической растровой структурой. Скан или фотография распечатки имеет паттерн JPEG-артефактов, характерный для бытовых принтеров: блочность на гильошировании, потеря микропечати, ровная яркость там, где должны быть рельефные тени. CNN-модель, обученная на таких примерах, выдаёт forgery_score как непрерывное значение — не бинарное «подделка/нет».
Геометрическая консистентность. Текстовые поля в реальном паспорте расположены в строгих пикселях относительно физических маркеров. Homography-трансформация выравнивает документ в стандартную плоскость, после чего поля MRZ, фото, дата рождения сравниваются с шаблоном по affine-матрице. Отклонение от шаблона >2px — тревожный сигнал, >5px — высокая вероятность редактирования.
Кросс-верификация полей. Имя в MRZ должно совпадать с визуальной зоной, дата рождения — с контрольной цифрой MRZ (алгоритм ISO 7501-1), номер документа — с базой утерянных/недействительных (если подключён внешний API, например Interpol I-24/7 или национальные реестры).
Как выбрать между on-device и server-side?
Выбор зависит от требований к приватности и latency:
| On-device (CoreML / TFLite) | Server-side | |
|---|---|---|
| Латентность | 300–800 мс | 1–3 с |
| Приватность | Данные не покидают устройство | Требует передачи изображения |
| Размер модели | 5–50 MB в приложении | Без ограничений |
| Актуальность модели | OTA-обновление через CoreML Model Deployment | Деплой на сервер |
| Офлайн | Да | Нет |
Для большинства KYC-сценариев применяем гибридный подход: on-device модель выполняет быструю первичную проверку (capture quality, базовые артефакты), тяжёлый anti-forgery inference — на сервере с GPU. Пользователь видит прогресс-индикатор, а не ждёт 3 секунды перед любым действием.
Типичные индикаторы подделки и их детекция
| Индикатор подделки | Метод проверки | Чувствительность |
|---|---|---|
| JPEG-артефакты на гильошировании | CNN-анализ текстуры | Высокая |
| Смещение текстовых полей >2px | Homography + affine-сравнение | Средняя |
| Несовпадение MRZ и визуальной зоны | Кросс-верификация (NLP) | Высокая |
| Отсутствие микропечати | Детекция высокочастотных паттернов | Средняя |
Внедрение CoreML-модели на iOS
Базовый pipeline для iOS:
// Загрузка модели let config = MLModelConfiguration() config.computeUnits = .cpuAndNeuralEngine let model = try DocumentAuthenticityModel(configuration: config) // Предобработка — нормализация и crop до Region of Interest let input = try MLMultiArray(shape: [1, 3, 224, 224], dataType: .float32) // ... заполнение пикселями из CVPixelBuffer // Инференс let prediction = try model.prediction(image: pixelBuffer) let forgeryScore = prediction.forgery_score // Float, 0.0 – 1.0 ANE (Apple Neural Engine) на A14+ обрабатывает 224×224 документ за ~40 мс. На iPhone SE 2nd gen без ANE — ~350 мс. Разница существенная, порог по computeUnits нужно адаптировать под минимально поддерживаемое устройство.
Модель обновляется через CoreML Model Deployment в CloudKit или через собственный endpoint с подписанным .mlmodel файлом. Не хардкодим модель в бандл если планируем её обновлять — размер IPA вырастет, и каждое обновление модели потребует релиза.
TensorFlow Lite на Android
Android-реализация через TFLite + GPU Delegate или NNAPI:
val options = Interpreter.Options().apply { addDelegate(GpuDelegate()) setNumThreads(4) } val interpreter = Interpreter(loadModelFile(assets, "doc_auth_v2.tflite"), options) val inputBuffer = TensorImage.fromBitmap(preprocessedBitmap) val outputBuffer = TensorBuffer.createFixedSize(intArrayOf(1, 2), DataType.FLOAT32) interpreter.run(inputBuffer.buffer, outputBuffer.buffer) val forgeryScore = outputBuffer.floatArray[1] // индекс 1 — класс "forgery" GPU Delegate снижает латентность на Snapdragon 8 Gen 1 с ~600 мс до ~90 мс для модели EfficientNet-B2. На бюджетных устройствах без GPU Delegate разница менее заметна — там лучше NNAPI с автоматическим выбором ускорителя.
Обучение и дообучение модели
Готовые модели для anti-forgery в открытом доступе ограничены и быстро устаревают — мошенники адаптируются. Мы обучаем на синтетических данных: реальные документы + аугментированные подделки (JPEG-compress, Gaussian noise, PrintScan simulation через библиотеку albumentations). Архитектура — EfficientNet-B0 или MobileNetV3 для баланса точности и скорости.
После деплоя важен feedback loop: документы с пограничным forgery_score (0.4–0.6) уходят на ручную разметку операторами и дообучение. Без этого модель деградирует на новых паттернах подделок через 3–6 месяцев.
Что входит в работу
- Аудит типов документов и сценариев использования.
- Сбор и разметка датасета (реальные + синтетические образцы).
- Обучение и валидация модели (EfficientNet/MobileNet).
- Конвертация в CoreML / TFLite с оптимизацией для целевых устройств.
- Интеграция в мобильное приложение (iOS/Android).
- Настройка pipeline обновлений модели (OTA).
- Документация и обучение команды.
- Техническая поддержка на 3 месяца после запуска.
Этапы внедрения
Аудит типов документов и сценариев → сбор датасета → обучение/валидация → конвертация в CoreML / TFLite → интеграция в мобильный клиент → A/B тест с человеческим верификатором → настройка threshold → продакшен → мониторинг drift.
Сроки: интеграция готовой модели без дообучения — от 3 недель. Полный цикл (датасет, обучение, мобильная интеграция, feedback loop) — 2–4 месяца. Стоимость рассчитывается индивидуально.
Мы реализовали более 50 проектов в области антифрода за 5+ лет работы. Свяжитесь с нами для оценки вашего проекта — получите консультацию бесплатно.







