-
@מעלה-ומוריד אני מוכן לכתוב כזה סקריפט, היה בקשר yaakobov001@gmail.com לקבל הצעת מחיר.
-
@מעלה-ומוריד אולי עם קצת מאמץ קבוצתי יוכלו חברי תחומים התותחים למצוא לך פתרון מצויין שתשאיר את חשבון הבנק שלך מעל קו האדום התחתון...
ההתחלה:
- תוכנת
pdftotext
(הורדה). מריצים את זה ככה:
pdftotext -enc UTF-8 -layout source-file.pdf -
הנה קבלנו את התוכן של ה-pdf ל-stdout. (הסברים מה זה stdout במדריך שורת הפקודה שלי...)
-
שלב הבא, נמצא regex ששולף את הטקסט הרצוי
-
נרכיב פקודה שעושה שינוי השם לפי התוצאה של הפקודות הנ"ל.
לפני שנתחיל, בא נחליט באיזה שפה נכתוב את זה?
לכאורה powershell, למישהו יש הצעה טובה יותר?
- תוכנת
-
@מעלה-ומוריד באמת כדאי להעלות מסמך לדוגמה שנוכל לראות איך הוא בנוי
(נ.ב. למען האמת, @מעלה-ומוריד כבר שלח לי בפרטי קובץ דוגמה, לפני שהוא פתח פה את הפוסט, והוא באמת טקסט. אני הוא שהמלצתי לו לשאול פה, על סמך שיש עוד כמה שישמחו לעזור לי. ההתחלה שהבאתי למעלה הוא תוצאה של שיעורי בית שעשיתי לפני שהוא העלה את הפוסט.) -
@yossiz @רחמים הנה מסמך לדוגמה
שוב תודה רבה! -
@מעלה-ומוריד לא צירפת כלום
-
@רחמים אמר בעזרה - שינוי שם בקבצי PDF מרובים לפי טקסט מתוך המסמך:
@מעלה-ומוריד לא צירפת כלום
תיקנתי (היה חסר
https).. -
בארגון בו אני עובד בניתי תוכנה קבועה לזה, והיא עובדת ב"ה.
אבל במקרה אחר בו היא נדרשה היא לא עובדת (בדיוק כמו הקובץ דוגמה שהעלית) הקובץ לא קריא. ניסיתי המון ניסיונות ולא הצלחתי, אני מקוה ש@yossiz יצליח פה ושעל הדרך בעייתי תיפתר גם.עריכה:
אבל פה לפחות את המספרים והמיילים והטלפונים זה מחלץ מצוין. אפשר מזה בטח להגיע לשם התורם...
אצלי אפילו האנגלית לא קריאה, רק המספרים. טוב אני יחקור שוב עם מה שעשיתי, תודה @מעלה-ומוריד. -
@aaron אמר בעזרה - שינוי שם בקבצי PDF מרובים לפי טקסט מתוך המסמך:
bash? סתם, צוחק.
מה מצחיק? באמת אולי bash היה יותר קל לי, אבל זה לא שימושי ל@מעלה-ומוריד.
נראה לי שהחלק המכאיב זה לבנות regex, מישהו פה התנסה בריג'קס בPS? כי נראה שזה לא תואם..
טוב, נצטרך להוכיח לך שאתה לא צודק...
אולי אתה תרים את הכפפה ותכתוב משהו? -
@yossiz אמר בעזרה - שינוי שם בקבצי PDF מרובים לפי טקסט מתוך המסמך:
טוב, נצטרך להוכיח לך שאתה לא צודק...
שאני לא צודק במה?
זה ודאי לא תואם.. נתחיל בזה שאין פלאג של multiline.. כבר כאב ראש..
(על הדרך גיליתי שיש powershell על דוקר.. אחרת באמת לא היה לי איך לבדוק בכלל) -
param([string]$path = '.') $pdftotext = "C:\path\to\pdftotext.exe" [Console]::OutputEncoding = [text.encoding]::utf8 Get-ChildItem -path $path -Filter '*.pdf' | ForEach-Object -Process { $donor = &$pdftotext -enc UTF-8 -simple $_.FullName - | Select-Object -Index 9 Copy-Item -Path $_.FullName -Destination "$($path)/$($donor.trim()).pdf" }
-
@aaron אמר בעזרה - שינוי שם בקבצי PDF מרובים לפי טקסט מתוך המסמך:
נתחיל בזה שאין פלאג של multiline
פשוט לא נכון. הוצאת שם רע. סביר לטעון שיש טעיות בתכנון של powershell. אבל אל תנסה לטעון שיש טעויות טפשיות שכל מתחיל לא היה עושה.
https://stackoverflow.com/a/12573413
על הדרך גיליתי שיש powershell על דוקר.. אחרת באמת לא היה לי איך לבדוק בכלל
אפשר פשוט להשתמש בווינדוס ?
בנוסף, מה לא טוב בזה? -
@yossiz אמר בעזרה - שינוי שם בקבצי PDF מרובים לפי טקסט מתוך המסמך:
פשוט לא נכון. הוצאת שם רע. סביר לטעון שיש טעיות בתכנון של powershell. אבל אל תנסה לטעון שיש טעויות טפשיות שכל מתחיל לא היה עושה.
צודק, לא הבדלתי בכך שבמקרה הזה מדובר בקלט מstdout מה שאומר שהוא מסופק כשורות נפרדות ולא כטקסט רציף (עם \n)
עריכה: אולי אין קשר..
@yossiz אמר בעזרה - שינוי שם בקבצי PDF מרובים לפי טקסט מתוך המסמך:
אפשר פשוט להשתמש בווינדוס ?
בנוסף, מה לא טוב בזה?אילו היה וינדוס...
ואני משתדל לא להתקין אף פעם ישירות מRPM\DEB. זה מתכון לחבילות לא מעודכנות.. (חוץ מחבילות שכשאתה מתקין הם גם מוסיפות את עצמם לריפו?)
בכל מקרה, לא רואה סיבה "לזהם" את הסביבת עבודה כשיש דוקר פשוט וקל.. -
@yossiz אמר בעזרה - שינוי שם בקבצי PDF מרובים לפי טקסט מתוך המסמך:
יש עדיין מה לשפר בסקריפט שכתבתי:
אני לא מבין בPS אבל הנה השני סנט שלי:
צריך לתת שם ייחודי לכל קובץ כדי שלא יהיה שגיאה כאשר יש שני קבצים עם שם תורם זהה
לשנות את שם הקובץ המקורי ל: שם המקורי+שם התורם.
צריך לטפל שבהרצה שנייה הסקריפט יתעלם מקבצים שכבר טופלו
לבדוק אם שם הקובץ גדול מ-10 תווים (ואז הוא טופל)
צריך לסנן תווים מיוחדים מתוך השם החדש הקובץ
$Path.Split([IO.Path]::GetInvalidFileNameChars()) -join '_'
ממיר את כל התווים הלא תקניים לקו תחתון (מקור)
ישר כח על העזרה @yossiz !
-
@yossiz אמר בעזרה - שינוי שם בקבצי PDF מרובים לפי טקסט מתוך המסמך:
@dovid אמר בעזרה - שינוי שם בקבצי PDF מרובים לפי טקסט מתוך המסמך:
אצלי אפילו האנגלית לא קריאה, רק המספרים
מה הסיפור עם הקובץ? נוצרה מאותה תוכנה? הבנת למה אין טקסט?
תוכנה לא מוכרת לי ממקום חיצוני (באופן קבוע).
כעת בדקתי שוב, יאהוו כמה ניסיתי אז!
הנה רשימה: PdfTextExtractor של iTextSharp, והספריות הבאות בנוד pdf.js-extract, pdf.js, pdf2json, pdfjs-dist, pdfreader.
ובכן בשניים כעת בדקתי שוב, והם לא נותנים אפילו ספרה אחת.. כל הטקסט כזה 픀퐀혀ꀀ. אבל כלי שורת הפקודה שהבאת מביא תמיד את כל המספרים טוב, אבל הטקסט בלי utf-8 הוא ריק ועם הוא כזה:
╫¢╫ץ╫ש
אני לא יכול לשתף שום מסמך מהסוג הזה, ולצערי לא יכול לייצר דוגמה כי אין לי מושג מי התוכנה המייצרת... אדובי רידר מבין את הטקסט נהדר.@מעלה-ומוריד תודה על הנושא, סליחה על הרכיבה על הנושא שאני עצמי לא סובל שאחרים עושים. הרשיתי לעצמי כי בעצם הפתרון ש@yossiz הביא מצויין, הבעיות שלו עם השם קובץ ועם הפעם השניה לדעתי לא באמת יטרידו אותך.