הטמעת בדיקת אותנטיות מסמכים מבוססת AI (אנטי-הונאה) באפליקציות מובייל
דרכונים מזויפים המודפסים במדפסות לייזר עוברים בדיקות OCR בסיסיות ב-30–40% מהמקרים לפי דוחות בתעשייה. זה לא איום תיאורטי—אלה בקשות הלוואה אמיתיות, רישומי חשבונות, ותהליכי קליטת עובדים עם מסמכים מזויפים. אנו רואים שכללים קלאסיים (התאמת MRZ לאזור החזותי, פורמט תאריך) אינם מספיקים. יש צורך בשכבת ML כדי לזהות מה שהכללים מפספסים. הניסיון שלנו מראה שהתוצאות הטובות ביותר מגיעות משילוב של מודל CNN עם אימות גיאומטרי. ניתן להזמין אינטגרציה סוהרת מ-3 שבועות.
מה בדיוק בודק מודל ה-AI?
אימות אותנטיות מסמכים במכשיר נייד משלב מספר אותות עצמאיים:
ניתוח מרקם וחפצי הדפסה. דרכון אמיתי מודפס במכבש אינטגליו עם אלמנטים מישושיים ומבנה חצי-טון ספציפי. לסריקה או תמונה של הדפסה יש חפצי JPEG האופייניים למדפסות ביתיות: חסימה בגיוש, אובדן מיקרו-הדפסה, בהירות אחידה במקום שבו צריכים להיות צללי תבליט. CNN שאומן על דוגמאות כאלה מפיק forgery_score כערך רציף—לא בינארי "מזויף/אמיתי".
עקביות גיאומטרית. שדות טקסט בדרכון אמיתי ממוקמים בפיקסלים מדויקים יחסית לסמנים פיזיים. טרנספורמציית הומוגרפיה מיישרת את המסמך למישור תקני, ואז שדות MRZ, תמונה, ותאריך לידה מושווים לתבנית באמצעות מטריצה אפינית. סטייה >2px מהתבנית היא אזהרה; >5px מצביעה על סבירות גבוהה לעריכה.
אימות צולב בין שדות. השם ב-MRZ חייב להתאים לאזור החזותי, תאריך הלידה חייב להתאים לספרת הביקורת של MRZ (אלגוריתם ISO 7501-1), ומספר המסמך חייב להיבדק מול מאגרי מסמכים אבודים/פסולים (אם מחובר ל-API חיצוני, למשל Interpol I-24/7 או רגיסטרים לאומיים).
איך לבחור בין עיבוד במכשיר לעיבוד בשרת?
הבחירה תלויה בדרישות פרטיות וזמן השהיה:
| היבט | במכשיר (CoreML / TFLite) | בשרת |
|---|---|---|
| זמן השהיה | 300–800 אלפיות שנייה | 1–3 שניות |
| פרטיות | הנתונים לא עוזבים את המכשיר | דורש העברת תמונה |
| גודל מודל | 5–50 מגה-בייט באפליקציה | ללא מגבלות |
| רעננות מודל | OTA דרך CoreML Model Deployment | פריסת שרת |
| עבודה לא מקוונת | כן | לא |
לרוב תרחישי KYC אנו משתמשים בגישה היברידית: מודל במכשיר מבצע בדיקות ראשוניות מהירות (איכות צילום, חפצים בסיסיים), והסקת אנטי-זיוף כבדה בשרת עם GPU. המשתמש רואה מחוון התקדמות במקום לחכות 3 שניות לפני כל פעולה.
מדדי זיוף אופייניים והזיהוי שלהם
| מדד זיוף | שיטת זיהוי | רגישות |
|---|---|---|
| חפצי JPEG בגיוש | ניתוח מרקם CNN | גבוהה |
| הזזת שדה טקסט >2px | הומוגרפיה + השוואה אפינית | בינונית |
| אי-התאמה בין MRZ לאזור חזותי | אימות צולב NLP | גבוהה |
| מיקרו-הדפסה חסרה | זיהוי תבניות בתדר גבוה | בינונית |
פריסת מודל CoreML ב-iOS
צינור עבודה בסיסי ל-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// Загрузка модели 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 (Apple Neural Engine) ב-A14+ מעבד מסמך בגודל 224×224 בכ-40 אלפיות שנייה. ב-iPhone SE דור 2 ללא ANE—כ-350 אלפיות שנייה. ההבדל משמעותי; יש להתאים את סף ANE למכשיר המינימלי הנתמך.
עדכוני מודל דרך computeUnits ב-CloudKit או נקודת קצה מותאמת עם קובץ CoreML Model Deployment חתום. הימנעו מקידוד קשיח של המודל ב-bundle אם מתוכננים עדכונים—גודל ה-IPA גדל וכל עדכון מודל דורש שחרור גרסה.
TensorFlow Lite באנדרואיד
יישום אנדרואיד דרך 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 עם בחירת מאיץ אוטומטית עדיף שם.
אימון מודל וכיוונון עדין
מודלים ציבוריים לאנטי-זיוף מוגבלים ומתיישנים במהירות—רמאים מסתגלים. אנו מאמנים על נתונים סינתטיים: מסמכים אמיתיים + זיופים מוגברים (דחיסת JPEG, רעש גאוסי, סימולציית PrintScan דרך .mlmodel). ארכיטקטורה—EfficientNet-B0 או MobileNetV3 לאיזון בין דיוק למהירות.
לאחר פריסה, לולאת משוב היא קריטית: מסמכים עם 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" גבולי (0.4–0.6) נשלחים לסימון ידני על ידי מפעילים והדרכה מחדש. ללא זה, המודל מתדרדר על תבניות זיוף חדשות תוך 3–6 חודשים.
מה כלול
- ביקורת סוגי מסמכים ותרחישי שימוש.
- איסוף וסימון מערך נתונים (דוגמאות אמיתיות + סינתטיות).
- אימון ואימות מודל (EfficientNet/MobileNet).
- המרה ל-CoreML / TFLite עם אופטימיזציה למכשירי יעד.
- אינטגרציה לאפליקציית מובייל (iOS/Android).
- הקמת צינור עדכוני מודל (OTA).
- תיעוד והדרכת צוות.
- תמיכה טכנית ל-3 חודשים לאחר ההשקה.
שלבי יישום
ביקורת סוגי מסמכים ותרחישים → איסוף מערך נתונים → אימון/אימות → המרה ל-CoreML / TFLite → אינטגרציה ללקוח הנייד → בדיקת A/B עם מאמת אנושי → כיוונון סף → ייצור → ניטור סחיפה.
לוחות זמנים: אינטגרציה של מודל מוכן ללא הדרכה מחדש—מ-3 שבועות. מחזור מלא (מערך נתונים, אימון, אינטגרציה למובייל, לולאת משוב)—2–4 חודשים. עלות מחושבת באופן אישי.
השלמנו יותר מ-50 פרויקטי אנטי-הונאה עם ניסיון של למעלה מ-5 שנים. צרו קשר להערכת פרויקט—קבלו ייעוץ.







