Ефективно манипулирайте и извличайте информация от PDF документи с помощта на Python

Ето топ 6 Python пакета за работа с PDF файлове. Тези пакети предлагат цялостна поддръжка за различни PDF операции, включително извличане на текст и изображения, както и манипулиране на PDF файлове.

  • PyPDF2
  • PdfMiner
  • Табула
  • PDFQuery
  • PyMyPDF
  • Pytesseract

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 файлове в Pandas DataFrames.

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

Pytesseract е библиотека на Python, която служи като обвивка за Tesseract OCR (Optical Character Recognition) машина на Google. OCR технологията позволява извличането на текст от изображения или сканирани документи. Pytesseract предоставя лесен за използване интерфейс за използване на Tesseract OCR в Python.

Първо инсталирайте двигателя.

brew install tesseract (MacOS)

sudo apt install tesseract-ocr (Ubuntu)

Windows

Инсталирайте пакети:

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/