Python pypdf pdfminer .six PDF操作

Python

電子で請求書や見積書を管理する会社も多くなってきてると思います
PDFファイルは編集ができないイメージがありますが、pythonのライブラリを使えば可能なことがたくさんあります

・環境

windows 11
python 3.12.2

pdfminer.six 20240706
pypdf 5.0.1

・テキストの取得

まず、ライブラリをインストールします

pip install pdfminer.six
pip install pypdf

手始めにテキストを抽出するサンプルコードを紹介します
カレントディレクトリに document.pdf というPDFファイルを用意します

from pdfminer.high_level import extract_text
from pathlib import Path

# PDFファイルのパスを格納
source = Path('document.pdf')

# テキスト抽出
text = extract_text(source)
# 複数ページある場合
text = extract_text(source, page_numbers=[0])

print(text)

これだけでテキストは読み込めると思います
ただレイアウトによっては、改行やカラムの順番などバラバラになる可能性はあります
日本語のテキスト抽出は pdfminer.six が得意で、英語は PyPDF2 3.0.1 が得意なようです

・画像の取得

画像の取得にはpypdfを使ってみます

from pypdf import PdfReader
import os

#PDFファイル読み込み
reader = PdfReader("test_file.pdf")

#リストにすべてのページを格納
all_page = reader.pages

#保存フォルダ作成、パス指定
save_dir="download_img/"
if not os.path.exists(save_dir):
    os.mkdir(save_dir)

#全てのページから一つずつ繰り返し
for page in all_page:
    #ページから画像を一つずつ繰り返し
    for image in page.images:
        #保存フォルダにimage.nameで保存
        with open(save_dir +image.name, "wb") as f:
            f.write(image.data)

これで保存フォルダにすべてのページから画像を取得してフォルダに保存できます

コメント