Excel & IT Info

아이엑셀러 닷컴, 엑셀러TV

Python

PDF 파일 작업을 위한 6가지 Python 패키지

권현욱(엑셀러) 2023. 12. 30. 20:00
반응형

파이썬은 다양한 외부 라이브러리를 가져와서 사용할 수 있는 점이 장점 중 하나입니다. PDF 파일 작업을 할 때에 사용할 수 있는 파이썬 패키지 6가지를 소개합니다.

 

권현욱(엑셀러) | 아이엑셀러 닷컴 대표 · Microsoft Excel MVP · Excel 솔루션 프로바이더 · 작가

 

※ 이 글은 아래 기사 내용을 토대로 작성되었습니다만, 필자의 개인 의견이나 추가 자료들이 다수 포함되어 있습니다.


  • 원문: 6 Python Packages for Working with PDF Files
  • URL: https://medium.com/@Evenword/6-python-packages-for-working-with-pdf-files-5854c155ac8f

PyPDF2

PyPDF2는 Python에서 PDF 파일을 구문 분석하는 데 가장 널리 사용되는 라이브러리입니다.

pip install PyPDF2

 

PDF 내용에 액세스할 수 있는 pdfreader 개체를 사용하며 파일의 메타데이터를 추출할 수 있습니다.

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

PDFMiner는 PDF 파일 구문 분석에 널리 사용되는 라이브러리입니다.

pip install pdfminer pip install pdfminer.six
from pdfminer.high_level import extract_text
from pdfminer.layout import LAParams
text = extract_text(path, laparams=LAParams())
print(text)

 

Tabula

Tabula PDF에서 Pandas DataFrames로 표 형식 데이터를 추출하는 간단한 인터페이스를 제공합니다.

 

pip install tabula-py
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

PDFQuery XPath 표현식을 사용하여 PDF 문서에서 정보를 추출할 수 있는 lxml 및 pdfminer.six 위에 구축된 라이브러리입니다.

pip install pdfquery
from pdfquery import PDFQuery
pdf = PDFQuery(path)
pdf.load()
for element in pdf.tree.iter():
    print(element.text)

 

PyMuPDF

PyMuPDF 텍스트 및 이미지 추출을 포함하여 PDF 문서를 구문 분석하고 조작하기 위한 광범위한 기능을 제공합니다.

pip install pymupdf
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는 Google의 Tesseract OCR(광학 문자 인식) 엔진의 래퍼 역할을 하는 Python 라이브러리입니다. OCR 기술을 사용하면 이미지나 스캔한 문서에서 텍스트를 추출할 수 있습니다. Pytesseract는 Python에서 Tesseract OCR을 활용하기 위한 사용하기 쉬운 인터페이스를 제공합니다.

 

먼저 엔진을 설치합니다.

brew install tesseract (MacOS)

sudo apt install tesseract-ocr (Ubuntu)

 

윈도우

패키지를 설치합니다.

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)