Skip to content

PDF Oxide vs pypdfium2

PDF Oxide und pypdfium2 sind beide schnelle, nativ kompilierte Python-PDF-Bibliotheken. pypdfium2 umschließt Googles PDFium-Engine; PDF Oxide steht auf einem Rust-Kern. Der entscheidende Unterschied ist der Umfang: pypdfium2 ist vor allem Reader und Renderer, PDF Oxide deckt den gesamten PDF-Lebenszyklus ab — vom Erstellen über Extrahieren, OCR und Formularbearbeitung bis zu Verschlüsselung und Compliance.

Wesentliche Unterschiede

Geschwindigkeit. Beide sind schnell. PDF Oxide ist etwas schneller: 0,8ms Durchschnitt gegenüber 4,1ms (5,1-facher Unterschied). Beide sind dramatisch schneller als reine Python-Bibliotheken.

Funktionsumfang. pypdfium2 ist schreibgeschützt mit Rendering. PDF Oxide bietet zusätzlich Erstellung, Bearbeitung, Formularschreiben, Verschlüsselung, Markdown-/HTML-Ausgabe und OCR.

Zuverlässigkeit. PDF Oxide besteht 100% der gültigen PDFs. pypdfium2 besteht 99,2% — 31 Fehler.

Lizenz. Beide sind permissiv. PDF Oxide ist MIT; pypdfium2 ist Apache-2.0. Keine AGPL-Bedenken bei beiden.

Schnellvergleich

PDF Oxide pypdfium2
Durchschn. Extraktionszeit 0,8ms 4,1ms
Erfolgsrate (3.830 PDFs) 100% 99,2%
Lizenz MIT Apache-2.0
Sprache Rust + PyO3 C (PDFium)
Textextraktion Ja Ja
Zeichenpositionen Ja Ja
Bildextraktion Ja Ja
Markdown-Ausgabe Ja Nein
HTML-Ausgabe Ja Nein
PDF-Erstellung Ja Nein
PDF-Bearbeitung Ja Nein
Formularfelder Lesen + Schreiben Nur Lesen
Verschlüsselung Lesen + Schreiben Nur Lesen
Rendering Ja Ja
OCR Integriert Nein
Suche Regex + räumlich Ja

Code-Vergleich

Textextraktion

PDF Oxide:

from pdf_oxide import PdfDocument

doc = PdfDocument("report.pdf")
text = doc.extract_text(0)
print(text)

pypdfium2:

import pypdfium2 as pdfium

pdf = pdfium.PdfDocument("report.pdf")
page = pdf[0]
textpage = page.get_textpage()
text = textpage.get_text_range()
print(text)

Bildextraktion

PDF Oxide:

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"])

pypdfium2:

import pypdfium2 as pdfium

pdf = pdfium.PdfDocument("report.pdf")
page = pdf[0]
for i, obj in enumerate(page.get_objects()):
    if obj.type == pdfium.FPDF_PAGEOBJ_IMAGE:
        bitmap = obj.get_bitmap()
        bitmap.to_pil().save(f"image_{i}.png")

PDF-Erstellung

PDF Oxide:

from pdf_oxide import Pdf

pdf = Pdf.from_markdown("# Report\n\nQuarterly results are in.")
pdf.save("report.pdf")

pypdfium2:

# pypdfium2 kann keine PDFs erstellen.
# Es ist eine schreibgeschützte Bibliothek mit Rendering-Fähigkeiten.

Rendering

PDF Oxide:

from pdf_oxide import PdfDocument

doc = PdfDocument("report.pdf")
image = doc.render_page(0, dpi=150)
image.save("page.png")

pypdfium2:

import pypdfium2 as pdfium

pdf = pdfium.PdfDocument("report.pdf")
page = pdf[0]
bitmap = page.render(scale=150/72)
bitmap.to_pil().save("page.png")

Benchmark-Details

Metrik PDF Oxide pypdfium2
Durchschn. Extraktionszeit 0,8ms 4,1ms
p99-Extraktionszeit 9ms 42ms
Erfolgsrate (gültige PDFs) 100% (3.823/3.823) 99,2% (3.792/3.823)

Beide Bibliotheken verwenden nativen Code (Rust bzw. C), aber die Textextraktionspipeline von PDF Oxide ist speziell für diese Aufgabe optimiert — Einzeldurchlauf-Extraktion mit vorab allokierten Puffern und gecachten Seitenbäumen.

Siehe vollständige Benchmark-Methodik für Korpusdetails.

Funktionsvollständigkeit

Der größte Unterschied zwischen diesen Bibliotheken ist der Umfang. pypdfium2 ist ein Reader mit Rendering; PDF Oxide deckt den gesamten PDF-Lebenszyklus ab:

Fähigkeit PDF Oxide pypdfium2
Lesen und extrahieren Ja Ja
Seiten rendern Ja Ja
PDFs erstellen Ja (Markdown, HTML, Bilder) Nein
Bestehende PDFs bearbeiten Ja (Text, Bilder, Annotationen) Nein
Formularfelder ausfüllen Ja Nein
Verschlüsselung schreiben Ja (AES-256) Nein
Markdown-/HTML-Ausgabe Ja Nein
Gescannte Seiten per OCR Ja (PaddleOCR via ONNX) Nein
PDF/A-Validierung Ja Nein

Wenn Sie nur PDFs lesen und rendern müssen, ist pypdfium2 eine solide Wahl. Wenn Sie irgendeine Schreibfähigkeit benötigen — Erstellung, Bearbeitung, Formularausfüllung oder Verschlüsselung — ist PDF Oxide die Einzelbibliothekslösung.

pypdfium2-Lizenz (Apache-2.0)

pypdfium2 ist unter Apache-2.0 lizenziert, was kommerzielle Nutzung erlaubt. Es nutzt jedoch Googles PDFium (die Chromium-PDF-Engine), die eine eigene BSD-artige Lizenz hat. Beide sind permissiv.

Wichtige Überlegungen:

  • Apache-2.0 — permissiv, erlaubt kommerzielle Nutzung, erfordert Namensnennung
  • PDFium-Abhängigkeit — Binärdatei enthält Chromiums PDFium-Engine (~15 MB)
  • Googles Release-Zyklus — pypdfium2 hängt von PDFium-Releases des Chromium-Projekts ab
  • Keine Python-API-Stabilitätsgarantie — die API folgt eng der C-API von PDFium

PDF Oxide ist MIT-lizenziert — noch permissiver als Apache-2.0, ohne Namensnennungsanforderungen für Binärdistributionen.

Wann welches verwenden

Wählen Sie PDF Oxide, wenn:

  • Sie mehr als Lesen/Rendern benötigen (Erstellung, Bearbeitung, Formulare, Verschlüsselung)
  • Sie Markdown- oder HTML-Konvertierung wünschen
  • Sie integriertes OCR für gescannte Dokumente wünschen
  • Sie die höchste Zuverlässigkeit benötigen (100% gegenüber 99,2%)
  • Geschwindigkeit entscheidend ist und der 5-fache Unterschied im Maßstab relevant wird

Wählen Sie pypdfium2, wenn:

  • Sie nur PDFs lesen und rendern müssen
  • Sie die spezifische Rendering-Ausgabe von PDFium bevorzugen
  • Sie einen kleineren Abhängigkeits-Footprint wünschen

Verwandte Seiten