1. はじめに
「PDFから表や特定の文字列を自動で抜き出したい」というニーズは多くあります。本記事ではPythonの pdfplumber、re(正規表現)、csv を組み合わせて、まるでAIのように効率よく情報を取り出す方法を解説します。
2. 使用するPythonライブラリの説明
- pdfplumber:PDFの中身(テキスト・表)を簡単に抜き出せる外部ライブラリ。OCR不要で構造を維持して抽出できます。
- re(正規表現):特定の文字パターン(例:電話番号、日付)を検出・抽出する標準ライブラリ。
- csv:抽出したデータをCSV形式で保存する標準ライブラリ。Excel等で開ける形で出力。
3. 環境構築とインストール
pip install pdfplumber
4. PDFからテキストを抽出する
📄 コード例
import pdfplumber with pdfplumber.open("sample.pdf") as pdf: for page in pdf.pages: text = page.extract_text() print(text)
解説:
pdfplumber.open(“sample.pdf”):PDFを開く
pdf.pages:ページリスト
extract_text():文字列抽出
with文:自動クローズで安全
pdfplumber.open(“sample.pdf”):PDFを開く
pdf.pages:ページリスト
extract_text():文字列抽出
with文:自動クローズで安全
5. 正規表現で必要な情報を抽出する
📄 コード例
import re pattern = r"電話番号: (\d{2,4}-\d{2,4}-\d{4})" matches = re.findall(pattern, text) print(matches)
解説:
r””:生文字列。
\d{2,4}:2~4桁の数字
–:ハイフン
re.findall():全件マッチリスト返却
例: 電話番号: 03-1234-5678 → [’03-1234-5678′]
r””:生文字列。
\d{2,4}:2~4桁の数字
–:ハイフン
re.findall():全件マッチリスト返却
例: 電話番号: 03-1234-5678 → [’03-1234-5678′]
6. 抽出したデータをCSVファイルに保存する
📄 コード例
import csv with open("output.csv", "w", newline="", encoding="utf-8") as f: writer = csv.writer(f) writer.writerow(["氏名", "電話番号"]) # ヘッダー行 for name, phone in zip(names, phones): writer.writerow([name, phone])
解説:
open():書き込みモードで開く
csv.writer():CSV書き込み用
writerow():1行ずつ出力
zip():複数リストの同時ループ
open():書き込みモードで開く
csv.writer():CSV書き込み用
writerow():1行ずつ出力
zip():複数リストの同時ループ
7.よくあるエラーと対策
問題 | 原因例 | 解決法 |
---|---|---|
テキストが抽出されない | PDFが画像ベース | OCR(Tesseract等)を併用 |
正規表現がマッチしない | パターン違い | テキストを出力してパターン確認 |
CSVが文字化け(Excelで) | エンコーディング不一致 | “utf-8-sig” を使う |
8. まとめ
これらの技術を組み合わせれば、PDFからのデータ収集を“人の手を介さず”に行うことができます。AI的な自動処理の第一歩として、ぜひ活用してみてください!
🔍 関連キーワード(再掲)
Python PDF 自動処理 / pdfplumber 使い方 / Python 正規表現 抽出 / PDF CSV 変換 自動化 / Python データ収集 自動化 / Python AI風自動ツール
Python PDF 自動処理 / pdfplumber 使い方 / Python 正規表現 抽出 / PDF CSV 変換 自動化 / Python データ収集 自動化 / Python AI風自動ツール