Эффективно манипулируйте и извлекайте информацию из PDF-документов с помощью Python

Вот 6 лучших пакетов Python для работы с файлами PDF. Эти пакеты предлагают всестороннюю поддержку различных операций с PDF, включая извлечение текста и изображений, а также управление файлами PDF.

  • PyPDF2
  • PdfMiner
  • Табула
  • PDFQuery
  • ПиМиПДФ
  • Питессеракт

PyPDF2

pip install PyPDF2

PyPDF2 — самая популярная библиотека для парсинга PDF-файлов на Python.

Мы используем объект PdfReader, который позволяет нам получить доступ к содержимому PDF.

Мы можем извлечь метаданные файла:

from PyPDF2 import PdfReader

reader = PdfReader(path)

meta = reader.metadata
print("Total Pages: ", len(reader.pages))

# All of the following could be None!
print("Author: ", meta.author)
print("Creator: ", meta.creator)
print("Producer: ", meta.producer)
print("Subject: ", meta.subject)
print("Title: ", meta.title)

Мы можем извлечь содержимое с любой страницы:

page = reader.pages[0]
print(page.extract_text())

PdfMiner

pip install pdfminer pip install pdfminer.six

PDFMiner — еще одна широко используемая библиотека для парсинга PDF-файлов.

from pdfminer.high_level import extract_text
from pdfminer.layout import LAParams

text = extract_text(path, laparams=LAParams())
print(text)

Табула

pip install tabula-py

Tabula предоставляет простой интерфейс для извлечения табличных данных из PDF-файлов в DataFrames Pandas.

import tabula

tables = tabula.read_pdf(path, pages='all')

for i, table in enumerate(tables, start=1):
    print(f"Table {i}:")
    print(table)
    print("-----------------------")

PDFQuery

pip install pdfquery

PDFQuery — это библиотека, построенная на основе lxml и pdfminer.six, которая позволяет извлекать информацию из документов PDF с помощью выражений XPath.

from pdfquery import PDFQuery

pdf = PDFQuery(path)

pdf.load()

for element in pdf.tree.iter():
    print(element.text)

PyMuPDF

pip install pymupdf

PyMuPDF предоставляет широкий спектр возможностей для анализа и обработки PDF-документов, включая извлечение текста и изображений.

import fitz

doc = fitz.open(path) # open a document
out = open("output.txt", "wb") # create a text output
for page in doc: # iterate the document pages
    text = page.get_text().encode("utf8") # get plain text (is in UTF-8)
    out.write(text) # write text of page
    out.write(bytes((12,))) # write page delimiter (form feed 0x0C)
out.close()
print(text)

Питессеракт

Pytesseract — это библиотека Python, которая служит оболочкой для движка Google Tesseract OCR (оптическое распознавание символов). Технология OCR позволяет извлекать текст из изображений или отсканированных документов. Pytesseract предоставляет простой в использовании интерфейс для использования Tesseract OCR в Python.

Сначала устанавливаем двигатель.

brew install tesseract (МакОС)

sudo apt install tesseract-ocr (Убунту)

Окна

Установить пакеты:

pip install pytesseract pip install pdf2image

Pytesseract работает с изображениями, поэтому сначала нужно преобразовать файлы pdf в изображения с помощью пакета pdf2image.

from pdf2image import convert_from_path

images = convert_from_path(path)

for i, image in enumerate(images):
    image.save(f'page_{i + 1}.jpg', 'JPEG')

Затем откройте эти изображения с помощью пакета PIL и используйте пакет pytesseract для извлечения из него текстов.

import pytesseract
from PIL import Image

image = Image.open("page_1.jpg")

text = pytesseract.image_to_string(image)
print(text)

Читать далее











Источники

https://pypdf2.readthedocs.io/en/latest/index.html

https://pdfminersix.readthedocs.io/en/latest/tutorial/install.html

https://tabula-py.readthedocs.io/en/latest/

https://pypi.org/project/pdfquery/#quick-start

https://pymupdf.readthedocs.io/en/latest/index.html

https://github.com/madmaze/pytesseract

https://pypi.org/project/pdf2image/