Эффективно манипулируйте и извлекайте информацию из 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