
PDF остаётся одним из самых популярных форматов документов в мире: от отчётов и контрактов до научных публикаций и таблиц. Но как с ними работать на Python? В этой статье — шесть мощнейших библиотек для чтения, редактирования, генерации и анализа PDF-документов. С примерами и разбором сильных сторон каждой.
📄 1. PyPDF2
Что делает:
- Чтение PDF-документов
- Разделение и объединение страниц
- Извлечение текста
- Метаданные и шифрование
Плюсы:
- Простота в использовании
- Не требует внешних зависимостей
- Поддержка Python 3+
Пример: разъединение и объединение PDF-файлов
from PyPDF2 import PdfMerger
merger = PdfMerger()
merger.append(«doc1.pdf»)
merger.append(«doc2.pdf»)
merger.write(«merged.pdf»)
merger.close()
🔗 https://github.com/py-pdf/pypdf
⛏ 2. PDFMiner.six
Что делает:
- Извлекает текст и структуру PDF
- Сохраняет координаты, шрифты, layout
- Поддержка шифрованных файлов
Плюсы:
- Один из лучших для точного извлечения текста
- Подходит для анализа структуры и позиционирования текста
- Поддерживает многое из PDF 1.x
Пример: извлечение текста из файла
from pdfminer.high_level import extract_text
text = extract_text(«document.pdf»)
print(text)
🔗 https://github.com/pdfminer/pdfminer.six
🧰 3. pdfplumber
Что делает:
- Извлекает текст, таблицы, layout
- Возвращает координаты объектов
- Идеальна для разбора чеков, счетов, отчётов
Плюсы:
- Лучшая для извлечения таблиц
- Простое API
- Работает на базе PDFMiner, но удобнее
Пример: извлечение таблицы со страницы
import pdfplumber
with pdfplumber.open(«invoice.pdf») as pdf:
table = pdf.pages[0].extract_table()
for row in table:
print(row)
🔗 https://github.com/jsvine/pdfplumber
📊 4. ReportLab
Что делает:
- Генерация PDF-файлов с графикой, таблицами, стилями
- Поддерживает шрифты, диаграммы, форматы отчётов
- Используется для массовой генерации документов
Плюсы:
- Подходит для создания коммерческих отчётов
- Генерирует PDF «с нуля»
- Встраивается в Django, Flask и т.д.
Пример: генерация простого PDF-файла
from reportlab.pdfgen import canvas
c = canvas.Canvas(«hello.pdf»)
c.drawString(100, 750, «Привет, PDF!»)
c.save()
🔗 https://www.reportlab.com/opensource/
🌀 5. PyPDFium2
Что делает:
- Быстрый рендеринг страниц PDF
- Генерация изображений из страниц
- Извлечение bitmap-данных
Плюсы:
- Работает на движке Google PDFium
- Поддержка CFF шрифтов, transparency, layers
- Идеален для рендеринга превью
Пример: сохранить страницу как PNG
import pypdfium2
pdf = pypdfium2.PdfDocument(«example.pdf»)
page = pdf[0]
bitmap = page.render()
bitmap.to_pil().save(«page1.png»)
🔗 https://pypi.org/project/pypdfium2/
📐 6. PyMuPDF (fitz)
Что делает:
- Быстрое извлечение текста, изображений
- Рендеринг страниц в изображения
- Аннотирование, редактирование
Плюсы:
- Поддерживает PDF, EPUB, XPS
- Высокая производительность
- Удобный и мощный API
Пример: извлечение текста и изображения
import fitz # PyMuPDF
doc = fitz.open(«example.pdf»)
page = doc[0]
text = page.get_text()
pix = page.get_pixmap()
pix.save(«preview.png»)
🔗 https://github.com/pymupdf/PyMuPDF
📌 Итого
Библиотека Назначение Лучшая в чём? PyPDF2 Работа со страницами и мета Простое редактирование PDFMiner Извлечение текста и структуры Точная разбивка текста pdfplumber Текст и таблицы Чтение чеков, таблиц, таблиц ReportLab Генерация PDF Отчёты, диаграммы, вёрстка PyPDFium2 Рендеринг Превью страниц, PNG-выводPyMuPDF (fitz)
Универсал: рендер + извлечение Быстрый и функциональный движок