CodeGym /Kurse /Python SELF DE /Umwandlung von Text aus PDF in CSV- oder Excel-Format zur...

Umwandlung von Text aus PDF in CSV- oder Excel-Format zur Datenanalyse

Python SELF DE
Level 44 , Lektion 1
Verfügbar

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:

Bash
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.

Python

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.

Python

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.

Python

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.

Python

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

Python

# 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:

Python

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.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION