Skip to content

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:

  1. 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.
  2. Unterstützung verschlüsselter PDFs — pdfplumber kann verschlüsselte PDFs überhaupt nicht öffnen. PDF Oxide verarbeitet alle Verschlüsselungsmethoden transparent, einschließlich AES-256.
  3. Bildextraktion — pdfplumber verfügt über keine Bildextraktionsfunktion. PDF Oxide extrahiert eingebettete Bilder in einem einzigen Aufruf.
  4. 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

  1. Kein Kontextmanager nötig — pdfplumber verwendet with pdfplumber.open(...) as pdf:. PDF Oxide benötigt keinen Kontextmanager.
  2. Verschlüsselte PDFs — pdfplumber kann sie überhaupt nicht öffnen. PDF Oxide verarbeitet die Verschlüsselung transparent.
  3. 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