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
- Ви хочете менший обсяг залежностей
Пов’язані сторінки
- Бенчмарки продуктивності — повні результати корпусу
- Порівняння бібліотек PDF для Python — усі бібліотеки Python у порівнянні
- Початок роботи з Python — встановлення та перше вилучення