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

ב-OCR לטקסט יפני אנכי, בדקו את כיוון הכתיבה לפני שינוי מסנני התמונה. השתמשו במודל יפני ובהגדרת פילוח שמסוגלים להתמודד עם טקסט אנכי, אמתו שהעמודות בסדר המיועד, והחליטו אם דרוש לכם הטקסט הראשי בלבד או גם הפוריגנה. עמוד מלא בתווים מזוהים עדיין עשוי להיות תעתיק חסר תועלת אם הרצף שלהם שגוי.
ערכנו ניסוי מקומי קטן ומשוחזר כדי להמחיש את ההחלטות הללו. תצורה אופקית ערבבה את שלוש העמודות האנכיות שלנו. תצורה אנכית החזירה את גוף הטקסט הרגיל, אך הוספת פוריגנה שינתה שני סימני פיסוק, וחיתוך הרובי לא ביטל את שגיאות הפיסוק.
אלה תוצאות מדגם סינתטי קטן במכוון, לא טענה לדיוק לגבי כל הספרים היפניים. הלקח השימושי מצומצם יותר: העריכו בנפרד זיהוי תווים, סדר קריאה וטיפול בהערות. אל תשלחו את התוצאה לתרגום רק מפני שהיא נראית יפנית.
תחילה זהו את הטקסט שאתם באמת רוצים
בהרכב יפני אנכי קונבנציונלי, התווים מתקדמים במורד השורה והשורות ממשיכות מימין לשמאל. רובי הוא הטקסט הקטן יותר המשויך לתווי הבסיס; פוריגנה מספקת בדרך כלל את הגייתם. הדרישות לפריסת טקסט יפני של W3C מתארות את כיווני הכתיבה הללו ואת יחסי הרובי.
לפני ה-OCR, סמנו את האזורים המשמעותיים בעמוד:
- עמודות אנכיות ראשיות;
- רובי קטן לצד גוף הטקסט;
- כותרות אופקיות, כיתובים או טבלאות;
- מספרי עמודים וכותרות רוחב;
- הערות שוליים או עמודים סמוכים לא קשורים.
אל תתייחסו לכל רצועה אנכית כאל פסקה עצמאית. רצועה של קאנה קטנה לצד 図書館 עשויה להיות ההגייה שלה, としょかん, ולא המשפט הבא.
בחרו את מדיניות הפלט לפני שאתם שופטים את ה-OCR:
| משימת הקורא | התוצאה הרצויה | מה נחשב לבעיה |
|---|---|---|
| חיפוש או תרגום גוף הטקסט | טקסט ראשי בסדר; הגיות שימושיות נשמרות בנפרד | רובי מוכנס לתוך הפרוזה, טקסט גוף חסר, עמודות מסודרות מחדש |
| לימוד הגייה | טקסט ראשי בתוספת הגיות משויכות כהלכה | רובי חסר או הגייה שמשויכת למילה הלא נכונה |
| הפק תעתיק נאמן | הטקסט הראשי, יחסי ההערות וההחלטות העריכתיות נשמרים | מחיקה שקטה או נרמול של חומר שהתכוונתם לשמור |
אותה תוצאה יכולה לעבור משימה אחת ולהיכשל באחרת. הניסוי שלנו משתמש בתעתוק גוף הטקסט בלבד כיעד ההשוואה. הוא אינו רואה בפוריגנה חסרה תוצאה קבילה למהדורה ללימוד הגייה.
ניסוי OCR אמיתי על שלושה משפטים
הדוגמה משתמשת במשפטים הבאים, שכתבנו בעצמנו:
朝の図書館で本を読む。
古い地図には川が見える。
明日は友人と駅で会う。
הם מתארים קריאה בספרייה, ראיית נהר במפה ישנה ופגישה עם חבר בתחנה. יש 34 נקודות קוד יוניקוד של גוף הטקסט לאחר הסרת מעברי השורה, כולל שלוש נקודות הסיום היפניות.
הצגנו את אותו גוף טקסט בשלוש צורות:
- טקסט אופקי.
- שלוש עמודות אנכיות, הנקראות מימין לשמאל.
- אותן עמודות אנכיות עם פוריגנה לצד
図書館,地図,友人ו-駅.

אלה תמונות הוראה נקיות, לא עמודים סרוקים מתוך ספר. המנוע משתמש ב-Noto Sans CJK JP, תווי גוף בגודל 64 פיקסלים, רובי בגודל 24 פיקסלים, ומיקום אנכי מפושט של כל גליף בנפרד. הוא מצייר נקודות סיום אנכיות כעיגולים קטנים ומסורטטים במיקומים שנבחרו ידנית, במקום להשתמש במיקום הגליפים האנכי התקין של הגופן; לכן תוצאות הפיסוק אינן מלמדות כיצד OCR מתפקד בספר שעוצב כהלכה. הוא אינו משחזר כל כלל טיפוגרפי יפני. אין בבדיקה טשטוש, הטיה, מרקם נייר, כתב יד, דפוס היסטורי או עמוד בכיווניות מעורבת.
מנוע, מודלים והגדרות
הניסוי רץ ב-7 בספטמבר 2026, באמצעות Tesseract.js 7.0.0 עם Tesseract.js-core 7.0.0 באופן מקומי על macOS ARM64. כל הקריאות המוצלחות השתמשו במודלים הרשמיים tessdata_fast בקומיט 87416418657359cb625c412a48b6e1d6d41c29bd, עם OEM 1, מצב המנוע LSTM בלבד.
מאגר המודלים הרשמי של Tesseract מספק קבצים נפרדים של jpn ו-jpn_vert. התיעוד שלו מתאר את PSM 5 כבלוק אחיד המיושר אנכית ואת PSM 6 כבלוק טקסט אחיד; יש לבחור הנחת פילוח שמתאימה לאזור המזוהה. ראו את תיעוד פילוח העמודים.
המקרים שתיעדנו השתמשו ב-jpn עם PSM 6 לטקסט אופקי, ב-jpn_vert עם PSM 5 לטקסט אנכי, ובבקרת אנכי מכוונת שאינה תואמת של jpn/PSM 6. גם המודל וגם הפילוח משתנים בין שתי תצורות האנכי, כך שזו השוואה של תהליך עבודה, לא ניסוי שמבודד את ההשפעה של כל אחת מההגדרות לבדה.
ניסיון ראשוני עם tessdata_best נעצר בליבת ה-WebAssembly הזמינה לפני שהפיק טקסט OCR. עברנו למודלים הרשמיים tessdata_fast מסוג שלם לשם תאימות ותיעדנו את הכשל הזה. אין מכך מסקנה לגבי דיוק של משפחת מודלים אחת.
מה בעצם חזר
ההשוואה מסירה רווחים לבנים ומחילה נרמול Unicode NFC. היא אינה מחליפה פיסוק, מתקנת קאנג'י או מסדרת מחדש את הטקסט. הפלטים הגולמיים המלאים וגיבובי הגרסאות/המודלים, קובץ ה-CSV להשוואת גוף הטקסט והערות השגיאה זמינים להורדה.
| קלט ותצורה | התוצאה שנצפתה מול יעד גוף הטקסט בלבד |
|---|---|
אופקי, jpn, PSM 6 | כל 34 נקודות הקוד תאמו לאחר הסרת הרווחים הלבנים |
אנכי, jpn, בקרת PSM 6 | הפלט השתרע על פני עמודות וכלל החלפות תווים; לא טקסט קריא |
אנכי, jpn_vert, PSM 5 | כל 34 נקודות הקוד תאמו לאחר הסרת רווחים; סדר העמודות היה נכון |
אנכי עם פוריגנה, jpn_vert, PSM 5 | הטקסט הראשי נשמר בסדר, אך שני סימני 。 הפכו ל-. ASCII; הרובי לא הוחזר כקריאות נפרדות |
שלושה חיתוכי עמודות גוף מתמונת הפוריגנה, jpn_vert, PSM 5 | העמודה הראשונה הסתיימה ב-., השנייה ב-,, השלישית ב-。; החיתוך לא הסיר את כל פגמי הפיסוק |
לדוגמה, מקרה הפוריגנה החזיר את השורה הראשונה הזו:
Expected: 朝の図書館で本を読む。
Observed: 朝 の 図書 館 で 本 を 読む .
הרווחים מתעלמים לפי כלל ההשוואה שלנו. הפיסוק הסופי לא. תהליך עבודה לחיפוש בלבד עשוי לסבול את ההבדל הזה, אך תעתיק נאמן צריך לתעד ולתקן אותו.
בקרת האנכי שאינה תואמת החלה ב-明 古 昌, בקפיצה על פני התווים העליונים של העמודות במקום לעקוב אחר המשפט הראשון המיועד. הפלט שלה ממחיש מדוע זיהוי סמלים בודדים אינו זהה לשחזור רצף קריאה.
היו שבע קריאות OCR שהושלמו: ארבעה מקרים של תמונה שלמה ושלושה חיתוכים. שמרנו כל פלט. סוכן אחד השווה את התוצאות מול אמת המידה שנכתבה ובדק חזותית את התמונות; לא היה סקירה אנושית עיוורת או קורפוס בנצ'מרק רחב. הניסוי אינו מבסס מנוע טוב ביותר באופן אוניברסלי, שיעור דיוק ברמת הספר, או ביצועים בסריקה שלך.
השתמש בתהליך עבודה מבוסס-אזור בעמוד שלך
1. שמור על המקור ובחר עמוד קשה אחד
השאר את התמונה או ה-PDF המקוריים ללא שינוי. עבוד על עותק, ותעד את מספר העמוד. בחר עמוד שמכיל את הבעיה שאתה מנסה לפתור: רובי צפוף, שוליים צרים, כותרת אופקית מעל טקסט אנכי, או גופן קטן במיוחד.
עמוד שער נקי אינו מבחן קבלה שימושי לספר שעמודי הגוף שלו בעלי פריסה שונה. אם המקור הוא PDF, חלץ או רנדר את העמוד הנבחר באמצעות כלי שאתה סומך עליו לפני הפעלת תהליך OCR מבוסס-תמונה בלבד. הסקריפטים במאמר זה מקבלים קבצי PNG; הם אינם מעבדים PDFs או בונים שכבות PDF ניתנות לחיפוש.
לתהליך המלא של הכנת מסמך סרוק ותרגומו, השתמש בתהליך עבודה רחב יותר ל-PDF סרוק. מדריך זה מתמקד בהחלטות לגבי כיוון יפני, פילוח, רובי ותעתוק.
2. תקן פגמי לכידה מבלי להרוס טקסט קטן
בדוק את התווים בפועל ברמת זום שימושית. יישר הטיה לא מכוונת, הסר שוליים לא קשורים של העמוד, ושמור על ניגודיות מספקת כדי להבחין בין קאנה קטנה ופיסוק. הימנע מהתייחסות לסף אגרסיבי או חדוד כשיפור אוטומטי: השווה את התמונה המתקבלת עם המקור לפני שאתה סומך על ה-OCR.
הנחיות איכות התמונה של Tesseract מכסות רזולוציה, רעש, הטיה ושוליים. אלה נפרדים מכיוון הכתיבה. יישור עמוד שצולם בזווית אינו אותה פעולה כמו סיבוב טקסט יפני אנכי זקוף לצד.
קבצי הדוגמה נושאים מטא-נתוני 300 dpi, אך מספר זה אינו יוצר פרטים חסרים. גודל הגליפים בגוף שלהם הוא 64 פיקסלים. תמונה ברזולוציה נמוכה שתויגה מחדש כ-"300 dpi" היא עדיין אותה תמונה ברזולוציה נמוכה.
3. הפרד אזורים כאשר העמוד מפר הנחת פריסה אחת
נסה את הבלוק האנכי הראשי בפני עצמו לפני שאתה מבקש מקריאת OCR אחת להתמודד עם כותרת אופקית, פרוזה אנכית, איור ומספר עמוד. שמור רשומת אזור פשוטה כגון "עמוד 12, גוף, עמודה 1 מימין." רשומה זו הופכת את ההרכבה המאוחרת לניתנת לביקורת.
עבור חומר בכיוונים מעורבים, זהה את האזור האופקי עם ההגדרה האופקית המתאימה ואת האזור האנכי עם הגדרה אנכית, ואז הרכב אותם בסדר שהמסמך מתכוון. זהו תהליך עבודה מומלץ לבדיקה בקובץ שלך, לא יכולת פריסה מעורבת שנמדדה על ידי שלוש תמונות הדוגמה שלנו.
ניסוי החיתוך שלנו השתמש בקואורדינטות מדויקות וידועות כדי להוציא את רצועת הרובי שלצד כל עמודה סינתטית, תוך שמירה על טקסט הגוף שלה ושוליים לבנים. זו הייתה הדגמה של בחירת אזור ידנית, לא אלגוריתם אוטומטי להסרת פוריגנה. אין להחיל את הקואורדינטות שלה על עמוד ספר אמיתי.
4. בדקו את העמודות לפני הגהה של תווים בודדים
השוו את תו הגוף הראשון והאחרון בכל עמודה, ועבדו בכיוון המיועד. ודאו שאף עמודה אינה חסרה, משוכפלת, הפוכה או משולבת בשכנתה. לאחר מכן בדקו משפטים בגבולות העמודות.
רק אחרי זה תתקנו קאנג'י, קאנה, פיסוק, מספרים ושמות בודדים. אחרת, אתם עלולים לבזבז זמן על ליטוש קטעים שמתחברים לפסקה הלא נכונה.
סקירה שימושית בשלושה מעברים היא:
- אזורים וסדר: כל אזור גוף מיועד מופיע פעם אחת ובסדר.
- תווים: השוו את התמונה בפועל עם הטקסט, כולל פיסוק קטן וסימני קאנה.
- הערות: החליטו אם כל פריט רובי, הערה או תווית שוליים נשמר, הופרד או הוצא במכוון.
ערך הביטחון שמדווח על ידי מנוע אינו תחליף לבדיקות האלה. בקרת הבלבול שלנו עדיין החזירה מספר ביטחון שמדווח על ידי המנוע; זה לא הפך את סדר הקריאה שלה למקובל.
אל תסירו פוריגנה עד שתדעו למה
בחילוץ של גוף בלבד, רובי לא אמור להפוך בטעות לשכבה שנייה של פרוזה. אבל מחיקת כל מחרוזת קאנה קטנה אינה כלל כללי בטוח. קריאה יכולה לעזור להבחין בשם, לשמר הגייה שנבחרה על ידי המחבר, או לתמוך במשימת הלימוד של הקורא.
בתמונת הפוריגנה שלנו, פלט ה-OCR הכיל את הקאנג'י הראשי אך לא החזיר את ארבע הקריאות כקבוצת הערות נפרדת. זה עשוי להספיק לאחר תיקון פיסוק עבור משימת חיפוש של גוף בלבד. זה לא מספיק אם התוצר מבטיח מידע הגייה.
אחסנו קריאות חשובות בנפרד וקשרו אותן למופע הנכון. לדוגמה:
Page: sample 1
Column: 1 from the right
Base text: 図書館
Reading shown: としょかん
Decision: retain body text; save reading in the annotation record
תמלול הרובי הנפרד של הדוגמה מבהיר את המדיניות הזו. זהו תוכן אמת שנוצר עם התמונה, לא טענת הצלחה של OCR.
אם ה-OCR מערבב קאנה לתוך מילה או מאבד את הקשר שלה, השוו מול התמונה ותקנו את התמלול. אל תבקשו ממודל שפה לנחש את המקור ולהציג את הניחוש כטקסט משוחזר. סמנו קריאה לא ודאית לבדיקה במקום זאת.
תוצאות החיתוך גם מתנגדות לכלל פשטני של "הסר רובי והכול משתפר": שני הבדלי פיסוק נותרו, וסיומות המשפטים המושפעות השתנו. התצפית הזו שייכת למתקן הנקי המסוים הזה. היא אומרת לנו לאמת את התוצאה לאחר פילוח, לא שחיתוך בדרך כלל עוזר או מזיק ל-OCR.
שחזרו את הבדיקה או נהלו יומן סקירה
הורידו את קובץ ה-README של הניסוי עבור מקורות מודל ופונטים מוצמדים, גרסאות תלויות, תיאורי קבצים ופקודות. מחולל הדוגמאות, מריץ ה-OCR וסקריפט ההשוואה מפרידים בין יצירת התמונה, הזיהוי וההערכה.
המריץ משתמש בממשק ה-API המתועד של Tesseract.js worker. עבור אזור אנכי, ההגדרות החיוניות שלו הן:
const worker = await createWorker("jpn_vert", 1, {
langPath: modelDirectory,
gzip: false,
cacheMethod: "none",
});
await worker.setParameters({
tessedit_pageseg_mode: "5",
user_defined_dpi: "300",
});
modelDirectory חייב להכיל את קובץ jpn_vert.traineddata שהורד ולא דחוס. זהו קטע, לא התוכנית המלאה; המריץ שסופק גם שומר את התוצאות הגולמיות ומסיים תהליכי עובד.
אם אתם משתמשים ביישום OCR אחר, שמרו על אותן ראיות גם כששמות ההגדרות שונים: אזור מקור, קובץ מקורי, גרסת מודל או כלי, כיוון, בחירת פילוח, פלט בפועל, טקסט מתוקן ותווים לא פתורים. תבנית יומן הסקירה ריקה כך שהיא לא מרמזת שהעמודים שלכם כבר עברו.
אל תמירו את תוצאת ההתאמה המדויקת הזעירה שלנו לאחוז מובטח עבור רומן שלם. פונטים שונים, עמודות צפופות, צורות היסטוריות, סריקות באיכות נמוכה ובועות דיבור של מנגה דורשים בדיקות מייצגות משלהם. פריסת מנגה וזיהוי כתב יד מחוץ לניסוי הזה.
תרגמו רק כשהמקור המשוחזר מהימן
אם המטרה שלכם היא חיפוש, העתקת ציטוטים או חיפוש במילון, טקסט יפני מאומת עשוי להיות התוצאה המוגמרת. אין צורך לתרגם מסמך שלם רק מפני שהיה מעורב OCR.
אם מחסום שפה עדיין מונע את הקריאה ויש לך קובץ שמיש להעלאה, המשך עם תהליך תרגום ה-PDF. שמור על הסריקה המקורית ועל התעתיק המאומת כדי שתוכל להבחין בין שגיאות זיהוי לשגיאות תרגום. כלי ההרצה לדוגמה מפיק קובצי טקסט ו-TSV, ולא PDF המוכן להעלאה אוטומטית; הכן את פורמט הקלט האמיתי שהכלי הבא שלך דורש.
מצב ה-OCR של BookTranslator משחזר תוכן מתורגם ולא מבטיח את הפריסה האנכית המקורית. אל תניח שהוא ישמור על כל קישור ruby או יתקן שגיאות זיהוי לא מאומתות. בדוק את סדר הקריאה והעיצוב של המסמך הסופי בעזרת מדריך שימור הפורמט של PDF ורשימת הבדיקה הסופית ל-PDF.
המסירה האמינה אינה „ה-OCR הושלם”. היא „הטקסט היפני המיועד נמצא, הרצף שלו נבדק, והטיפול בהערות מתועד”.
פוסטים קשורים





