PDFからテキストを抽出したい――業務でよくあるニーズの1つですが、Pythonには複数のライブラリがあり、用途に応じて使い分けが必要です。
この記事では、PyPDF2 と pdfplumber という2つの主要ライブラリを使って、「PDFのテキスト抽出」を実践的に解説します。
前提:Python環境とPDFファイルの準備
まずは必要なライブラリをインストールしましょう。
pip install PyPDF2 pdfplumber
テスト用のPDFは、以下のようなシンプルな構造でOKです。
PyPDF2を使う方法(レイアウトは無視)
✔ 特徴
軽量でシンプル
レイアウト無視(段組・表などが崩れる)
テキスト抽出が速い
▶ サンプルコード
import PyPDF2
with open('sample.pdf', 'rb') as f:
reader = PyPDF2.PdfReader(f)
for i, page in enumerate(reader.pages):
text = page.extract_text()
print(f'--- Page {i+1} ---')
print(text)
📝 実行結果(例)
diff
--- Page 1 ---
見出し
本文が続きます。
pdfplumberを使う方法(レイアウト保持)
✔ 特徴
表・改行・段組の認識に強い
文字の位置情報(x, y座標)も取得可能
処理はやや重め
▶ サンプルコード
import pdfplumber
with pdfplumber.open('sample.pdf') as pdf:
for i, page in enumerate(pdf.pages):
text = page.extract_text()
print(f'--- Page {i+1} ---')
print(text)
📝 表抽出なども可能!
tables = page.extract_tables()
for table in tables:
for row in table:
print(row)
ライブラリ | 適している場面 | 注意点 |
---|---|---|
PyPDF2 | 単純なテキスト取得 | レイアウトが崩れる可能性 |
pdfplumber | 表や段組・改行が重要なPDF | 処理がやや重い |
応用アイデア
自動で複数PDFを一括処理してExcelにまとめる(→ pandas連携)
重要ワードの抽出・自然言語処理と組み合わせる
テキストから帳票番号・日付などを正規表現で抽出
まとめ
PythonでPDFのテキストを抽出するには、PyPDF2(軽量・シンプル)とpdfplumber(高精度) を使い分けるのが基本です。
✔ PyPDF2:速くて軽い。構造が単純なPDF向け
✔ pdfplumber:精度重視。帳票や表、段組などに対応
関連リンク
関連記事:PythonでPDFからテキスト抽出する方法(サイト版)
🙋♂️ おわりに
PDF処理は「業務自動化」の第一歩として非常に有効です。この記事が、みなさんの業務効率化に役立てば幸いです!
「OCR付きPDFの処理」や「PDFを分割・結合したい」といった応用ニーズがあれば、ぜひコメントで教えてください!