אימות פנים 1:1 ל-KYC ואפליקציות מובייל: פיתוח מקצה לקצה

דחיות שגויות בבדיקת פנים פוגעות בהמרות ומרגיזות לקוחות. אנו מפתחים אימות פנים 1:1 מקצה לקצה — מבחירת שיטת ההשוואה ועד להטמעה באפליקציית המובייל. אנו מכיילים ספים כך ששיעור הדחיות השגויות יצטמצם, והבדיקה תעבור בניסיון הראשון.

תחומי פיתוח AI

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1365
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

אימות פנים 1:1: היכן זיהוי נשבר

אימות פנים 1:1 משווה צילום חי מול תמונת ייחוס מהמסמך או מהפרופיל ועונה על שאלה אחת: האם זה אותו אדם או לא. הוא נשבר לא במודל עצמו, אלא בנתוני הקלט. נבחן כשלים אופייניים שגורמים לעלייה בסירובים שגויים ולירידה באמון בשירות.

המקור הראשון לשגיאות — איכות הצילום. מצלמה קדמית בחדר חשוך, תאורה אחורית מחלון, חשיפת יתר מפלאש, טשטוש בתנועה — כל אלה מרחיקים את התמונה מהתנאים שעליהם אומן המודל. דחיסה באפליקציית מסרים או בהעלאה דרך רשת סלולרית מוסיפה ארטיפקטים בלוקיים, והשוואה 1:1 מתחילה לבלבל בין אנשים דומים.

בנפרד פוגעת הזווית: סיבוב ראש של יותר מ-20-30 מעלות, הטיה, מבט הצידה — תמונת הייחוס והצילום נמצאים בגיאומטריות שונות, והמרחק בין המאפיינים גדל בלי שום החלפת זהות.

הקבוצה השנייה של כשלים — החלפת מצלמה וזרם. מצלמות וירטואליות, אמולטורים, שידור חוזר של וידאו שהוקלט מראש, החלפת פריים ברמת הדרייבר או יירוט הזרם בין המצלמה לאפליקציה. אם הבדיקה סומכת רק על התמונה, היא לא מבחינה בין לכידה חיה לבין זו המוצבת. לכן השוואה 1:1 תמיד הולכת יחד עם בדיקת חיות ופיקוח על שלמות הזרם — אחרת אימות פנים הופך לפורמליות.

השלישי — ירידה בביצועים במכשירים חדשים. מודל שאומן על דור אחד של מצלמות מאבד דיוק בחיישנים חדשים עם העברת צבע אחרת, הפחתת רעש וגיאומטריית עדשה שונה. היצרן משנה את עיבוד הפריים, אבל סף ההשוואה נשאר כשהיה — ושיעור הסירובים השגויים גדל סתם כך.

אנחנו סוגרים את זה בשלב התכנון: מתאימים ספים לתנאי הצילום האמיתיים, מוסיפים בקרת איכות פריים לפני ההשוואה והגנה מפני החלפת מצלמה. בהמשך — איך זה בנוי בעבודה.

מה נותנת אימות פנים שנבנה נכון

אימות פנים שנבנה נכון נמדד לא לפי עצם ההטמעה, אלא לפי ארבעה מספרים: שיעור המעברים המוצלחים בניסיון הראשון, זמן התגובה להחלטה, שיעור הפניות שעברו לבדיקה ידנית, ועמידות בפני החלפה. מדדים אלה קשורים זה לזה — שיפור של אחד בלי בקרה על האחרים כמעט תמיד שובר את זה שלצידו.

דיוק ההשוואה מכוונן למשימה, ולא נלקח "כברירת מחדל". סף הדמיון נבחר לפי מטריצת שגיאות: התאמה שגויה (החמצנו מישהו זר) ואי-התאמה שגויה (דחינו מישהו שלנו) имеют מחיר שונה עבור KYC ועבור כניסה לאפליקציה.

בסף מכויל, שיעור המעברים המוצלחים בניסיון הראשון נשמר ברמה שבה התמיכה לא שוקעת בפניות "לא מזהה אותי", ושירות הבקרה לא מטפל במקרים שנויים במחלוקת באופן ידני.

זמן התגובה הוא לא רק מהירות ההשוואה, אלא כל מסלול הבקשה: צילום הפריים, בדיקת האיכות, חילוץ המאפיינים, השוואה לתבנית, ותשובה. כאשר השלבים הכבדים מבוצעים על המכשיר, ורק התוצאה נשלחת לשרת, התגובה מסתכמת בשברירי שנייה אפילו בערוץ חלש, והתבנית הביומטרית לא יוצאת מהמתחם המאובטח.

בדיקה ידנית היא לא ויתור על אוטומציה, אלא הביטוח שלה. אם המערכת מעבירה למפעיל ביושר רק מקרים גבוליים, שיעור הבדיקות הידניות יורד לאחוזים בודדים, וכל מקרה כזה מגיע עם הקשר ברור: מדוע הסף הופעל, מה הראתה הבדיקה לזיהוי החלפה. אחרת המפעיל הופך לצוואר בקבוק, וזמן התגובה ללקוח גדל באופן ליניארי עם הזרימה.

העמידות בפני החלפה נבנית במספר שכבות: בדיקת חיות חוסמת תמונות ווידאו מהמסך, ניתוח עומק ותנועות מיקרו תופס מסכות ודיפ-פייקים, והצמדה לסשן לא מאפשרת להחליף את הזרימה תוך כדי. כל שכבה מוסיפה השהיה, ולכן האיזון בין הגנה לזמן תגובה נבחר לפי פרופיל הסיכון של התרחיש הספציפי.

דרכי השוואת פנים: במכשיר, בשרת, היברידי

הבחירה בין השוואה מקומית, שרתית ותכנית היברידית אינה עוסקת בשאלה "איזה אלגוריתם מדויק יותר", אלא בשאלה היכן חי התבנית הייחוסית ומה קורה לערוץ התקשורת.

השוואה מקומית מתבצעת במכשיר: התבנית אינה יוצאת מהסמארטפון, זמן התגובה אינו תלוי ברשת, אך המודל מקובע בגרסת האפליקציה — לא ניתן לעדכן אותו ללא פרסום גרסה חדשה, ומכשירים חלשים מגבילים את המורכבות המותרת.

השוואה שרתית מסירה מגבלות אלו: המודל מתעדכן בצד השרת, האיכות עולה ללא תלות במגוון המכשירים, אך כל פריים נשלח ברשת וזמן התגובה הופך לפונקציה של ערוץ התקשורת.

תכנית היברידית מפרידה בין המשימות: זיהוי ובדיקת חיות — במכשיר, השוואה סופית — בשרת. כך מוסרת העומס מערוץ התקשורת (לא מועבר זרם פריימים, אלא קטע מוכן אחד), והפרטיות של הנתונים נשארת בשליטה — וידאו גולמי אינו נשמר, רק תוצאת הבדיקה.

אפשרות מתי מתאימה מגבלות
השוואה מקומית תרחישים לא מקוונים, דרישות מחמירות לפרטיות, ערוץ חלש או לא יציב המודל מוטבע בגרסה, עדכון רק דרך פרסום גרסת אפליקציה חדשה, תקרה למורכבות במכשירים חלשים
השוואה שרתית תרחישים מקוונים, עדכוני מודל תכופים, מגוון מכשירים הטרוגני זמן התגובה תלוי ברשת, פריימים יוצאים מהמכשיר, נדרשת הגנת ערוץ ואחסון לפי מדיניות
תכנית היברידית אפליקציות מובייל המוניות, שבהן חשובים גם זמן התגובה וגם האיכות מורכבת יותר לניפוי שגיאות: יש לאתר את השגיאה בצד המכשיר או השרת

בפועל בוחרים מצב לפי שלושה צירים: זמן תגובה מותר, דרישות לפרטיות הנתונים ותדירות עדכון המודל. אם המודל משתנה פעם ברבעון — האפשרות המקומית זולה יותר בתמיכה; אם האיכות עולה מדי חודש — שרתי או היברידי מספקים מרווח ללא פרסום גרסאות אפליקציה. מפרקים כיצד זה נסגר עבור תרחיש ספציפי.

שלבי הטמעת אימות פנים במפתח סופי

הטמעת אימות פנים אינה התקנת ספרייה, אלא התאמת תהליך לתרחיש שלכם: היכן מתבצע הלכידה, מהם תנאי הצילום, ומה עושים במקרה של כישלון. להלן הרצף שלפיו אנו מובילים את הפרויקט מהניתוח הראשוני ועד למסירה לתפעול.

  1. סקירת התרחיש. מנתחים היכן בדיוק במסלול המשתמש ממוקמת הבדיקה: אונבורדינג, כניסה לאפליקציה, אישור פעולה. מתעדים את המגבלות — תאורה חלשה, מצלמה ישנה, רשת לא יציבה — מכיוון שהן קובעות את בחירת המודל ואת לוגיקת הניסיונות החוזרים.
  2. תרשים זרימות. מתכננים כיצד הנתונים עוברים מהלקוח לפתרון ובחזרה: מה מחושב במכשיר, מה נשלח לשרת, היכן נשמרים תבניות הייחוס וכיצד מאורגן הגישה. בנפרד מתארים את ההתנהגות בעת ניתוק תקשורת ופסקי זמן.
  3. הגדרת ספים. מתאימים את רגישות ההשוואה לפרופיל הסיכון שלכם: סף מחמיר מפחית את הסבירות להחמצה שגויה, סף מקל מפחית את מספר המשתמשים הכנים שהמערכת לא זיהתה. האיזון נקבע בקונפיגורציה, לא בקוד.
  4. בדיקה על קורפוס. מריצים את הפתרון על סט של תמונות ווידאו אמיתיים מהתרחיש שלכם — עם תאורה, זוויות וסוגי מכשירים שונים. מחשבים את שיעור הזיהויים הנכונים ואת הדחיות השגויות, ובוחנים היכן המודל טועה לעתים קרובות יותר.
  5. שיפור לפי התוצאות. מתקנים ספים, מוסיפים עיבוד מקדים לפריים, ומשנים את ההנחיות למשתמש בניסיון כושל. החוזרים על המחזור עד שהמדדים מגיעים לרמה המוסכמת.
  6. אינטגרציה ובדיקת עומס. מטמיעים את המודול באפליקציה ובבקאנד שלכם, ובודקים את ההתנהגות תחת עומס שיא ובבדיקות מרובות בו-זמנית.
  7. מסירת תיעוד ותקנות. מוסרים תיאור ארכיטקטורה, הגדרות, הוראות תפעול ונוהל פעולה במקרי תקלה — כדי שהצוות יוכל לתחזק את הפתרון בלעדינו.

כל שלב מסתיים בארטיפקט שניתן לבדוק: תרשים, דוח מדדים, קונפיגורציה. תארו את התרחיש שלכם — נחזור עם הערכה ותוכנית לפי שלבים אלה.

ארטיפקטים ותיעוד לאחר ההטמעה

לאחר מסירת הפרויקט לא נשארת אצלכם "תיקייה עם קבצים", אלא מערכת עובדת: מתאר פרוס, קונפיגורציות, תרשימים ותקנות שלפיהם הצוות שלכם מתפעל אותה ללא מעורבות שלנו. להלן — סט טיפוסי לשירות אימות פנים 1:1.

  • קונפיגורציית השירות: ערכי ספי השוואה, מערך הבדיקות הפעילות (השוואת פנים, הערכת איכות הפריים, בדיקת חיות), כללי טיפול במקרים שנויים במחלוקת — הכול מוצא לפרמטרים ניתנים לעריכה, ולא מוטבע בקוד.
  • תרשים האינטגרציה: מפת הזרימות בין אפליקציית המובייל, ה-backend שלכם ומודול האימות — אילו נתונים ובאיזו צורה מועברים, היכן נשמרים תבניות ביומטריות, והיכן עובר גבול האמון.
  • מדיניות גישה: תפקידים והרשאות למפעילי בדיקה ידנית, לחשבונות שירות ולמנהלים, כללי רוטציית מפתחות והפרדה בין סביבות (בדיקה, טרום-ייצור, ייצור).
  • תקנון התפעול: סדר עדכון המודלים והספים, פעולות בעת ירידת דיוק, תוכנית נסיגה לקונפיגורציה קודמת, נקודות בקרת איכות.
  • יומן אירועים ומדדים: אילו אירועים נרשמים בלוג (ניסיון אימות, דחייה, בדיקה ידנית, שינוי ספים), באיזה פורמט וכיצד מיוצאים לניתוח תקלות ולדיווח.
  • הוראות לתמיכה: תרחישים לפניות משתמשים טיפוסיות, עץ אבחון "מדוע דחייה", סדר הסלמה אלינו בעת תקלות.
  • פרוטוקולי קבלה: מערך תרחישי בדיקה עם תוצאות ייחוס, שלפיהם אתם מקבלים את המערכת ובהמשך בודקים אותה לאחר שינויים.

את הסט מעבירים בפורמט שלכם — מאגר קוד, ויקי או בסיס ידע פנימי — כדי שהתיעוד יחיה לצד הקוד ולא יאבד. כל המתואר נשאר אצלכם: תוכלו לפתח את השירות בכוחות עצמכם או לחזור אלינו להמשך עבודה.

מקרה בוחן: הפחתת דחיות שגויות באפליקציה לנייד

מה היה לפני ההטמעה

הלקוח — אפליקציה לנייד עם אימות זהות חובה בכניסה. הבדיקה התבצעה על בסיס פריים אחד ממצלמה קדמית: המשתמש צילם סלפי, המערכת השוותה אותו לתמונה מהמסמך. על הנייר הסכמה עבדה, בפרודקשן — לא.

שיעור המעברים המוצלחים בניסיון הראשון עמד על כ-68%, וכל דחייה שלישית הייתה שגויה: האדם אמיתי, המסמך אותנטי, אך הפריים לא עבר את סף הדמיון.

מחיר הטעות — לא רק משתמש מתוסכל. דחיות שגויות עברו לבדיקה ידנית: מפעילים השוו ידנית בין הסלפי למסמך, והתור גדל מהר יותר מקצב סגירתו. זמן הבדיקה הממוצע הגיע עד 40 שניות, ועומס שיא בשעות הערב מתח את הבדיקה הידנית לשעות.

מה שינו

בנינו מחדש את צינור אימות הפנים: במקום פריים אחד — סדרה עם בקרת איכות בכל שלב. המערכת פוסלת פריימים מטושטשים ושרופים מאור לפני ההשוואה, ולא אחריה, ובוחרת את המתאים ביותר להשוואה.

סף הדמיון הפסיק להיות אחיד: הוא מתאים את עצמו לאיכות הצילום ולסוג המסמך, ולכן משתמשים אמיתיים עוברים, והחלפות — לא.

בנפרד עיבדנו מחדש את לוגיקת הבדיקה הידנית. לתור מגיעים רק מקרים שנויים במחלוקת עם סיבה ברורה לספק, ולא כל מה שלא הגיע לסף. המפעיל רואה סדרת פריימים ותגית מדוע המערכת לא החליטה בעצמה — הבדיקה הואצה בלי לאבד מהקפדנות.

מה היה לתוצאה

מדד לפני אחרי
מעברים מוצלחים בניסיון הראשון ~68% ~94%
דחיות שגויות כל שלישית מקרים בודדים
זמן בדיקה ממוצע ~40 שנ' ~6 שנ'
היקף הבדיקה הידנית התור גדל בשיא ירד פי כמה

הפרויקט מיושם על בסיס TrueTech. בנפרד בדקנו את החזרה לאחור: אם הלוגיקה החדשה נכשלת בסוג מסמכים כלשהו, הצינור חוזר לגרסה הקודמת בלי לעצור את קבלת המשתמשים.

במה שונה אימות 1:1 מחיפוש 1:N?

אימות 1:1 עונה על השאלה "האם זה אותו אדם שהוא מציג את עצמו". המערכת משווה שתי תמונות — תמונת ייחוס מהמסמך או תבנית שנשמרה מראש ופריים טרי מהמצלמה — ומחזירה דרגת דמיון. ההחלטה מתקבלת לפי סף התאמה: מעליו — "שלנו", מתחתיו — "לא אומת".

החמצה כוזבת ודחייה כוזבת מוגדרות בנפרד, וזהו מנוף המפתח לתרחיש KYC: הבנק עצמו בוחר מה יקר לו יותר — להחמיץ נוכל או לאלץ לקוח ישר לעבור בדיקה מחדש.

חיפוש 1:N פותר משימה אחרת — למצוא מי לפנינו, מתוך מאגר. כאן הפריים מושווה למיליוני תבניות, ובפלט要么 התאמה לרשומה ספציפית,要么 "לא נמצא".

השגיאה גדלה יחד עם גודל המאגר: ככל שיש יותר אנשים באינדקס, כך גדל הסיכוי להפעלה מקרית, ולכן סף ההתאמה עבור 1:N תמיד מחמיר יותר, והתוצאה כמעט תמיד נבדקת על ידי אדם. זהו כלי לדה-דופליקציה של מאגר לקוחות, בקרת גישה לאתר או חיפוש — אך לא לאימות זהות בעת אונבורדינג.

עבור KYC ואפליקציות מובייל התרחיש הוא כמעט תמיד 1:1, מכיוון שהזהות כבר הוצהרה: הלקוח הזין פרטי דרכון, צירף מסמך, ונותר להוכיח שהמצלמה רואה את אותו אדם. ההשוואה נעשית מול תמונת ייחוס מהמסמך, אין צורך במאגר — ומכאן גם אין סיכון להתאמה כוזבת עם תבנית זרה. הבדיקה מסתיימת בשניות על מכשיר הלקוח, והנתונים האישיים אינם יוצאים מגבולות הלקוח.

תכניות היברידיות נפוצות כאשר יש צורך גם לוודא שהאדם אינו רשום פעמיים. אז 1:1 מאמת זהות, ו-1:N על המאגר הפנימי תופס כפילויות — אך זהו שלב נפרד עם סף משלו ובדיקה ידנית של מקרים שנויים במחלוקת. אסור לערבב ביניהם בקריאה אחת: לתרחישים יש מחיר שגיאה שונה, והגדרת סף התאמה עבור אחד שוברת את האחר.

ספקות טכניים נפוצים לפני ההתחלה

לפני ההתחלה כמעט תמיד עולות אותן שאלות: האם איכות הנתונים מספיקה, האם יהיה צורך לבנות מחדש את התשתית, והאם ניתן לבדוק את המודל על התרחישים שלנו לפני ההפעלה. להלן תשובות ענייניות, בלי מילים כלליות.

מה לעשות אם יש לנו מעט תמונות ווידאו משלנו לאימון?

עבור אימות פנים 1:1 אין צורך במאגר גדול: המודל משווה שתי תמונות של אותו אדם, ולא מחפש אותו בין אלפים. הקריטי הוא לא הכמות אלא המגוון של התנאים: תאורה שונה, זוויות צילום, כיסויי ראש, איכות מצלמות של סמארטפונים זולים.

אנחנו אוספים סט מהתרחישים האמיתיים שלכם, משלימים אותו בסינתטיקה ובאוגמנטציה, ומחשבים מדדים על סט נפרד — כזה שהמודל לא ראה. כך אתם מקבלים הערכה הוגנת, ולא מספר יפה על נתוני האימון.

האם נצטרך לשנות את התשתית שלנו ולכתוב מחדש את האפליקציה?

לא. האימות מתחבר כשירות נפרד עם ממשק ברור: אפליקציית המובייל שולחת תמונה או וידאו קצר, ומקבלת תוצאת השוואה ורמת ודאות. זה עובד גם בענן וגם על השרתים שלכם, אם הנתונים לא אמורים לצאת מהמתחם. תרחישי הכניסה, ההרשמה ואימות המסמכים הקיימים נשארים במקומם — אנחנו משתלבים בהם, ולא שוברים אותם.

האם ניתן לבדוק את הפתרון על הנתונים שלנו לפני חתימת החוזה?

כן, וזה סדר העבודה הנכון. אתם נותנים סט אנונימי של המקרים שלכם, אנחנו מריצים אותו דרך המודל ומציגים מדדים: שיעור ההתאמות הנכונות, דחיות שגויות, החמצות שגויות. בנפרד אנחנו בוחנים את ההתנהגות על זוגות מורכבים — תאומים זהים, אנשים דומים, תמונות ישנות. לפי המספרים האלה רואים אם הפתרון מתאים לסף הסיכון שלכם, ואיפה נדרש שלב בדיקה נוסף.

איך בנויה התמיכה לאחר ההפעלה?

המודל נשחק באופן בלתי מורגש: מצלמות משתנות, תאורה משתנה, התנהגות המשתמשים משתנה. לכן אנחנו מגדירים ניטור של התפלגות הציונים ושיעור הדחיות, ומוציאים עדכונים דרך מצב צל — הגרסה החדשה פועלת תחילה במקביל לישנה. אם המדדים יורדים, החזרה לאחור אורכת דקות. אתם מקבלים לא אספקה חד-פעמית, אלא מתחם עובד עם נוהל עדכונים ברור.

בואו נדון במשימת אימות הפנים שלכם

כדי לחזור עם הערכה ותוכנית, ולא עם מילים כלליות, אנחנו צריכים להבין את תרחיש הבדיקה שלכם: היכן בדיוק מתבצעת ההשוואה — בהרשמה באפליקציה, בכניסה לאזור האישי, באישור פעולה — ומה נחשב להחמצה ומה לסירוב.

מכך תלוי סף ההתאמה, מערך הבדיקות לזיהוי זיוף, ואיך המערכת מתנהגת בתאורה לקויה, עם משקפיים או עם פנים מכוסות חלקית.

תארו את המשימה בצורה חופשית — בהמשך נבהיר פרטים ונחזור עם הערכה ותוכנית עבודה לפי שלבים.

  • היכן מתבצעת הבדיקה: אפליקציה לנייד, אזור אישי באינטרנט, נקודת הנפקה, אינטגרציה עם שירות חיצוני.
  • מה משווים: סלפי עם מסמך, שתי תמונות, תמונה עם תמונת ייחוס מהמאגר שלכם.
  • אילו מסמכים ושפות נמצאים בשימוש, האם יש דרישות רגולטור לאחסון תמונות.
  • כמויות: כמה בדיקות ביממה בשיא וכמה משתמשים במאגר.
  • שיעור המיון הידני המותר ומה לעשות עם מקרים גבוליים.
  • היכן אנחנו משתלבים: תשתית עצמאית, קונטור סגור או ענן.
  • לוחות זמנים: לאיזה תאריך נדרש תרחיש עבודה ומתי מתוכננות בדיקות עומס.

לפי התשובות האלה אנחנו מרכיבים תרשים זרימה, בוחרים מודל השוואה וספים, קובעים היכן נדרש מפעיל אנושי, ומקבעים תוכנית עם נקודות ביקורת. ההערכה מגיעה עם פירוט לפי שלבים וציון מה יידרש מצדכם — הרשאות גישה, נתוני בדיקה, איש קשר.

כתבו כמה פסקאות על התרחיש שלכם — נחזור עם הערכה ותוכנית.