Effiziente Automatisierung von PDF-Aufgaben mit Python-Skripten
Die Nutzung von PDF-Dateien ist in vielen Arbeitsabläufen weit verbreitet. Um Berichte zusammenzuführen, große Dateien zu teilen, Text oder Tabellen zu extrahieren, Wasserzeichen hinzuzufügen oder sensible Inhalte zu schwärzen, sind diese fünf Python-Skripte hilfreich, um die häufigsten PDF-Aufgaben zu automatisieren.
1. Zusammenführen und Aufteilen von PDF-Dateien
Herausforderung: Das Zusammenführen mehrerer PDF-Dateien in eine einzige oder das Aufteilen einer großen PDF-Datei in separate Dateien nach Seitenbereichen gehört zu den häufigsten Aufgaben im Umgang mit PDFs. Diese Vorgänge sind manuell, insbesondere bei vielen Dateien oder großen Seitenzahlen, mühsam.
Funktion des Skripts: Das Skript kombiniert eine Reihe von PDF-Dateien in einer konfigurierbaren Reihenfolge zu einer einzigen Ausgabedatei oder teilt eine einzelne PDF-Datei in separate Dateien nach festen Seitenbereichen, alle N Seiten oder anhand einer Liste spezifischer Seitenzahlen. Beide Operationen werden über einen Modus-Flag im selben Skript gesteuert.
Funktionsweise: Das Skript nutzt pypdf für alle seitenbezogenen Operationen. Im Zusammenführungsmodus liest es alle PDFs aus einem Eingangsordner, sortiert sie nach Dateinamen (oder einer benutzerdefinierten Reihenfolge, die in einer Textdatei definiert ist) und schreibt sie sequenziell in eine einzige Ausgabedatei. Im Aufteilungsmodus akzeptiert es entweder eine Seitenbereichsliste, eine feste Chunk-Größe oder eine Liste von Seitenzahlen. Jedes aufgeteilte Segment wird in eine nummerierte Ausgabedatei geschrieben. Metadaten der ersten Eingabedatei werden im Zusammenführungsmodus beibehalten.
2. Extrahieren von Text und Tabellen aus PDFs
Herausforderung: Die Gewinnung nutzbarer Daten aus einer PDF-Datei – sei es Text aus einem Bericht oder tabellarische Daten aus einer Abrechnung – ist ein notwendiger Schritt, bevor eine weitere Verarbeitung erfolgen kann. Das Kopieren und Einfügen aus einem PDF-Viewer ist für mehr als ein paar Seiten unpraktisch, und das Ergebnis ist selten sauber.
Funktion des Skripts: Das Skript extrahiert Text und Tabellen aus einer oder mehreren PDF-Dateien und schreibt die Ergebnisse in strukturierte Ausgabedateien. Text wird in einfache Text- oder Markdown-Dateien geschrieben, während Tabellen in CSV oder Excel ausgegeben werden, mit einem Blatt pro gefundener Tabelle. Es unterstützt sowohl textbasierte PDFs als auch grundlegende layoutbewahrende Extraktionen.
Funktionsweise: Das Skript verwendet pypdf für die grundlegende Textextraktion und pdfplumber für layoutbewusste Extraktion und Tabellenerkennung. Für jede Eingabedatei wird seitenweise gearbeitet, wobei Textblöcke extrahiert und Tabellenregionen mithilfe des Tabellenfinders von pdfplumber erkannt werden. Extrahierte Tabellen werden normalisiert – leere Zeilen entfernt, Überschriften erkannt – und in separate Ausgabedateien geschrieben. Ein zusammenfassender Bericht listet auf, wie viele Seiten und Tabellen in jeder Datei gefunden wurden und kennzeichnet Seiten, auf denen keine Ausgabe erzeugt wurde.
3. Stempeln, Wasserzeichen und Seitenzahlen hinzufügen
Herausforderung: Das Hinzufügen eines Wasserzeichens, eines Stempels oder von Seitenzahlen zu einer Reihe von PDFs vor deren Verteilung ist in der Theorie einfach, aber in der Praxis langsam, wenn man jede Datei einzeln über eine grafische Benutzeroberfläche bearbeitet. Bei großen Chargen oder wiederkehrenden Anforderungen ist eine Automatisierung erforderlich.
Funktion des Skripts: Das Skript wendet einen Text- oder Bildstempel auf jede Seite einer oder mehrerer PDF-Dateien an. Es unterstützt diagonale Wasserzeichen, Kopf-/Fußzeilentexte, Seitenzahlen und Bildüberlagerungen. Position, Schriftgröße, Opazität und Farbe sind konfigurierbar. Es verarbeitet ganze Ordner im Batch.
Funktionsweise: Das Skript nutzt pypdf für die Seitenmanipulation und reportlab zur Erstellung der Stempel-Ebene. Für jede Eingabe-PDF wird ein einseitiges Stempel-PDF im Speicher mithilfe von reportlab erstellt. Es rendert den Text an der konfigurierten Position, dem Winkel, der Schriftart und der Opazität oder platziert ein Bild an angegebenen Koordinaten. Diese Stempel-Seite wird dann auf jede Seite der Quell-PDF mithilfe der Seitenfusion von pypdf angewendet. Das Ergebnis wird in einer neuen Ausgabedatei gespeichert, während das Original unverändert bleibt. Seitenzahlen werden als Sonderfall behandelt, wobei für jede Seite ein einzigartiger Stempel generiert wird.
4. Sensible Inhalte schwärzen
Herausforderung: Vor der externen Weitergabe einer PDF-Datei müssen oft sensible Inhalte – wie Namen, Referenznummern, finanzielle Angaben und Adressen – entfernt werden. Manuelles Zeichnen von schwarzen Kästen über Text in einem PDF-Editor funktioniert zwar, entfernt jedoch nicht in allen Tools den zugrunde liegenden Text und ist unpraktisch für mehr als eine Handvoll Seiten.
Funktion des Skripts: Das Skript durchsucht PDF-Seiten nach Text, der mit von Ihnen definierten Mustern übereinstimmt – regulären Ausdrücken, genauen Zeichenfolgen oder vordefinierten Kategorien wie E-Mail-Adressen und Telefonnummern – und schwärzt übereinstimmende Inhalte dauerhaft, indem es sie durch schwarze Rechtecke ersetzt. Es erzeugt eine neue PDF-Datei, in der der zugrunde liegende Text entfernt wurde, nicht nur visuell verdeckt.
Funktionsweise: Das Skript verwendet pymupdf, das sowohl die Textsuche mit Koordinaten der Begrenzungsrahmen als auch die Möglichkeit bietet, Schwärzungsanmerkungen zu zeichnen, die den zugrunde liegenden Inhalt dauerhaft entfernen, wenn sie angewendet werden. Für jede Seite sucht das Skript nach allen Übereinstimmungen der konfigurierten Muster, markiert die Begrenzungsrechtecke als Schwärzungsanmerkungen und wendet diese an – was den Text aus dem Seiteninhalt entfernt. Ein Bericht wird erstellt, der jede durchgeführte Schwärzung auflistet, einschließlich Seitenzahl, übereinstimmendem Text (vor der Schwärzung) und dem Muster, das sie ausgelöst hat.
5. Extrahieren von Metadaten und Erstellen eines PDF-Inventars
Herausforderung: Bei der Arbeit mit einer großen Sammlung von PDF-Dateien ist es oft nützlich, grundlegende Informationen über jede Datei zu kennen – Seitenanzahl, Dateigröße, Erstellungsdatum, Autor, ob sie verschlüsselt ist, und ob sie Text enthält oder ein gescanntes Bild ist. Das Überprüfen jeder Datei einzeln über einen Viewer ist in großem Maßstab nicht praktikabel.
Funktion des Skripts: Das Skript durchsucht einen Ordner von PDF-Dateien und extrahiert Metadaten aus jeder Datei, einschließlich Seitenanzahl, Dateigröße, Erstellungs- und Änderungsdaten, Autor, Produzent, Verschlüsselungsstatus und ob das Dokument anscheinend durchsuchbaren Text oder gescannte Bilder enthält. Alle Informationen werden in einer einzigen CSV- oder Excel-Inventardatei gespeichert.
Funktionsweise: Das Skript verwendet pypdf, um Dokumentmetadaten aus dem PDF-Info-Wörterbuch zu lesen, und pdfplumber, um Seiten auf Textinhalt zu überprüfen. Für jede Datei versucht es, die PDF zu öffnen und die standardmäßigen Metadatenfelder zu lesen. Es prüft die ersten Seiten, um festzustellen, ob die Datei extrahierbaren Text oder gescannte Bildseiten enthält. Verschlüsselte Dateien, die nicht geöffnet werden können, werden gekennzeichnet, anstatt stillschweigend übersprungen zu werden. Das Ausgabeninventar umfasst eine Zeile pro Datei mit allen extrahierten Feldern sowie eine Zusammenfassungszeile am Ende mit Gesamten und Durchschnittswerten.
Fazit
Diese fünf Python-Skripte übernehmen die PDF-Aufgaben, die normalerweise in mühsame manuelle Arbeiten ausarten: Dateien aufteilen, Inhalte extrahieren, Chargen verarbeiten und Dokumenten-Workflows bereinigen. Jedes Skript ist so konzipiert, dass es sicher mit einzelnen Dateien oder ganzen Ordnern arbeitet und neue Ausgaben generiert, anstatt die Originals zu ändern. Wenn Sie mehr über die Automatisierung von Datenanalysen erfahren möchten, könnten Sie auch an Effiziente Python-Skripte zur Automatisierung der explorativen Datenanalyse interessiert sein.
Beginnen Sie mit einer kleinen Charge, überprüfen Sie die Ausgabe und skalieren Sie auf größere Ordner, sobald alles korrekt aussieht. Der Großteil der Einrichtung besteht nur darin, die angegebenen Abhängigkeiten zu installieren und den Konfigurationsbereich für Ihre Dateipfade und Einstellungen anzupassen. Wenn Sie sich für die Auswahl von Merkmalen interessieren, finden Sie in Effektive Merkmalsauswahl: Fünf nützliche Python-Skripte für Ihre Projekte nützliche Informationen.
Zusätzlich könnten Sie sich auch für Fünf effektive Python-Skripte zur Generierung synthetischer Daten interessieren, um Ihre Datenanalysen weiter zu optimieren.
„`
Quellen: kdnuggets
Bildquelle: KI generiert