mcpField
P
pdf-processing-pro

pdf-processing-pro

github.com/davila7ドキュメント33.0k735 回インストール今日更新
リポジトリ

pdf-processing-pro について

Python スクリプトとコマンドラインで PDF を処理するツールキットです。テキストや表の抽出、フォームの分析と入力、OCR、バッチ処理、結合、分割、検証に対応し、入力チェックとエラー報告も備えています。

主な機能

  1. 01テキストと表の抽出
  2. 02フォームの分析、検証、入力
  3. 03OCR によるスキャン PDF の処理
  4. 04PDF ファイルの一括処理
  5. 05PDF の結合、分割、検証

活用シーン

  1. 01レポートデータの CSV 抽出
  2. 02PDF フォームの入力と検証
  3. 03OCR によるスキャン文書の読み取り
  4. 04ワークフローでの複数 PDF の処理

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/davila7/claude-code-templates --skill pdf-processing-pro

インストール後、Claude Code で/pdf-processing-proを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

FORMS.md
OCR.md
TABLES.md
scripts/
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 超)には ストリーミングを使用してください

ベストプラクティス

  1. 処理前に 必ず入力を検証してください
  2. カスタムスクリプトでは try-except を使用してください
  3. デバッグのため、すべての操作をログに記録してください
  4. 本番環境で使用する前に、サンプル PDF でテストしてください
  5. 長時間実行される操作には タイムアウトを設定してください
  6. 自動化では 終了コードを確認してください
  7. 変更前に 元のファイルをバックアップしてください

トラブルシューティング

よくある問題

「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

特定のトピックの詳細なドキュメントについては、以下を参照してください。

  • FORMS.md - フォーム処理の完全ガイド
  • TABLES.md - 高度な表の抽出
  • OCR.md - スキャンされた PDF の処理

コメント