Skip to content

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

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