בקשת עזרה תוכנה למיון ספרים!
-
שלום רב
לאחר עבודה הנני שמח לבשר על תחילתו של סקריפט למיון ספרים במחשב,
המטרה היא שמי שהוריד הרבה ספרים מהיברו-בוקס יוכל למיין אותם בקלות ואוטומטית לתיקייה ייעודית,לכן כתבתי בס"ד סקריפט שבודק אם בעמוד הראשון או השני בקובץ מופיע W [הקישור לאתר שלהם]
ואם אכן מוצא תו זה הוא מעביר מיד את הקובץ לתיקייה שנבחרה,
להלן הסקריפט:import os import tkinter as tk from tkinter import filedialog import PyPDF2 import re import shutil import threading from queue import Queue from pdfminer.high_level import extract_pages from pdfminer.layout import LAParams, LTTextBox, LTTextContainer class PDF_Sorter: def __init__(self, root): self.root = root self.root.title("PDF Sorter") self.create_gui() def create_gui(self): self.source_folder = tk.StringVar() self.dest_folder = tk.StringVar() frame = tk.Frame(self.root) frame.pack(fill="both", expand=True) tk.Label(frame, text="Source Folder:").pack() self.source_folder_entry = tk.Entry(frame, textvariable=self.source_folder, width=50) self.source_folder_entry.pack() tk.Button(frame, text="Browse", command=self.browse_source_folder).pack(side=tk.LEFT, padx=5, pady=5) tk.Label(frame, text="Destination Folder:").pack() self.dest_folder_entry = tk.Entry(frame, textvariable=self.dest_folder, width=50) self.dest_folder_entry.pack() tk.Button(frame, text="Browse", command=self.browse_dest_folder).pack(side=tk.LEFT, padx=5, pady=5) tk.Button(frame, text="Start", command=self.sort_pdfs).pack(padx=5, pady=5) def browse_source_folder(self): self.source_folder.set(filedialog.askdirectory()) def browse_dest_folder(self): self.dest_folder.set(filedialog.askdirectory()) def sort_pdfs(self): self.queue = Queue() for root, dirs, files in os.walk(self.source_folder.get()): for file in files: if file.endswith('.pdf'): file_path = os.path.join(root, file) self.queue.put((file_path, self.dest_folder.get())) self.worker_thread = threading.Thread(target=self.process_queued_pdfs) self.worker_thread.start() self.root.after(1000, self.worker_thread.join) print("PDF sorting complete") def process_queued_pdfs(self): while not self.queue.empty(): file_path, dest_folder = self.queue.get() try: with open(file_path, 'rb') as pdf_file: pdf_reader = PyPDF2.PdfReader(pdf_file) for i in range(min(2, len(pdf_reader.pages))): text = pdf_reader.pages[i].extract_text() if re.search(r'w|W', text, re.IGNORECASE) or re.search(r'\\\[]', text): shutil.copy(file_path, os.path.join(dest_folder, os.path.basename(file_path))) break except Exception as e: print(f"Error processing {file_path}: {e}") if __name__ == "__main__": root = tk.Tk() pdf_sorter = PDF_Sorter(root) root.mainloop()
הבעיה היא שכ50% מהספרים של היברו בוקס,
הסימן מים שלהם מופיע לא כמלל רגיל, אלא כמלל בתוך תיבת טקסט,
ולא הצלחתי עד כה למצוא ספרייה שתצליח לזהות את המלל,
לכן אני מבקש עזרה מכל המומחים פה מי שיכול לעזור תע"ב,
נ"ב: אפשר גם לעשות סקריפט שרק יזהה אם קיים תיבת טקסט, ואם כן יעביר,
לא משנה מה כתוב בה, כי רק בספרים שלהם יש תיבת טקסט בעמוד הראשון....עריכה:
בפוסט האחרון עדכנתי את הסקריפט, מי שרוצה יכול לדלג לשם,
הוא ממין בצורה יסודית,
רק אני מבקש עזרה ממי שיכול לקמפל אתו. -
@sivan22
יש לי כוננים מלאים בכמה עשרות אלפי ספרים רובם מהיברו בוקס,
והשמות שלהם שונו לשמות האמיתיים,
כעת אני צריך למיין הכל.....
ולכן אין לי פתרון מלבד זה.@mefateach כתב בשיתוף | שיתוף ובקשת עזרה, תוכנה למיון ספרים!:
אולי אפשר עם ocr
זה לא יהיה מדאי איטי?
-
@sivan22 כתב בשיתוף | שיתוף ובקשת עזרה, תוכנה למיון ספרים!:
אבל אני מאמין שתוכל עם ספריה כמו PDFPY2 למצוא אם יש תיבת טקסט, כמו שהצעת, וזה יותר פשוט.
ניסיתי קרוב ל40 פעם [עם כל מיני שינויים ותיקונים כל פעם] ולא הצלחתי.
@sivan22 כתב בשיתוף | שיתוף ובקשת עזרה, תוכנה למיון ספרים!:
בשביל OCR תוכל להשתמש בtesseract
אפשר להוריד באמצעות PIP?
-
@אלף-שין כתב בשיתוף | שיתוף ובקשת עזרה, תוכנה למיון ספרים!:
בשביל OCR תוכל להשתמש בtesseract
אפשר להוריד באמצעות PIP?
וודאי, רק תכתוב באותיות קטנות, ותשים לב כשאתה מעתיק לא להעתיק את ה-ב' שבתחילת המילה.
מחכים כבר מאוד להודעה הדרמטית שלך......... -
@אלף-שין כתב בשיתוף | שיתוף ובקשת עזרה, תוכנה למיון ספרים!:
ניסיתי קרוב ל40 פעם [עם כל מיני שינויים ותיקונים כל פעם] ולא הצלחתי.
אני מאמין שהוא התכוין לזה:
pip install PyPDF2
-
@יום-חדש-מתחיל
הספריה הזאת PyPDF2 לא מזהה,
בדקתי בעשרות הגדרות שניסיתי. -
@mefateach כתב בשיתוף | שיתוף ובקשת עזרה, תוכנה למיון ספרים!:
@אלף-שין תגגל על tensorflow
לא, זה מדאי כבד לי,
אני צריך בסך הכל שיהיה חע סקריפט שעובד על קבצי הPDF
שהשקריפט לא זיהה בהם בעמוד הראשון את התו W,
במקרה כזה הסקריפט יעשה OCR לעמוד הראשון בלבד,
ואז יחפש אם יש את התו W. -
פוסט זה נמחק!
-
@אלף-שין כתב בשיתוף | שיתוף ובקשת עזרה, תוכנה למיון ספרים!:
הספריה הזאת PyPDF2 לא מזהה
https://pypi.org/project/PyPDF2/
pip install PyPDF2
עריכה: עכשיו אני רואה שהסקריפט שכתבת למעלה גם משתמש בספרי' הזו...