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

Користувач знімає паспорт, а застосунок розпізнає дані — але відблиски, кривий кадр і підробки перетворюють просте завдання на виклик. Ми реалізуємо верифікацію документів у мобільних застосунках під ключ: від детекції документа до OCR та NFC-перевірки. Наша команда експертів забезпечує надійне рішення з подальшою підтримкою, яке масштабується разом із вашим бізнесом.

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

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

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

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

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

Користувач знімає паспорт, додаток розпізнає дані — здається просто, доки не зіткнешся з відблисками, кривим кадром і підробками. Ми реалізували 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 тижнів. Вартість розраховується індивідуально.

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

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

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

  • Розробка мобільного додатка для компанії FEEDME
    Розробка мобільного додатка для компанії FEEDME
    1009
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    902
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1331
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1179
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1106
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    713