OCR מסמכים מתמונות: צינור איתור, תיקון וזיהוי

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

תחומי פיתוח AI

שאלות נפוצות

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

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

למה OCR של מסמכים נשבר בתמונות מהטלפון

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

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

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

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

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

מה נותן צינור זיהוי נשלט

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

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

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

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

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

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

דרכי זיהוי: ענן, סביבה מקומית, היברידי

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

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

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

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

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

שלבי הטמעה: מביקורת דגימות עד מסירה

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

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

גבולות השלבים הם נקודות בקרה: אחרי כל שלב אתם רואים תוצאה מדידה ומחליטים אם להמשיך באותה צורה.

תצורות, תרשימים ונהלים באספקה

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

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

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

מקרה בוחן: זיהוי ארכיון חוזים ותעודות משלוח

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

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

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

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

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

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

מה לעשות אם הזיהוי הוטמע חלקית

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

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

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

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

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

להשלים את הצינור זול יותר מאשר לכתוב אותו מחדש: משתנים שניים-שלושה שלבים, והשאר ממשיך לעבוד.

OCR של מסמכים: ספקות טכניים של מהנדסים

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

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

איזה דיוק זיהוי אפשר לצפות באמת?

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

האם טקסט בכתב יד מזוהה?

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

איך מעובדים חותמות וחתימות?

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

איך נבדקת איכות הזיהוי?

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

נדון במשימת הזיהוי ונחזור עם תוכנית

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

מה לשלוח לבדיקה:

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

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