Von pdfplumber zu PDF Oxide migrieren
Eine vollständige Anleitung für den Umstieg von pdfplumber auf PDF Oxide. Alle APIs, die Sie derzeit verwenden, und deren Ersatz werden behandelt.
Warum von pdfplumber wechseln?
Vier überzeugende Gründe für die Migration:
- 29-mal schneller — PDF Oxide verarbeitet durchschnittlich 0,8 ms pro Seite, pdfplumber 23,2 ms. Ein 100-seitiges Dokument wird in 80 ms statt 2,3 Sekunden verarbeitet.
- Unterstützung verschlüsselter PDFs — pdfplumber kann verschlüsselte PDFs überhaupt nicht öffnen. PDF Oxide verarbeitet alle Verschlüsselungsmethoden transparent, einschließlich AES-256.
- Bildextraktion — pdfplumber verfügt über keine Bildextraktionsfunktion. PDF Oxide extrahiert eingebettete Bilder in einem einzigen Aufruf.
- Markdown-Ausgabe — pdfplumber gibt Tabellen als Python-Listen zurück, die manuell formatiert werden müssen. PDF Oxide erzeugt strukturiertes Markdown mit beibehaltenen Tabellen, bereit für den Einsatz mit LLMs.
Schritt 1: Installation
pip install pdf_oxide
pip uninstall pdfplumber # optional
Schritt 2: Imports ersetzen
# Vorher
import pdfplumber
# Nachher
from pdf_oxide import PdfDocument
Schritt 3: API-Zuordnungstabelle
| Aufgabe | pdfplumber | PDF Oxide |
|---|---|---|
| PDF öffnen | pdfplumber.open("file.pdf") |
PdfDocument("file.pdf") |
| Seitenanzahl | len(pdf.pages) |
doc.page_count() |
| Text extrahieren | pdf.pages[0].extract_text() |
doc.extract_text(0) |
| Zeichenpositionen | pdf.pages[0].chars |
doc.extract_chars(0) |
| Tabellen extrahieren | pdf.pages[0].extract_tables() |
doc.to_markdown(0) |
| Formularfelder | Nicht unterstützt (nur Lesen) | doc.get_form_fields() |
| Verschlüsseltes PDF | Nicht unterstützt | PdfDocument("file.pdf", password="pw") |
| Bilder extrahieren | Nicht unterstützt | doc.extract_image_bytes(0) |
| In Markdown | Nicht unterstützt | doc.to_markdown(0) |
| Rendern | Nicht unterstützt | doc.render_page(0) |
| OCR | Nicht unterstützt | doc.extract_text_ocr(0) |
| PDF erstellen | Nicht unterstützt | Pdf.from_markdown("# Title") |
Schritt 4: Gängige Musteränderungen
Textextraktion
pdfplumber erfordert einen Kontextmanager. PDF Oxide nicht:
# pdfplumber — Kontextmanager erforderlich
import pdfplumber
with pdfplumber.open("report.pdf") as pdf:
for page in pdf.pages:
text = page.extract_text()
print(text)
# PDF Oxide — kein Kontextmanager nötig
from pdf_oxide import PdfDocument
doc = PdfDocument("report.pdf")
for i in range(doc.page_count()):
text = doc.extract_text(i)
print(text)
Tabellenextraktion
pdfplumber gibt Tabellen als verschachtelte Python-Listen zurück. PDF Oxide erzeugt Markdown:
# pdfplumber — gibt Liste von Listen zurück
import pdfplumber
with pdfplumber.open("report.pdf") as pdf:
tables = pdf.pages[0].extract_tables()
for table in tables:
for row in table:
print(row)
# PDF Oxide — strukturierte Markdown-Ausgabe
from pdf_oxide import PdfDocument
doc = PdfDocument("report.pdf")
md = doc.to_markdown(0)
print(md) # Tabellen als Markdown-Tabellen gerendert
Zeichenweise Extraktion
# pdfplumber
import pdfplumber
with pdfplumber.open("report.pdf") as pdf:
chars = pdf.pages[0].chars
for c in chars:
print(f"{c['text']} at ({c['x0']}, {c['top']})")
# PDF Oxide
from pdf_oxide import PdfDocument
doc = PdfDocument("report.pdf")
chars = doc.extract_chars(0)
for c in chars:
print(f"{c.char} at ({c.x}, {c.y})")
Verschlüsselte PDFs (neue Funktion)
pdfplumber kann verschlüsselte PDFs nicht öffnen. PDF Oxide verarbeitet sie transparent:
from pdf_oxide import PdfDocument
# Funktioniert mit jeder Verschlüsselungsmethode, einschließlich AES-256
doc = PdfDocument("encrypted.pdf", password="password")
text = doc.extract_text(0)
print(text)
Bildextraktion (neue Funktion)
pdfplumber bietet keine Bildextraktion. PDF Oxide macht es einfach:
from pdf_oxide import PdfDocument
doc = PdfDocument("report.pdf")
images = doc.extract_image_bytes(0)
for i, img in enumerate(images):
with open(f"image_{i}.{img['format']}", "wb") as f:
f.write(img["data"])
OCR für gescannte Dokumente (neue Funktion)
pdfplumber kann gescannte PDFs nicht verarbeiten. PDF Oxide beinhaltet integriertes OCR:
from pdf_oxide import PdfDocument
doc = PdfDocument("scanned.pdf")
text = doc.extract_text_ocr(0)
print(text)
Wichtige Unterschiede
- Kein Kontextmanager nötig — pdfplumber verwendet
with pdfplumber.open(...) as pdf:. PDF Oxide benötigt keinen Kontextmanager. - Verschlüsselte PDFs — pdfplumber kann sie überhaupt nicht öffnen. PDF Oxide verarbeitet die Verschlüsselung transparent.
- Tabellen — pdfplumber gibt Python-Listen zurück. PDF Oxide erzeugt Tabellen im Markdown- oder HTML-Format. Für komplexe Tabellen mit visuellem Debugging können Sie pdfplumber parallel zu PDF Oxide verwenden.
Schritt 5: Migration testen
Führen Sie Ihre vorhandenen Testdateien mit beiden Bibliotheken aus und vergleichen Sie die Ausgaben:
from pdf_oxide import PdfDocument
doc = PdfDocument("your-test-file.pdf")
# Textextraktion überprüfen
text = doc.extract_text(0)
print(text[:500])
# Seitenanzahl überprüfen
print(f"Pages: {doc.page_count()}")
# Formularfelder überprüfen (falls zutreffend)
fields = doc.get_form_fields()
for f in fields:
print(f"{f.name}: {f.value}")
Weitere Migrationsanleitungen
Verwandte Seiten
- PDF Oxide vs pdfplumber — detaillierter Vergleich
- Erste Schritte mit Python — Installationsanleitung
- Text aus PDF extrahieren — Anleitung zur Textextraktion