pdf-processing-pro について
Python スクリプトとコマンドラインで PDF を処理するツールキットです。テキストや表の抽出、フォームの分析と入力、OCR、バッチ処理、結合、分割、検証に対応し、入力チェックとエラー報告も備えています。
主な機能
- 01テキストと表の抽出
- 02フォームの分析、検証、入力
- 03OCR によるスキャン PDF の処理
- 04PDF ファイルの一括処理
- 05PDF の結合、分割、検証
活用シーン
- 01レポートデータの CSV 抽出
- 02PDF フォームの入力と検証
- 03OCR によるスキャン文書の読み取り
- 04ワークフローでの複数 PDF の処理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ davila7/ claude-code-templates --skill pdf-processing-proインストール後、Claude Code で/pdf-processing-proを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
FORMS.mdOCR.mdTABLES.mdscripts/analyze_form.py詳細
PDF Processing Pro
事前構築済みスクリプト、包括的なエラー処理、複雑なワークフローのサポートを備えた、本番環境対応の PDF 処理ツールキットです。
クイックスタート
PDF からテキストを抽出
import pdfplumber
with pdfplumber.open("document.pdf") as pdf:
text = pdf.pages[0].extract_text()
print(text)
PDF フォームを分析(付属スクリプトを使用)
python scripts/analyze_form.py input.pdf --output fields.json
# Returns: JSON with all form fields, types, and positions
検証付きで PDF フォームに入力
python scripts/fill_form.py input.pdf data.json output.pdf
# Validates all fields before filling, includes error reporting
PDF から表を抽出
python scripts/extract_tables.py report.pdf --output tables.csv
# Extracts all tables with automatic column detection
機能
✅ 本番環境対応のスクリプト
すべてのスクリプトには以下が含まれます。
- エラー処理: 詳細なエラーメッセージを伴う安全な失敗処理
- 検証: 入力の検証と型チェック
- ロギング: タイムスタンプ付きの設定可能なロギング
- 型ヒント: IDE サポートのための完全な型注釈
- CLI インターフェース: すべてのスクリプトで
--helpフラグを利用可能 - 終了コード: 自動化に対応した適切な終了コード
✅ 包括的なワークフロー
- PDF フォーム: 完全なフォーム処理パイプライン
- 表の抽出: 高度な表の検出と抽出
- OCR 処理: スキャンされた PDF からのテキスト抽出
- バッチ処理: 複数の PDF を効率的に処理
- 検証: 処理前および処理後の検証
応用トピック
PDF フォーム処理
以下を含む完全なフォームワークフローについては、こちらをご覧ください。
- フィールドの分析と検出
- 動的なフォーム入力
- 検証ルール
- 複数ページのフォーム
- チェックボックスとラジオボタンの処理
FORMS.md を参照してください
表の抽出
複雑な表の抽出については、こちらをご覧ください。
- 複数ページにまたがる表
- セルの結合
- ネストされた表
- カスタムの表検出
- CSV/Excel への書き出し
TABLES.md を参照してください
OCR 処理
スキャンされた PDF および画像ベースのドキュメントについては、こちらをご覧ください。
- Tesseract との統合
- 言語サポート
- 画像の前処理
- 信頼度スコアリング
- バッチ OCR
OCR.md を参照してください
付属スクリプト
フォーム処理
analyze_form.py - フォームのフィールド情報を抽出
python scripts/analyze_form.py input.pdf [--output fields.json] [--verbose]
fill_form.py - データを使用して PDF フォームに入力
python scripts/fill_form.py input.pdf data.json output.pdf [--validate]
validate_form.py - 入力前にフォームデータを検証
python scripts/validate_form.py data.json schema.json
表の抽出
extract_tables.py - 表を CSV/Excel に抽出
python scripts/extract_tables.py input.pdf [--output tables.csv] [--format csv|excel]
テキスト抽出
extract_text.py - 書式を保持したままテキストを抽出
python scripts/extract_text.py input.pdf [--output text.txt] [--preserve-formatting]
ユーティリティ
merge_pdfs.py - 複数の PDF を結合
python scripts/merge_pdfs.py file1.pdf file2.pdf file3.pdf --output merged.pdf
split_pdf.py - PDF を個別のページに分割
python scripts/split_pdf.py input.pdf --output-dir pages/
validate_pdf.py - PDF の整合性を検証
python scripts/validate_pdf.py input.pdf
一般的なワークフロー
ワークフロー 1: フォーム送信の処理
# 1. Analyze form structure
python scripts/analyze_form.py template.pdf --output schema.json
# 2. Validate submission data
python scripts/validate_form.py submission.json schema.json
# 3. Fill form
python scripts/fill_form.py template.pdf submission.json completed.pdf
# 4. Validate output
python scripts/validate_pdf.py completed.pdf
ワークフロー 2: レポートからのデータ抽出
# 1. Extract tables
python scripts/extract_tables.py monthly_report.pdf --output data.csv
# 2. Extract text for analysis
python scripts/extract_text.py monthly_report.pdf --output report.txt
ワークフロー 3: バッチ処理
import glob
from pathlib import Path
import subprocess
# Process all PDFs in directory
for pdf_file in glob.glob("invoices/*.pdf"):
output_file = Path("processed") / Path(pdf_file).name
result = subprocess.run([
"python", "scripts/extract_text.py",
pdf_file,
"--output", str(output_file)
], capture_output=True)
if result.returncode == 0:
print(f"✓ Processed: {pdf_file}")
else:
print(f"✗ Failed: {pdf_file} - {result.stderr}")
エラー処理
すべてのスクリプトは一貫したエラーパターンに従います。
# Exit codes
# 0 - Success
# 1 - File not found
# 2 - Invalid input
# 3 - Processing error
# 4 - Validation error
# Example usage in automation
result = subprocess.run(["python", "scripts/fill_form.py", ...])
if result.returncode == 0:
print("Success")
elif result.returncode == 4:
print("Validation failed - check input data")
else:
print(f"Error occurred: {result.returncode}")
依存関係
すべてのスクリプトには以下が必要です。
pip install pdfplumber pypdf pillow pytesseract pandas
OCR を使用する場合のオプションの依存関係:
# Install tesseract-ocr system package
# macOS: brew install tesseract
# Ubuntu: apt-get install tesseract-ocr
# Windows: Download from GitHub releases
パフォーマンスのヒント
- 複数の PDF には バッチ処理を使用してください
- 対応している場合は、
--parallelフラグで マルチプロセシングを有効化してください - 再処理を避けるため、抽出済みデータをキャッシュしてください
- 早期に失敗させるため、入力を早い段階で検証してください
- 大きな PDF(50MB 超)には ストリーミングを使用してください
ベストプラクティス
- 処理前に 必ず入力を検証してください
- カスタムスクリプトでは try-except を使用してください
- デバッグのため、すべての操作をログに記録してください
- 本番環境で使用する前に、サンプル PDF でテストしてください
- 長時間実行される操作には タイムアウトを設定してください
- 自動化では 終了コードを確認してください
- 変更前に 元のファイルをバックアップしてください
トラブルシューティング
よくある問題
「Module not found」エラー:
pip install -r requirements.txt
Tesseract が見つからない:
# Install tesseract system package (see Dependencies)
大きな PDF でのメモリエラー:
# Process page by page instead of loading entire PDF
with pdfplumber.open("large.pdf") as pdf:
for page in pdf.pages:
text = page.extract_text()
# Process page immediately
権限エラー:
chmod +x scripts/*.py
ヘルプの参照先
すべてのスクリプトは --help に対応しています。
python scripts/analyze_form.py --help
python scripts/extract_tables.py --help
特定のトピックの詳細なドキュメントについては、以下を参照してください。