1. PDF-Analyst
Warum PDF in CSV oder Excel umwandeln?
Bevor wir uns mit dieser Aufgabe beschäftigen, lass uns darüber sprechen, warum es sich überhaupt lohnt, solche Umwandlungen durchzuführen. PDF-Dokumente werden überall für die Übermittlung von Informationen verwendet, dank ihrer Stabilität und ihrer Druckfreundlichkeit.
Aber wenn es um Datenanalyse geht, ist PDF nicht gerade der beste Freund eines Analysts. Genau hier kommen CSV- und Excel-Dateien ins Spiel. Sie sind super für die Analyse geeignet, können leicht in Excel geöffnet oder in jedes beliebige Analysetool importiert werden. Lesen, Filtern, Sortieren und Visualisieren von Daten in diesen Formaten ist ein Kinderspiel. Und wer würde darauf verzichten wollen?
Tools und Bibliotheken
Um unsere Aufgabe zu erledigen, werden wir einige Python-Bibliotheken verwenden, die uns helfen, den "PDF-Fluch" von einem Dokument zu nehmen und es in ein wundervolles CSV (oder Excel, wenn du das bevorzugst) zu verwandeln. Diese sind PyPDF2, PDFPlumber und pandas. PyPDF2 erlaubt uns, Text aus PDFs zu extrahieren, PDFPlumber macht das auf einem Profi-Level, und pandas hilft uns, mit den Daten wie mit Tabellen zu arbeiten.
Falls du diese Bibliotheken noch nicht installiert hast, warum jetzt nicht gleich machen? Gib einfach diesen Befehl im Terminal ein:
pip install PyPDF2 PDFPlumber pandas
Damit ist das erledigt, jetzt legen wir los!
2. Text aus PDF-Dokumenten extrahieren
Text extrahieren mit PyPDF2
Die erste Aufgabe ist, den wertvollen Text aus einem PDF rauszuholen. Dafür verwenden wir die PyPDF2-Bibliothek. Lass uns ein kleines Skript schreiben, das eine PDF-Datei öffnet und Text von jeder Seite des Dokuments extrahiert.
import PyPDF2
# Datei öffnen
with open('sample.pdf', 'rb') as file:
reader = PyPDF2.PdfReader(file)
text = ""
# Alle Seiten durchgehen und Text extrahieren
for page in reader.pages:
text += page.extract_text()
print(text) # Extrahierten Text ausgeben
So einfach ist das! Wir haben die Datei gelesen und den Text daraus extrahiert. Aber Texte sind unterschiedlich: Manchmal braucht man zusätzliche Verarbeitung, das Entfernen von unnötigen Zeichen oder das Aufteilen in Zeilen.
Text extrahieren mit PDFPlumber
PDFPlumber verarbeitet PDFs mit Tabellen und komplexen Strukturen genauer. Mit seiner Hilfe kann man Text extrahieren und mit Tabellen arbeiten.
import pdfplumber
# PDF-Datei öffnen
with pdfplumber.open("sample_with_table.pdf") as pdf:
text = ""
for page in pdf.pages:
text += page.extract_text() + "\n"
print(text)
Dieser Code extrahiert wie zuvor Text von allen Seiten, aber PDFPlumber geht besser mit Layouts und Tabellen um als PyPDF2.
Tabellen aus PDF mit PDFPlumber extrahieren
Wenn das PDF Tabellen enthält, kannst du mit PDFPlumber diese als Listen extrahieren, was die anschließende Umwandlung in CSV oder Excel erleichtert.
import pdfplumber
import pandas as pd
# PDF öffnen und Tabellen extrahieren
with pdfplumber.open("sample_with_table.pdf") as pdf:
all_tables = []
for page in pdf.pages:
table = page.extract_table()
if table:
all_tables.extend(table)
# Daten in DataFrame umwandeln
df = pd.DataFrame(all_tables[1:], columns=all_tables[0]) # Erste Zeile sind Header
print(df)
Dieser Code erstellt eine Tabelle aus den Daten des PDFs und speichert sie in einem DataFrame, was es ermöglicht, die Tabelle einfach in CSV oder Excel zu speichern.
3. Daten speichern
Text in DataFrame umwandeln
Jetzt, wo wir den Text haben, nehmen wir mal an, er ist in Zeilen aufgeteilt, wobei jede Zeile eine Zeile unserer zukünftigen Tabelle darstellt. Unsere Aufgabe wird es sein, ihn mit pandas in einen DataFrame umzuwandeln und dann als CSV-Datei zu speichern.
import pandas as pd
# Jede Zeile des Textes entspricht einer Datenzeile
data = text.split('\n')
data = [row.split(',') for row in data if row.strip() != ''] # Zeilen nach Kommas splitten
# DataFrame erstellen
df = pd.DataFrame(data[1:], columns=data[0]) # Erste Zeile als Header
# DataFrame als CSV speichern
df.to_csv('output.csv', index=False)
Hier haben wir den gesamten Text in Zeilen aufgeteilt, dann in einzelne Elemente, und schließlich einen DataFrame erstellt, wobei wir die erste Zeile als Spaltenüberschriften verwendet haben. Danach haben wir ihn als CSV-Datei gespeichert. Woohoo! Wir haben eine Aufgabe erledigt, die früher mit Stift und Taschenrechner Stunden gedauert hätte.
Daten in CSV umwandeln
Nachdem du Text oder Tabellen aus einem PDF extrahiert hast, kannst du die Daten mit der Pandas-Bibliothek in CSV speichern.
Daten in CSV speichern
# Daten in CSV speichern
df.to_csv("output.csv", index=False)
print("Die Daten wurden erfolgreich in output.csv gespeichert")
Dieser Code speichert den DataFrame mit den Daten aus dem PDF in die Datei output.csv, die in jedem Tabelleneditor geöffnet oder in eine Analyseplattform geladen werden kann.
Umwandlung in Excel
Und was, wenn du lieber Excel willst? Kein Problem! pandas bietet alles, was du dafür brauchst. Ersetze einfach die letzte Zeile im vorherigen Beispiel durch:
df.to_excel('output.xlsx', index=False)
So wird dein DataFrame in eine Excel-Datei gespeichert, und du kannst darin scrollen, Filter anwenden oder Excels Pivot-Tabellen benutzen — alles, was dich auf der Firmenfeier zum Analysten des Jahres macht.
Besonderheiten und Stolperfallen
Wie immer gibt es auf unserem Weg Hindernisse. Das Extrahieren von Text aus PDF-Dokumenten erinnert manchmal daran, Oma zu erklären, was eine Cloud-Speicherung ist. Manche PDFs haben komplexe Strukturen wie Tabellen, Diagramme und Bilder, die sich nur schwer in Text und vor allem in strukturierte Daten umwandeln lassen. In solchen Fällen könnten zusätzliche Textverarbeitung, reguläre Ausdrücke oder sogar spezielle OCR-Bibliotheken nötig sein, um Daten aus Bildern in PDFs zu extrahieren.
Außerdem sind nicht alle PDFs gleich gut für die Automatisierung geeignet. Manche sind verschlüsselt oder passwortgeschützt. PyPDF2 kann mit Passwörtern umgehen, aber mit Verschlüsselung wird es schwieriger.
GO TO FULL VERSION