שאלה טכנית על pdf

שוּלה

New member
תשובה טכנית - מיקום האותיות נשמר בנפרד

אין בעיה להוציא טקסט נקי ממסמך PDF.
יש כמה תוכנות שעושות את זה בשבילך.

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

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

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

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


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



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

זה תלוי במידה רבה בתוכנה שבה נכתב המסמך, ובשיטת ההמרה ל-PDF

לכן ברוב מקרים של עברית, הכי קל להשתמש ב-OCR.



דרך אגב,
אני ממליץ גם להסתכל על sumatraPDF.
 

בוזוקיא

New member
אולי אני כבר מתחיל לחפור, אבל עדיין משהו לא

מסתדר לי.
קודם כל, אני מבין שה-sorce code של הPdf הוא מבולגן ולאו דווקא נשמר מבחינה לוגית, אבל בסופו של דבר הטקסט שמוצג במסך הוא כן בסדר הנכון. אני רחוק מלהיות מומחה באיך פלטים מוצגים בסופו של דבר על המסך או איך למשל הסמן יודע לעשות הפרדה בין הצ'רים השונים, אבל בסופו של דבר מה כל המידע הזה קיים, אז איפה הקושי בלבנות תוכנה שתקח את הידע הזה ותמיר כל צ'אר למקום הנכון לתוך קובץ בפורמט אחר שניתן לעריכה?

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

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

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

גם כאלה שנראים פשוטים לכאורה, מתבססת ההצפנה לסוגיה.
 

שוּלה

New member
אתה מבלבל כמה מושגים

אבל אני לא אסביר לך את כולם עכשיו.

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

האותיות כמו שאתה רואה אותן על הדף כתובות מימין לשמאל, ובאותה שורה.
לעומת זאת בקוד המקור זה לא מופיע באותו סדר. זה גם לא מופיע בדיוק באותו גובה.
בתרשים שלי כל אות מופיעה בגובה אחר. מבחינת המחשב 48 (ג) שונה לחלטין מ-44 (ה) ולכן הוא לא יודע האם הן באותה שורה בכלל!
המילים "היי, ביי, די" - אנחנו יודעים שהן עמודה נפרדת.
אבל האם המחשב מבין את זה? או שמבחינתו זה ההמשך לאותיות "ג" ו-"ה" שנמצאות באותה שורה?
תן לי לחסוך לך את הבדיקה - המחשב לא יודע, והוא צריך לנחש. ספציפית בתהליך הזה OCR עדיף ברוב המקרים שאני בדקתי.
טבלאות ב-PDF הן סתם מספרים ואותיות שצפים באוויר, וקווים שמצויירים מסביבם, אבל כיום זה בלתי אפשרי לתוכנה פשוטה להסיק את זה מקוד המקור ב-PDF , כי מה שהעין עושה בשבריר שניה, צריך תוכנה מורכבת מאד במחשב.
 

בוזוקיא

New member
אולי הפער בידע שלי במערכות הפעלה הוא מה שמקשה

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

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

שוּלה

New member
אני לא מתעצבן, אבל אני גם לא אחזור על עצמי.

התשובות לשאלות האחרונות שלך כבר נמצאות בשירשור הזה.
תקרא שוב.
 

בוזוקיא

New member
עד עכשיו התשובות יתייחסו למעבר על הקוד מקור

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

בוזוקיא

New member


 
חלק מקבצי ה PDF נוצר כ"הדפסה"

במלים אחרות יש דרייבר שבמקום להדפיס למדפסת הוא מדפיס לקובץ PDF.

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

אם ה PDF בנוי מפסקאות טקסט באמת קל יותר לחלץ את הטקסט מהקובץ.
אם תו תו, יותר קשה, במיוחד קשה להפריד בין מילים ובין עמודות.
 
למעלה