Skip to content

PDF Oxide vs pypdfium2

PDF Oxide і pypdfium2 — швидкі, нативно скомпільовані Python-бібліотеки для PDF. pypdfium2 обгортає движок PDFium від Google; PDF Oxide побудований на Rust-ядрі. Головна різниця — в обсязі: pypdfium2 насамперед рідер і рендерер, тоді як PDF Oxide охоплює весь життєвий цикл PDF — створення, видобування, OCR, форми, шифрування та compliance.

Ключові відмінності

Швидкість. Обидві швидкі. PDF Oxide трохи швидший: 0.8мс середнє проти 4.1мс (різниця у 5.1×). Обидві драматично швидші за бібліотеки на чистому Python.

Функціональність. pypdfium2 — тільки для читання з рендерингом. PDF Oxide додає створення, редагування, запис форм, шифрування, вивід Markdown/HTML та OCR.

Надійність. PDF Oxide проходить 100% валідних PDF. pypdfium2 проходить 99.2% — 31 збій.

Ліцензія. Обидві дозвільні. PDF Oxide — MIT; pypdfium2 — Apache-2.0. Без проблем з AGPL у обох.

Швидке порівняння

PDF Oxide pypdfium2
Середній час вилучення 0.8мс 4.1мс
Рівень успіху (3 830 PDF) 100% 99.2%
Ліцензія MIT Apache-2.0
Мова Rust + PyO3 C (PDFium)
Вилучення тексту Так Так
Позиції символів Так Так
Вилучення зображень Так Так
Вивід Markdown Так Ні
Вивід HTML Так Ні
Створення PDF Так Ні
Редагування PDF Так Ні
Поля форм Читання + Запис Тільки читання
Шифрування Читання + Запис Тільки читання
Рендеринг Так Так
OCR Вбудований Ні
Пошук Regex + просторовий Так

Код пліч-о-пліч

Вилучення тексту

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)

Рендеринг

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

Деталі бенчмарку

Метрика PDF Oxide pypdfium2
Середній час вилучення 0.8мс 4.1мс
Час вилучення p99 9мс 42мс
Рівень успіху (валідні PDF) 100% (3 823/3 823) 99.2% (3 792/3 823)

Обидві бібліотеки використовують нативний код (Rust та C відповідно), але конвеєр вилучення тексту PDF Oxide оптимізований спеціально для цього завдання.

Дивіться повну методологію бенчмарку для деталей корпусу.

Повнота функцій

Можливість PDF Oxide pypdfium2
Читання та вилучення Так Так
Рендеринг сторінок Так Так
Створення PDF Так (Markdown, HTML, зображення) Ні
Редагування існуючих PDF Так (текст, зображення, анотації) Ні
Заповнення полів форм Так Ні
Запис шифрування Так (AES-256) Ні
Вивід Markdown/HTML Так Ні
OCR сканованих сторінок Так (PaddleOCR через ONNX) Ні
Валідація PDF/A Так Ні

Якщо вам потрібно лише читати та рендерити PDF, pypdfium2 — надійний вибір. Якщо вам потрібна будь-яка можливість запису — PDF Oxide є рішенням однієї бібліотеки.

Коли використовувати кожен

Оберіть PDF Oxide, якщо:

  • Вам потрібно більше, ніж читання/рендеринг (створення, редагування, форми, шифрування)
  • Ви хочете конвертацію Markdown або HTML
  • Ви хочете вбудований OCR для сканованих документів
  • Вам потрібна найвища надійність (100% проти 99.2%)

Оберіть pypdfium2, якщо:

  • Вам потрібно лише читати та рендерити PDF
  • Ви надаєте перевагу специфічному виводу рендерингу PDFium
  • Ви хочете менший обсяг залежностей

Пов’язані сторінки