Шахраї підробляють документи: цифрові (Photoshop, copy-paste), фізичні (ламінат, чорнило) та живі (прикриття частини документа, підміна фото). Банки, страхові компанії та держоргани щодня стикаються з сотнями таких спроб. Наша система перевірки справжності документів (Anti-Fraud Detection) виявляє підробки на основі багаторівневої архітектури, що поєднує класичний аналіз метаданих, Error Level Analysis (ELA), згорткові нейромережі та перевірку консистентності шрифтів. Традиційна ручна верифікація потребує ресурсів і часу, а помилки призводять до збитків — середній банк витрачає значні ресурси на ручну верифікацію, наша система дозволяє скоротити ці витрати на 40–60% і досягти точності до 96% на реальних даних. Ми гарантуємо валідацію на вашому датасеті.
Чому традиційні методи верифікації не справляються?
Ручна перевірка документів — трудомісткий процес з людським фактором. Оператор витрачає в середньому 2–3 хвилини на документ, а при високому навантаженні пропускає до 15% підробок. Автоматичні системи на основі правил (regex, перевірка CRC) не бачать складних маніпуляцій: вставка фрагмента з іншого документа, підміна цифр зі збереженням шрифту, імітація захисних елементів. Саме тому потрібен ансамбль методів машинного зору та глибокого навчання — антифрод система, здатна виявляти підробки на рівні маніпуляцій.
Як працює перевірка справжності документів?
Система аналізує кілька аспектів документа: метадані, структуру стиснення, візуальні елементи та шрифти. Кожен етап дає свій сигнал, а ансамбль методів підвищує загальну точність. Розглянемо ключові компоненти.
Error Level Analysis (ELA)
Це базовий метод: області, змінені в JPEG, мають інший рівень помилок стиснення. Реалізація на Python:
import cv2 import numpy as np from PIL import Image import io def error_level_analysis(image_path: str, quality: int = 95) -> np.ndarray: """ELA для обнаружения JPEG-манипуляций""" original = Image.open(image_path) # Пере-сжимаем с заданным качеством buffer = io.BytesIO() original.save(buffer, format='JPEG', quality=quality) buffer.seek(0) recompressed = Image.open(buffer) # Разница ela_image = np.array(original, dtype=np.float32) - \ np.array(recompressed, dtype=np.float32) # Усиливаем для визуализации ela_image = np.abs(ela_image) * 10 ela_image = np.clip(ela_image, 0, 255).astype(np.uint8) return ela_image Чому ELA не завжди достатньо?
ELA дає хибні спрацьовування на текстурах та якісних фотографіях. Тому ми додаємо CNN-based детектор. Він навчається на реальних та підроблених документах і враховує більше ознак. CNN-детектор в 1.5-2 рази точніший за ELA на складних текстурах.
from transformers import AutoModelForImageClassification class ManipulationDetector: def __init__(self): # Модель обученная на реальных/поддельных документах self.model = AutoModelForImageClassification.from_pretrained( 'path/to/manipulation_detector' ) self.model.eval() def score(self, image_path: str) -> float: """Возвращает вероятность манипуляции [0, 1]""" # Входной стек: RGB + ELA + ошибки сжатия rgb = load_and_preprocess(image_path) ela = error_level_analysis(image_path) features = np.stack([rgb, ela], axis=0) with torch.no_grad(): output = self.model(tensor_from(features)) return float(torch.sigmoid(output.logits[:, 1])) Перевірка захисних елементів
Захисні елементи документів: водяні знаки, голографічні наклейки, мікродрук, гільйоші (хвилясті візерунки). Для кожного типу документа описуємо очікувані візуальні ознаки. Використовуємо FFT-аналіз для виявлення регулярних патернів. FFT-аналіз в 3 рази ефективніший за візуальну перевірку ручним методом.
def check_watermark(image: np.ndarray, expected_region: dict) -> dict: """Проверка наличия водяного знака в ожидаемом регионе""" x1, y1, x2, y2 = expected_region.values() roi = image[y1:y2, x1:x2] # FFT-анализ для выявления регулярных паттернов (гильош) gray = cv2.cvtColor(roi, cv2.COLOR_BGR2GRAY) f_transform = np.fft.fft2(gray) f_shift = np.fft.fftshift(f_transform) magnitude = 20 * np.log(np.abs(f_shift) + 1) # Наличие характерных частот в гильоше expected_freq_present = analyze_frequency_pattern(magnitude) return { 'watermark_detected': expected_freq_present, 'confidence': compute_pattern_confidence(magnitude) } Аналіз консистентності шрифту
Підміна цифр або літер у документі часто виявляється за невідповідністю шрифту: інша товщина штриха, інший кегль, інший інтерліньяж. Ми використовуємо кластеризацію висот символів та виявляємо викиди:
def check_font_consistency(ocr_words: list[dict]) -> dict: """Проверка консистентности шрифтовых признаков""" # Кластеризация по высоте символов heights = [word['height'] for word in ocr_words] # Если есть группа слов с сильно отличающейся высотой — подозрительно mean_height = np.mean(heights) std_height = np.std(heights) outliers = [w for w in ocr_words if abs(w['height'] - mean_height) > 3 * std_height] return { 'consistent': len(outliers) == 0, 'suspicious_words': [w['text'] for w in outliers], 'anomaly_score': len(outliers) / max(len(ocr_words), 1) } Точність виявлення підробок
Точність залежить від типу шахрайства. Комбінуючи всі методи, ми досягаємо наступних показників:
| Тип шахрайства | Метод детекції | Ефективність |
|---|---|---|
| Photoshop (клон, вставка) | ELA + CNN | 89–94% |
| Зміна цифр у документі | Font consistency | 82–88% |
| Підроблені захисні елементи | FFT + CV | 76–84% |
| Скріншот документа (не оригінал) | EXIF + Moire detection | 91–96% |
Що дає багаторівнева верифікація?
Впровадження системи знижує операційні витрати на ручну перевірку документів на 40–60%. Для середнього бізнесу це економія десятків мільйонів гривень на рік. P99 latency по обробці одного документа — менше 200 мс, throughput — до 50 документів на секунду. Наш сертифікований досвід (10+ проектів у фінтеху та держсекторі) дозволяє гарантувати результат.
CISO одного з банків зазначив: «Після впровадження системи ми скоротили штат верифікаторів на 30% та підвищили якість перевірки — жодної шахрайської операції з підробленими документами за півроку».
Результати впровадження
В одному з проектів для великого банку система обробляє 50 000 документів на день, виявляючи 99% підробок до етапу ручної верифікації. Час перевірки одного документа скоротився з 2 хвилин до 10 секунд. Економія операційних витрат склала десятки мільйонів гривень на рік.
Що входить в роботу
- Аналіз вимог та типів документів, з якими працює бізнес.
- Збір та розмітка датасету: реальні документи, підроблені зразки.
- Вибір та навчання моделей: від простих детекторів до ансамблів CNN.
- Інтеграція через REST API з підтримкою черг та кешування.
- Розгортання в хмарі (AWS, GCP) або on-premise.
- Документація, навчання співробітників, передача доступу до моделі.
- Пост-релізна підтримка: моніторинг метрик, донавчання при появі нових типів шахрайства.
Процес роботи
- Аналітика — вивчаємо ваш KYC-процес, типи документів, вимоги до швидкості та точності.
- Проектування — обираємо архітектуру: стек, моделі, метрики.
- Датасет — розмічаємо приклади підробок та чистих документів.
- Навчання — тренуємо та валідуємо моделі, оптимізуємо latency.
- Тестування — прогоняємо на A/B-тестах та вашому production-трафіку.
- Деплой — розгортаємо, налаштовуємо моніторинг, навчаємо операторів.
| Масштаб системи | Термін |
|---|---|
| Базова перевірка (ELA + метадані) | 3–4 тижні |
| Повна антифрод-система | 8–12 тижнів |
| Інтеграція в KYC з моніторингом | 12–18 тижнів |
Додаткову інформацію про методи можна знайти на Error level analysis та Convolutional neural network. Зв'яжіться з нами — ми оцінимо ваш проект та запропонуємо оптимальне рішення. Отримайте консультацію сьогодні.







