Gibt es ein Programm, das pdfs ausliest und umbenennt?
Meine Aufgabe ist es, rund 10.000 pdf-Dateien umzubennen. Derzeit sind diese einfach namentlich von "1" bis "10.000" sortiert. Der Ordner sieht also in etwa wie folgt aus:
- (1).pdf
- (2).pdf
- (3).pdf [...]
All diese Dateien müssen jetzt umbenannt werden, wobei v.a. Unternehmensname, Datum oder sowas beim neuen Dateinamen relevant sind. All diese Informationen stehen natürlich in den (teilweise eingescannten) pdf-Dateien drin. Händisch dauert das natürlich ewig, weshalb ich nach einem Programm suche, das Informationen wie Datum oder den Unternehmensnamen automatisch aus den pdf-Dateien ausliest und diese daraufhin selbst umbenennt.
Die Dateien sind zwar nicht alle identisch aufgebaut, es gibt jedoch primär nur 10 verschiedene Dateientypen, die optisch alle gleich aufgebaut sind (die relevanten Zeilen sind bei jedem Dateityp immer am gleichen Ort).
Das Programm müsste also folgende Schritte ausführen können:
- Erkennen, um welchen Dateityp es sich handelt und
- Daraufhin die bei dem jeweiligen Dateityp entscheidenden Zeilen bzw. Werte auslesen und nun
- Die Datei anhand dieser auslesenen Informationen umbenennen
Und das 10.000 mal für jede Datei im Ordner.
Ich besitze grundlegende Programmierkenntnisse und besitze Adobe (falls das hilft). Ich freue mich wirklich über jede Antwort.
Vielen Dank im Voraus!!!
2 Antworten
Es gibt mehrere Wege und Möglichkeiten, von eigenem Script, über No-Code Lösungen wie n8n oder Filterfunktionen in Adobe Acrobat. Dasselbe gilt mit Blick auf Bibliotheken für diverse Sprachen (für Python z.B. PyPDF2 oder pdfplumber).
Wenn du grundlegende Programmierkenntnisse hast und imstande bist ein Python-Script laufen zu lassen, kannst du nachfolgendes Snippet als Grundlage nehmen. Ich habe jetzt mal PyPDF2 dafür verwendet und es dir vielleicht schon ausreicht.
import os
from PyPDF2 import PdfReader
def extract_and_sort_pdfs(output_folder):
os.makedirs(output_folder, exist_ok=True)
pdf_data = []
for pdf_file in [f for f in os.listdir() if f.endswith('.pdf')]:
text = ''.join(page.extract_text() for page in PdfReader(pdf_file).pages)
if "Name:" in text:
name = text.split("Name:", 1)[1].split("\n", 1)[0].strip()
pdf_data.append((name, pdf_file))
for index, (name, pdf_file) in enumerate(sorted(pdf_data)):
new_name = f"{index+1}_{name}.pdf"
os.rename(pdf_file, os.path.join(output_folder, new_name))
# Output-Ordner definieren
output_folder = "./dist"
extract_and_sort_pdfs(output_folder)
Und der Linux würde ich ein kleines Skript erstellen, welches vor allem die Befehle find und mv verwendet.
Unter Windows gibt es dafür z.B verschiedene renamer Tools, auch Freeware, die auch Regular Expressions beherrschen. Gerade wenn alles in einem Verzeichnis liegt, dann dürfte das ein schneller und relativ unkomplizierter weg sein.
Unter Windows lässt sich natürlich auch problemlos WSL oder cygwin installieren, dann kann man die unter Linux arbeiten.
Powershell sollte ebenfalls alle Möglichkeiten bereitstellen.
Ich habe es gerade nicht ganz zu Ende gedacht, aber es könnte eventuell sogar mit robocopy funktionieren. Also ich müsste man dazu alle in ein anderes Verzeichnis kopieren.
https://www.den4b.com/products/renamer
https://www.heise.de/download/product/bulk-rename-utility-25762
Es geht in der Fragestellung nicht nur um die Umbenennung von Dokumenten, sondern auch um eine inhaltsbezogene Sortierung. Die verlinkten Programme sind zum Umbenennen nicht schlecht, besitzen aber weder OCR noch vergleichbares.