Skip to content

Міграція з pdfplumber на PDF Oxide

Повний посібник з переходу з pdfplumber на PDF Oxide. Охоплює всі API, які ви зараз використовуєте, та способи їх заміни.

Чому варто перейти з pdfplumber?

Чотири вагомі причини для міграції:

  1. У 29 разів швидше — PDF Oxide обробляє сторінку в середньому за 0,8 мс, pdfplumber — за 23,2 мс. 100-сторінковий документ обробляється за 80 мс замість 2,3 секунди.
  2. Підтримка зашифрованих PDF — pdfplumber взагалі не може відкривати зашифровані PDF. PDF Oxide прозоро обробляє всі методи шифрування, включаючи AES-256.
  3. Витягування зображень — pdfplumber не вміє витягувати зображення. PDF Oxide витягує вбудовані зображення за один виклик.
  4. Вивід у Markdown — pdfplumber повертає таблиці у вигляді списків Python, які потрібно форматувати вручну. PDF Oxide видає структурований Markdown зі збереженням таблиць, готовий для LLM.

Крок 1: Встановлення

pip install pdf_oxide
pip uninstall pdfplumber  # необов'язково

Крок 2: Заміна імпортів

# Було
import pdfplumber

# Стало
from pdf_oxide import PdfDocument

Крок 3: Таблиця відповідності API

Завдання pdfplumber PDF Oxide
Відкрити PDF pdfplumber.open("file.pdf") PdfDocument("file.pdf")
Кількість сторінок len(pdf.pages) doc.page_count()
Витягти текст pdf.pages[0].extract_text() doc.extract_text(0)
Позиції символів pdf.pages[0].chars doc.extract_chars(0)
Витягти таблиці pdf.pages[0].extract_tables() doc.to_markdown(0)
Поля форм Не підтримується (лише читання) doc.get_form_fields()
Зашифрований PDF Не підтримується PdfDocument("file.pdf", password="pw")
Витягти зображення Не підтримується doc.extract_image_bytes(0)
У Markdown Не підтримується doc.to_markdown(0)
Рендеринг Не підтримується doc.render_page(0)
OCR Не підтримується doc.extract_text_ocr(0)
Створити PDF Не підтримується Pdf.from_markdown("# Title")

Крок 4: Типові зміни в коді

Витягування тексту

pdfplumber потребує контекстний менеджер. PDF Oxide — ні:

# pdfplumber — потрібен контекстний менеджер
import pdfplumber
with pdfplumber.open("report.pdf") as pdf:
    for page in pdf.pages:
        text = page.extract_text()
        print(text)

# PDF Oxide — без контекстного менеджера
from pdf_oxide import PdfDocument
doc = PdfDocument("report.pdf")
for i in range(doc.page_count()):
    text = doc.extract_text(i)
    print(text)

Витягування таблиць

pdfplumber повертає таблиці у вигляді вкладених списків Python. PDF Oxide виводить їх у форматі Markdown:

# pdfplumber — повертає список списків
import pdfplumber
with pdfplumber.open("report.pdf") as pdf:
    tables = pdf.pages[0].extract_tables()
    for table in tables:
        for row in table:
            print(row)

# PDF Oxide — структурований Markdown
from pdf_oxide import PdfDocument
doc = PdfDocument("report.pdf")
md = doc.to_markdown(0)
print(md)  # Таблиці відображені як Markdown-таблиці

Посимвольне витягування

# pdfplumber
import pdfplumber
with pdfplumber.open("report.pdf") as pdf:
    chars = pdf.pages[0].chars
    for c in chars:
        print(f"{c['text']} at ({c['x0']}, {c['top']})")

# PDF Oxide
from pdf_oxide import PdfDocument
doc = PdfDocument("report.pdf")
chars = doc.extract_chars(0)
for c in chars:
    print(f"{c.char} at ({c.x}, {c.y})")

Зашифровані PDF (нова можливість)

pdfplumber не може відкривати зашифровані PDF. PDF Oxide обробляє їх прозоро:

from pdf_oxide import PdfDocument

# Підтримує всі методи шифрування, включаючи AES-256
doc = PdfDocument("encrypted.pdf", password="password")
text = doc.extract_text(0)
print(text)

Витягування зображень (нова можливість)

pdfplumber не вміє витягувати зображення. 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"])

OCR для сканованих документів (нова можливість)

pdfplumber не обробляє скановані PDF. PDF Oxide включає вбудований OCR:

from pdf_oxide import PdfDocument

doc = PdfDocument("scanned.pdf")
text = doc.extract_text_ocr(0)
print(text)

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

  1. Без контекстного менеджера — pdfplumber використовує with pdfplumber.open(...) as pdf:. PDF Oxide не потребує контекстного менеджера.
  2. Зашифровані PDF — pdfplumber взагалі не може їх відкрити. PDF Oxide обробляє шифрування прозоро.
  3. Таблиці — pdfplumber повертає списки Python. PDF Oxide виводить таблиці у форматі Markdown або HTML. Для складних таблиць із візуальним налагодженням можна використовувати pdfplumber паралельно з PDF Oxide.

Крок 5: Тестування міграції

Прогоніть наявні тестові файли через обидві бібліотеки та порівняйте результати:

from pdf_oxide import PdfDocument

doc = PdfDocument("your-test-file.pdf")

# Перевірка витягування тексту
text = doc.extract_text(0)
print(text[:500])

# Перевірка кількості сторінок
print(f"Pages: {doc.page_count()}")

# Перевірка полів форми (за потреби)
fields = doc.get_form_fields()
for f in fields:
    print(f"{f.name}: {f.value}")

Інші посібники з міграції

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