Реалізація верифікації документів у мобільному додатку

Реалізація верифікації документів у мобільному додатку Користувач знімає паспорт, додаток розпізнає дані — здається просто, доки не зіткнешся з відблисками, кривим кадром і підробками. Ми реалізували KYC-верифікацію для фінтех-додатків і знаємо кожну точку відмови. За 5 років роботи ми провели по

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Реалізація верифікації документів у мобільному додатку
Складний
~3-5 днів

Наші компетенції:

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    897
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    784
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1219
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1081
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1004
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    600

Реалізація верифікації документів у мобільному додатку

Користувач знімає паспорт, додаток розпізнає дані — здається просто, доки не зіткнешся з відблисками, кривим кадром і підробками. Ми реалізували KYC-верифікацію для фінтех-додатків і знаємо кожну точку відмови. За 5 років роботи ми провели понад 30 проєктів, де верифікація документів була критичною ланкою. Наш стек — Swift 5.9, Kotlin, Flutter 3.x — дозволяє обрати оптимальну архітектуру під задачу.

Наприклад, для фінтех-стартапу ми впровадили верифікацію за 8 тижнів, що дозволило знизити кількість фрод-заявок на 40% та заощадити понад $9k–13k щомісяця. Зв'яжіться з нами, щоб обговорити ваш проєкт — ми підберемо оптимальне рішення та оцінимо бюджет.

Детекція та якість документа до OCR

Перший етап — переконатися, що документ потрапив у кадр правильно, без відблисків та змазування. Показувати користувачу повідомлення «занадто темно» або «нахиліть телефон» важливіше за хороший OCR — сміття на вході дає сміття на виході.

На iOS для real-time детекції прямокутника документа — Vision.VNDetectRectanglesRequest:

let request = VNDetectRectanglesRequest { request, error in guard let observations = request.results as? [VNRectangleObservation], let doc = observations.first else { return } // Перевіряємо confidence та aspect ratio для паспорта if doc.confidence > 0.9 && isValidDocumentAspectRatio(doc) { // Захоплюємо кадр captureDocument(rect: doc) } } request.minimumConfidence = 0.8 request.minimumAspectRatio = 0.5 

Для перевірки відблиску — аналіз яскравості через CIFilter.glassDistortion або кастомний Metal-шейдер. Наявність specular highlights (білі плями на ламінованій поверхні паспорта) — типова причина відмови OCR у ~15% випадків.

На Android — CameraX + MLKit DocumentScanner API (з'явився нещодавно) або OpenCV для детекції прямокутників через Imgproc.findContours.

Як ми вирішуємо проблему верифікації?

Ми комбінуємо on-device OCR та NFC-верифікацію з серверною валідацією. Такий підхід дозволяє відсікти більшість підробок на клієнті, а остаточне рішення приймати на сервері з урахуванням face matching та перевірки цифрових підписів. Наша команда має 5+ років досвіду в мобільній розробці, понад 30 реалізованих проєктів з KYC-верифікацією.

OCR: платформові vs спеціалізовані SDK

Apple Vision (VNRecognizeTextRequest) — хороша якість для латиниці та кирилиці, працює on-device:

let textRequest = VNRecognizeTextRequest { request, _ in let observations = request.results as? [VNRecognizedTextObservation] ?? [] let lines = observations.compactMap { $0.topCandidates(1).first?.string } parseDocumentFields(from: lines) } textRequest.recognitionLevel = .accurate textRequest.recognitionLanguages = ["ru-RU", "en-US"] textRequest.usesLanguageCorrection = true 

Google ML Kit Text Recognition v2 — на Android, підтримує латиницю, кирилицю, деванагарі та ще кілька скриптів. Працює on-device.

Спеціалізовані SDK: Regula Document Reader, ABBYY Mobile Capture, Scandit. Коштуют грошей, але дають кращу точність на MRZ (Machine Readable Zone) паспортів та розуміють структуру конкретних документів. Regula, наприклад, знає формати паспортів 240+ країн та забезпечує в 3 рази менше помилок на MRZ порівняно з безкоштовними SDK.

SDK Платформа Точність на MRZ Вартість Режим роботи
Apple Vision iOS ~90% Безкоштовно On-device
Google ML Kit Android ~85% Безкоштовно On-device
Regula Document Reader iOS/Android ~99% Платний On-device/Cloud

Apple Vision обробляє текст у 2 рази швидше за Google ML Kit на пристроях A13+.

MRZ: найцінніше

Machine Readable Zone — два рядки з OCR-оптимізованим шрифтом OCR-B у нижній частині паспорта або ID-картки. Саме звідти вилучаються: ім'я, номер документа, дата народження, термін дії, громадянство.

Парсинг MRZ за стандартом ICAO 9303 (реалізація — відкриті бібліотеки NFCPassportReader на iOS або MRZParser на Android):

// MRZ рядок: P<RUSLASTNAME<<FIRSTNAME<<<<<<<<<<<<<<< // Рядок 2: PA1234567<8RUS9001011M2512310<<<<<<<<<6 struct MRZData { let documentNumber: String let lastName: String let firstName: String let nationality: String let dateOfBirth: Date let expiryDate: Date let gender: Character var isChecksumValid: Bool { // Перевірка контрольних цифр за ICAO 9303 validateMRZCheckDigits(line2: rawLine2) } } 

Контрольні суми в MRZ — простий спосіб перевірити, що дані не пошкоджені при OCR. Якщо checksum не сходиться — перечитати документ, не відправляти на сервер.

NFC-верифікація біометричних паспортів

Нові паспорти (ICAO LDS1) містять NFC-чіп з біометричними даними та цифровим підписом країни-емітента. Читання чіпа — надійніша верифікація ніж OCR.

На iOS (CoreNFC, NFCTagReaderSession):

// Basic Access Control: ключ формується з MRZ let bacKey = BACKey(documentNumber: mrz.documentNumber, dateOfBirth: mrz.dateOfBirth, dateOfExpiry: mrz.expiryDate) let nfcReader = NFCPassportReader() nfcReader.readPassport(mrzKey: bacKey.key, tags: [.DG1, .DG2, .SOD]) { result in switch result { case .success(let passport): let photo = passport.passportImage // UIImage з DG2 let isValid = passport.documentSigned // перевірка сертифіката CSCA case .failure(let error): handleNFCError(error) } } 

NFC доступний лише на фізичних пристроях, iPhone 7+. На Android — NfcAdapter з PACE/BAC.

Чому важлива серверна валідація?

OCR-дані з клієнта — завжди недовірені. Фінальна верифікація відбувається на сервері: порівняння фото документа з селфі користувача через face matching API (Amazon Rekognition, Azure Face, або ГАРАНТ/Паспорт-сервіс для російських документів). Серверна перевірка дозволяє відсікти цифрові підробки та гарантує юридичну значущість даних.

Що входить до нашої роботи

  • Аудит ваших вимог та вибір оптимального стеку (SDK, платформа, серверна частина).
  • Реалізація capture-flow: детекція, контроль якості, захоплення кадру.
  • Інтеграція OCR (Apple Vision / ML Kit / спеціалізовані) та парсинг полів.
  • Підключення NFC-верифікації (якщо потрібно).
  • Серверна валідація з face matching.
  • Тестування на колекції з 100+ реальних документів різної якості.
  • Документація та рекомендації щодо підтримки.

Процес роботи

  1. Аналітика: визначення типів документів та країн.
  2. Проектування: архітектура клієнт-сервер, вибір SDK.
  3. Реалізація: інтеграція детекції, OCR, NFC.
  4. Тестування: unit, integration, acceptance на реальних даних.
  5. Деплой: публікація в App Store / Google Play, налаштування серверної частини.
  6. Підтримка: моніторинг якості OCR, оновлення SDK.

Орієнтири за термінами

Базовий OCR паспорта (MRZ + основні поля) — 1–2 тижні. Повний KYC-flow з NFC, face matching, підтримкою кількох типів документів — 6–10 тижнів. Вартість розраховується індивідуально.

Отримайте консультацію — ми оцінимо ваш проєкт та запропонуємо оптимальне рішення під ключ.