PDF Oxide vs pdfplumber
PDF Oxide у 29 разів швидший за pdfplumber при видобуванні тексту і має більше функцій: експорт у Markdown/HTML, OCR без Tesseract та підтримку зашифрованих PDF. pdfplumber усе ще сильніший у складній детекції таблиць — ця сторінка допоможе вам обрати правильний інструмент.
Ключові відмінності
Швидкість. pdfplumber — чистий Python (побудований на pdfminer). Ядро Rust PDF Oxide вилучає текст із середнім 0.8мс проти 23.2мс — у 29× швидше.
Надійність. PDF Oxide проходить 100% з 3 830 тестових PDF. pdfplumber проходить 98.8% — 46 збоїв на валідних PDF.
Таблиці. pdfplumber має найкраще вилучення таблиць серед усіх бібліотек PDF для Python. Виявлення таблиць PDF Oxide функціональне, але менш зріле для складних макетів із багатьма рядками та стовпцями та об’єднаними комірками.
Обсяг. pdfplumber — тільки для читання. PDF Oxide додає створення, редагування, шифрування, рендеринг та вивід Markdown/HTML.
Швидке порівняння
| PDF Oxide | pdfplumber | |
|---|---|---|
| Середній час вилучення | 0.8мс | 23.2мс |
| Рівень успіху (3 830 PDF) | 100% | 98.8% |
| Ліцензія | MIT | MIT |
| Мова | Rust + PyO3 | Чистий Python |
| Вилучення тексту | Так | Так |
| Позиції символів | Так | Так |
| Вилучення таблиць | Базове | Розширене |
| Вилучення зображень | Так | Ні |
| Візуальна налагодження | Ні | Так |
| Вивід Markdown | Так | Ні |
| Вивід HTML | Так | Ні |
| Створення PDF | Так | Ні |
| Редагування PDF | Так | Ні |
| Шифрування | Читання + Запис | Ні |
| Рендеринг | Так | Ні |
| Поля форм | Читання + Запис | Тільки читання |
Код пліч-о-пліч
Вилучення тексту
PDF Oxide:
from pdf_oxide import PdfDocument
doc = PdfDocument("report.pdf")
text = doc.extract_text(0)
print(text)
pdfplumber:
import pdfplumber
with pdfplumber.open("report.pdf") as pdf:
page = pdf.pages[0]
text = page.extract_text()
print(text)
Вилучення таблиць
PDF Oxide:
from pdf_oxide import PdfDocument
doc = PdfDocument("invoice.pdf")
md = doc.to_markdown(0, detect_headings=True)
print(md)
pdfplumber:
import pdfplumber
with pdfplumber.open("invoice.pdf") as pdf:
page = pdf.pages[0]
tables = page.extract_tables()
for table in tables:
for row in table:
print(row)
extract_tables() pdfplumber повертає структуровані дані рядків/стовпців із налаштовуваним виявленням ліній. Для складних таблиць з об’єднаними комірками, заголовками, що охоплюють стовпці, або макетами без рамок алгоритми pdfplumber є більш надійними.
Деталі бенчмарку
| Метрика | PDF Oxide | pdfplumber |
|---|---|---|
| Середній час вилучення | 0.8мс | 23.2мс |
| Час вилучення p99 | 9мс | 189мс |
| Рівень успіху (валідні PDF) | 100% (3 823/3 823) | 98.8% (3 777/3 823) |
Різниця у швидкості 29× виникає через архітектуру pdfplumber на чистому Python. PDF Oxide обробляє весь парсинг, декодування шрифтів та збирання тексту у скомпільованому Rust.
Дивіться повну методологію бенчмарку для деталей корпусу.
Коли використовувати кожен
Оберіть PDF Oxide, якщо:
- Швидкість має значення. Обробка тисяч PDF, де у 29× швидше означає хвилини замість годин.
- Вам потрібно більше, ніж вилучення. Створення, редагування, шифрування, рендеринг або вивід Markdown.
- Ви хочете максимальну надійність. 100% рівень успіху проти 98.8%.
- Вам потрібне вилучення зображень. pdfplumber не вилучає зображення.
Оберіть pdfplumber, якщо:
- Складне вилучення таблиць — ваш основний випадок використання. Алгоритми таблиць pdfplumber краще справляються з об’єднаними комірками та таблицями без рамок.
- Вам потрібна візуальна налагодження. pdfplumber може рендерити анотовані зображення сторінок.
- Ви надаєте перевагу чистому Python. Без скомпільованих залежностей.
Використовувати обидва:
from pdf_oxide import PdfDocument
import pdfplumber
# Швидке вилучення тексту з PDF Oxide
doc = PdfDocument("report.pdf")
text = doc.extract_text(0)
# Складне вилучення таблиць з pdfplumber
with pdfplumber.open("report.pdf") as pdf:
tables = pdf.pages[0].extract_tables()
Пов’язані сторінки
- Бенчмарки продуктивності — повні результати корпусу
- Порівняння бібліотек PDF для Python — усі бібліотеки Python у порівнянні
- Вилучення таблиць з PDF — посібник з вилучення таблиць
- Початок роботи з Python — встановлення та перше вилучення