Skip to content

PDF Oxide vs pypdfium2

Sowohl PDF Oxide als auch pypdfium2 sind schnelle, nativ kompilierte PDF-Bibliotheken für Python. pypdfium2 umhüllt Googles PDFium-Engine; PDF Oxide baut auf einem Rust-Kern auf. Der entscheidende Unterschied ist der Umfang: pypdfium2 ist in erster Linie ein Leser und Renderer, während PDF Oxide den gesamten PDF-Lebenszyklus abdeckt.

Wesentliche Unterschiede

Geschwindigkeit. Beide sind schnell. PDF Oxide ist etwas schneller: 0,8 ms im Mittel gegenüber 4,1 ms (Faktor 5,1). Beide sind drastisch schneller als reine Python-Bibliotheken.

Funktionen. pypdfium2 ist schreibgeschützt mit Rendering. PDF Oxide ergänzt Erstellung, Bearbeitung, Formularbeschreibung, Verschlüsselung, Markdown-/HTML-Ausgabe und OCR.

Zuverlässigkeit. PDF Oxide verarbeitet 100 % der gültigen PDFs erfolgreich. pypdfium2 erreicht 99,2 % — 31 Fehlschläge.

Lizenz. Beide sind permissiv. PDF Oxide steht unter MIT; pypdfium2 unter Apache-2.0. Bei keiner gibt es AGPL-Bedenken.

Schnellvergleich

PDF Oxide pypdfium2
Mittlere Extraktionszeit 0,8 ms 4,1 ms
Erfolgsquote (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 im direkten 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 cannot create PDFs.
# It is a read-only library with rendering capabilities.

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

Kennzahl PDF Oxide pypdfium2
Mittlere Extraktionszeit 0,8 ms 4,1 ms
p99-Extraktionszeit 9 ms 42 ms
Erfolgsquote (gültige PDFs) 100 % (3.823/3.823) 99,2 % (3.792/3.823)

Beide Bibliotheken verwenden nativen Code (Rust bzw. C), doch die Textextraktions-Pipeline von PDF Oxide ist speziell für diese Aufgabe optimiert — Extraktion in einem Durchgang mit vorab zugewiesenen Puffern und zwischengespeicherten Seitenbäumen.

Details zum Korpus finden Sie in der vollständigen Benchmark-Methodik.

Funktionsvollständigkeit

Der größte Unterschied zwischen diesen Bibliotheken ist der Umfang. pypdfium2 ist ein Leser 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
Vorhandene PDFs bearbeiten Ja (Text, Bilder, Anmerkungen) Nein
Formularfelder ausfüllen Ja Nein
Verschlüsselung schreiben Ja (AES-256) Nein
Markdown-/HTML-Ausgabe Ja Nein
OCR gescannter Seiten Ja (PaddleOCR über ONNX) Nein
PDF/A-Validierung Ja Nein

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

pypdfium2-Lizenz (Apache-2.0)

pypdfium2 steht unter der Apache-2.0-Lizenz, die kommerzielle Nutzung erlaubt. Sie umhüllt jedoch Googles PDFium (die PDF-Engine von Chromium), die ihre eigene BSD-artige Lizenz hat. Beide sind permissiv.

Wichtige Aspekte:

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

PDF Oxide steht unter der MIT-Lizenz — noch permissiver als Apache-2.0, ohne Anforderungen zur Namensnennung bei der Verteilung von Binärdateien.

Wann welche Bibliothek

Wählen Sie PDF Oxide, wenn:

  • Sie mehr als Lesen/Rendern benötigen (Erstellung, Bearbeitung, Formulare, Verschlüsselung)
  • Sie eine Markdown- oder HTML-Konvertierung möchten
  • Sie integriertes OCR für gescannte Dokumente möchten
  • Sie höchste Zuverlässigkeit benötigen (100 % gegenüber 99,2 %)
  • Geschwindigkeit entscheidend ist und der Faktor 5 im großen Maßstab ins Gewicht fällt

Wählen Sie pypdfium2, wenn:

  • Sie PDFs nur lesen und rendern müssen
  • Sie die spezifische Rendering-Ausgabe von PDFium bevorzugen
  • Sie einen geringeren Abhängigkeitsfußabdruck möchten

Verwandte Seiten