כמעט כל עסק שמנסה להזין מסמכים בעברית למודל בינה מלאכותית נתקל באותה תופעה מוזרה: הטקסט יוצא הפוך, מספרים ותאריכים קופצים למקום הלא נכון, ולפעמים במקום עברית מתקבלות אותיות אנגלית אקראיות. זו לא תקלה במודל. זו בעיה שקורית הרבה לפני שהמסמך מגיע אליו, בשלב חילוץ הטקסט מה-PDF.
למה עברית ב-PDF יוצאת שבורה
קובץ PDF לא שומר טקסט כמו מסמך Word. הוא שומר, בגדול, איפה כל אות מצוירת על העמוד. כשמחלצים טקסט, התוכנה קוראת את האותיות בסדר שבו הן נכתבו לקובץ, והסדר הזה לא תמיד תואם את סדר הקריאה של אדם. בעברית, שנכתבת מימין לשמאל, הפער הזה הופך לבעיה של ממש.
שלוש תקלות חוזרות:
- סדר הפוך. האותיות מגיעות בסדר שבו מנוע ה-PDF פלט אותן, ולא בסדר שבו קוראים. שורה שלמה יכולה לצאת מבולגנת.
- ערבוב כיוונים. בשורה שמשלבת עברית עם מספר, תאריך או מילה באנגלית, הקטעים בכיוון הלא נכון מתערבבים זה בזה. מספר טלפון או סכום כסף יוצא עם הספרות בסדר שגוי.
- קידוד שגוי של גופנים. חלק ממחוללי ה-PDF בישראל ממפים אותיות עבריות לאותיות לטיניות דומות בטבלת התווים של הקובץ. התוצאה על המסך נראית עברית, אבל הטקסט שמחלצים הוא ג’יבריש באנגלית.
הסדר הנכון של חילוץ
הפתרון הוא לא כלי קסם אחד אלא סדר פעולות. כך אנחנו בונים חילוץ טקסט מ-PDF בעברית שמחזיק מים:
- קריאה לפי סוג המסמך. PDF עם טקסט אמיתי נקרא ישירות. PDF סרוק דורש זיהוי תווים. מסמך Word וארכיון ZIP נקראים בדרכם. אין פתרון אחד לכל הקבצים.
- תיקון קידוד גופנים לפני הכול. אם הקובץ ממפה עברית לאותיות לטיניות, מתקנים את המיפוי לפני כל עיבוד. אחרת כל שאר השלבים עובדים על ג’יבריש.
- סידור מחדש לפי מיקום פיזי. במקום להסתמך על הסדר שהקובץ פלט, מסדרים את האותיות בכל שורה לפי המיקום שלהן על העמוד, ומגלים מחדש היכן נגמרת מילה ומתחילה הבאה לפי המרווחים.
- אלגוריתם דו כיווני. מריצים על השורה את האלגוריתם הדו כיווני של יוניקוד, זה שמחזיר עברית לימין ומשאיר מספרים ואנגלית משמאל, כך שמספר טלפון נשאר קריא וסוגריים לא מתהפכים.
רק בסוף התהליך הזה יש בידיים טקסט נקי שאפשר לחפש בו או להזין אותו הלאה.
חילוץ ממוקד: לחלץ פחות, לקבל תשובה טובה יותר
יש פיתוי להזין למודל שפה את כל המסמך ולתת לו למצוא את התשובה. ברוב המקרים זו טעות. מסמך ארוך עולה יותר בכל קריאה, והדיוק דווקא יורד, כי המידע הרלוונטי טובע בתוך רעש של עמודים שלא קשורים לשאלה.
הגישה שעובדת הפוכה: קודם לחלץ מהמסמך רק את הקטעים הרלוונטיים לשאלה, ורק אותם להזין למודל. שמונים עמודים שהופכים לעמוד אחד ממוקד עולים פחות, נקראים מהר יותר, ומחזירים תשובה מדויקת יותר. שלב החילוץ הממוקד הוא לא קיצור דרך, הוא מה שהופך שימוש ב-AI על מסמכים לכדאי בכלל.
מה כדאי לזכור
אם עברית יוצאת שבורה כשאתם מזינים מסמכים למודל, הבעיה כמעט תמיד בחילוץ ולא במודל. חילוץ נכון של טקסט ונתונים ממסמכים בעברית הוא סדר פעולות מדויק: לקרוא לפי סוג הקובץ, לתקן קידוד, לסדר לפי מיקום, להריץ אלגוריתם דו כיווני, ואז לחלץ רק את מה שצריך. עשו את זה נכון, וכל מה שבא אחריו, חיפוש, סיכום או מודל שפה, פשוט יעבוד.
רוצים לחלץ נתונים ממסמכים בעברית בעסק שלכם ולא בטוחים מאיפה להתחיל? דברו איתנו, ונגיד בכנות אם יש כאן מה לאטמט.