רשומות אחרונות
19 באוקטובראיך לעשות דיגיטציה של טקסטים בשלושה צעדים לא פשוטים?
25 באוגוסטמצגות בימר בעברית
24 באוגוסטבני־המחצית: מודל לבניית חדר איימס הוביטי
עיון בארכיון הרשומות
קריאת רשומה אקראית
איך לעשות דיגיטציה של טקסטים בשלושה צעדים לא פשוטים?
19 באוקטובר, 2018

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

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

השיטה בנויה משלושה שלבים:

  • סריקה והפקת קובץ טקסט א׳
  • הקלדת קובץ טקסט ב׳
  • השוואה של שניהם והפקת קובץ נקי משגיאות על ידי תיקון ההבדלים בין שני הקבצים

סריקה ועיבוד

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

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

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

  • השתמשו בעותק של המקור שהוא נקי ובמצב טוב. ככל שהחומר שאתם עובדים איתו ברור יותר, כך התוצאה של הסריקה תהיה טובה יותר. לפעמים זה אומר שבטווח הארוך אם יש לכם כבר צילומים באיכות בינונית של ספר יהיה עדיף מבחינתכם בסופו של דבר לסרוק את הספר מחדש ולא להשתמש בצילומים. עותק עם כיתוב עליו (נגיד, גלוסות מוציא את ה־OCR מאיפוס.
  • סרקו בסורק טוב ומהיר. סריקה איטית מורטת עצבים, וסריקה בסורק גרוע תתנקם בכם אחר כך. גם אם אתם סורקים המון, מבחינה כלכלית ומבחינת הטרחה שבתחזוק והמקום שזה תופס, לא כדאי לקנות סורק אלא להשתמש בסורקים קיימים, גם אם הם השימוש בהם הוא בתשלום. אם אתם בירושלים, הסורקים הכי מוצלחים שאני יודע עליהם מבחינת שקלול של איכות, מהירות, זמינות ומחיר הם אלה שבחדר הצילום שבאולם קריאה מזרח של הספריה הלאומית. אפשר לסרוק בעזרתם הישר לדיסק און קי.
  • סרקו ברזולוציה הגבוהה ביותר של הסורק, בגווני אפור (אין לנו צורך בצבע, וסריקה בשחור־לבן מאבדת נתונים שישמשו אותנו עם התוכנה ScanTailor מיד), ובלי (או עם מינימום) דחיסה שמאבדת נתונים. פורמט TIFF או PNG זה אחלה.
  • אם אתם סורקים ספר, סרקו את שני הצדדים של הכפולה ביחד. זה יותר מהיר, ואחר כך כבר נוכל להפריד אותם בקלות. אם הספר נכנס באופן אנכי ולא אופקי, כדאי לסרוק אותו אנכית כי אז הסורק צריך לעבור פחות קילומטרז׳ (על פני הרבה עמודים זה יכול להצטבר לזמן לא מועט).
  • יש לכם את הקבצים הסרוקים שהסורק הוציא? יופי, אבל שם לא נגמרת העבודה. עם הקבצים האלה אי אפשר לעשות הרבה: אפשר לקרוא אותם בתוכנה להצגת קבצי תמונה, אבל זה מסורבל ויש להם גם רקע אפרפר כזה (וסביר שהם גם קצת עקומים), וכדי להזין אותם ל־OCR הם בכל מקרה צריכים לעבור עיבוד. מה עושים? אה, בשביל זה האלים שלחו לנו את ScanTailor. יבורכו האלים. התוכנה החופשית והמדהימה הזאת לוקחת את הקבצים שהסורק הפיק ועושה עליהם את הקסם הבא:
    • אם סרקתם את הספר על הצד או הפוך, היא מאפשרת לסובב את העמודים.
    • אם סרקתם כפולות ולא דפים יחידים תוכלו להפריד כל דף באופן אוטומטי. התוכנה יודעת גם לטפל בספרים שהעמודים בהם מסודרים מימין לשמאל, כמו ביפנית ובעברית.
    • אם סרקתם על העוקם (כולם סורקים על העוקם!), התוכנה תדע ליישר כל עמוד בדיוק בזווית שצריך. יש גם מנגנון שאמור להתמודד עם תחילות וסופי שורות שהתעקמו בסריקה בגלל שהם קרובים מדי לעמוד השדרה של הספר, אבל הוא לא מושלם וצריך לעבור אחריו.
    • התוכנה יודעת גם לזהות את התוכן בכל עמוד וליצור שוליים אחידים. גם כאן המנגנון לא מושלם, וכדאי לעבור ולראות שאין דברים שנחתכו או קשקושים שהתוכנה כללה במלבן של התוכן. אפשר לבדוק את זה בקלות אם ממיינים את העמודים לפי גובה ולפי רוחב.
    • בשלב האחרון התוכנה מסננת כתמי צבע קטנים (שימו לב שהחורים במסננת לא גדולים מדי, אחרת גם נקודות (.), ניקוד והנקודות של i ו־j עלולות להעלם) ומפיקה פלט ברור ונקי בשחור־לבן (בלי גווני אפור).

מה אנחנו עושים עם הפלט הזה? שני דברים:

  • קודם כל, נחמד שיהיה לנו קובץ PDF של הספר הסרוק, קובץ שנוח לקרוא ממנו. יש כל מני תוכנות ליצירת קבצי PDF מקבצי תמונה. אני אוהב את הדחיסה של JBIG2, שמפיקה קבצים זעירים יחסית, והיא מהירה טילים ולא פוגעת באיכות באופן מורגש. אם אתם משתמשים בלינוקס או במערכת דומה תוכלו להשתמש ב־jbig2enc כדי לדחוס את הקבצים וליצור מהם PDF כך: jbig2 -s -p -v *.tif ; pdf.py output > output.pdf.
  • עכשיו, מרגע שיש לנו קבצים מסודרים ויפים אפשר להזין אותם לתוכנת OCR כדי לקבל מהם קובץ טקסט. תשתמשו במה שמתאים לכם; אני משתמש ב־Tesseract כי היא תוכנה חופשית, תומכת בשפות שאני צריך (כמו וולשית), ועושה עבודה טובה. מריצים את Tesseract על כל קבצי התמונה עם לולאת for ואז מחברים את קבצי הטקסט ביחד עם cat *.txt > output.txt.

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

הקלדה

חשבתם שהסריקה והעיבוד זאת עבודה קשה? עכשיו הגיע החלק המפרך ביותר! אין מה לעשות, גם תוכנות ה־OCR המוצלחות ביותר לא מצליחות להפיק פלט 100% מדוייק, ולכן אין מנוס מלהקליד את כל הטקסט ידנית. מצד שני, יש לנו בידיים קובץ PDF נוח של הטקסט, כך שלא נצטרך לנקוע את הצוואר בלקרוא מהספר הפתוח לצד המחשב (שתמיד נסגר ולא עומד ישר) אלא נוכל לפתוח את קובץ ה־PDF בחלון אחד ואת עורך הטקסט (או מעבד התמלילים) בחלון לצדו ולהעתיק בנוחות. מנהלי חלונות מרצפים מתאימים בול למטרה הזאת, אבל אפשר בקלות גם לסדר את החלונות ככה ידנית.

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

השוואה

עכשיו גם יש לכם את קובץ הפלט של ה־OCR וגם את הקובץ שהקלדתם בעצמכם. די בטוח שבשניהם יש טעויות, אבל מה שיפה הוא שסוג הטעויות בכל אחד מהם שונה: ה־OCR טועה בדברים כמו חיבור של rn ל־m או החשבת האות I כספרה 1 ובני־אדם טועים בדברים כמו הקלדה של אות סמוכה במקלדת או טעויות של top-down (לי, נגיד, היתה תקופה שהייתי עושה מוטציה על מוטציה בהקלדה של טקסטים וולשיים). לכן, אם נשווה בין שני הקבצים אות־אות השוני בין הקבצים יגלה איפה כל אחד מהם שגוי. השוואה כזאת זה משהו שמחשבים מעולים בו ואנשים ממש לא. יש הרבה תוכנות להשוואה של טקסטים, שמסמנות בדיוק את ההבדלים באופן ברור ויזואלית; אני משתמש בכלי ההשוואה שמובנה ב־‎(Neo)Vim, ואתם מוזמנים לבחור מה שמתאים לכם (כאן יש ערך בוויקיפדיה עם שם נפלא שמשווה תוכנות להשוואה…). עבור כל חוסר־התאמה אם הטעות טריוויאלית וברור לכם מה אמור להיות שם ואיזה משני הקבצים צודק, אפשר לתקן בלי לבדוק במקור, אבל לפעמים זה לא כל כך ברור וצריך לבדוק מול המקור לפני שמתקנים. באופן הזה מתקנים שגיאה־שגיאה עד ששני הקבצים זהים. שגיאות חוזרות של ה־OCR אפשר לתקן בעזרת חיפוש והחלפה אוטומטיים בעורך הטקסט או מעבד התמלילים.

זהו, התהליך הזה מבטיח לכם קובץ שהסיכוי לטעות בו (כלומר, הסיכוי שגם אתם וגם ה־OCR עשיתם את אותה הטעות בדיוק) הוא מאוד מאוד נמוך.

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