Skip to content

macrosoft3/conversion

Repository files navigation

Conversion: PDF意見抽出パイプライン

AI駆動の分析を使用してPDFドキュメントから構造化された意見やコメントを抽出します。このプロジェクトは、大規模なドキュメントの解析と OpenAI の言語モデルを使用した異なる観点の特定プロセスを自動化します。

プロジェクトの概要

Conversion は、PDFファイルから意見を抽出して構造化するための知的なドキュメント処理パイプラインです。LangChain と OpenAI の GPT モデルを使用して、ドキュメントページから異なるコメントと意見を自動的に特定・抽出し、非構造化テキストを清潔で構造化されたCSVデータセットに変換します。

主な機能

  • AI駆動の抽出: OpenAI の GPT モデルを使用した信頼性の高い意見抽出
  • バッチ処理: 複数のドキュメントページを並列処理して高速抽出
  • 設定可能なワークフロー: JSON ベースの設定で柔軟なジョブ定義とパラメータ設定
  • スマートジョブ管理: ジョブの状態、依存関係、実行履歴を追跡
  • 進捗追跡: リアルタイムの進捗更新と詳細なステータスレポート
  • 再開可能な実行: パラメータの変更を検出し、影響を受けたステップのみを再実行

このプロジェクトが便利な理由

  • 調査効率化: 大規模なパブリックコンサルテーションやアンケート文書から主要な意見を自動抽出
  • スケーラブル分析: 並列ワーカーでドキュメントを大規模処理
  • データ品質維持: 構造化された出力で一貫性のある、分析準備済みの清潔なデータセット
  • 変更追跡: 設定変更を自動検出してデータ整合性を維持
  • 柔軟な統合: モジュール設計により異なるドキュメントタイプとユースケースへの適応が容易

セットアップ

前提条件

  • Python 3.8以上
  • OpenAI API キー(GPT モデル使用時)
  • 処理するドキュメントが含まれたPDFファイル

インストール

  1. リポジトリをクローン:
git clone <repository-url>
cd conversion
  1. 依存パッケージをインストール:
pip install -r requirements.txt
  1. OpenAI API キーを設定:
export OPENAI_API_KEY="your-api-key-here"

基本的な使用方法

  1. 設定ファイル(JSON)を作成して、入力ドキュメントと処理パラメータを指定:
{
  "name": "意見抽出の例",
  "question": "このトピックについてのご意見をお聞かせください",
  "input": "opinions",
  "model": "gpt-3.5-turbo",
  "conversion": {
    "model": "gpt-4",
    "workers": 2,
    "limit": 100
  }
}

設定フィールド:

  • name: プロジェクト名
  • question: コンテキスト用の質問またはトピック
  • input: 入力PDF名(inputs/ ディレクトリから、.pdf 拡張子なし)
  • model: プロジェクトのデフォルト LLM モデル(デフォルト: gpt-3.5-turbo
  • conversion.model: 意見抽出に使用するモデル
  • conversion.workers: バッチ処理の並列ワーカー数
  • conversion.limit: 処理するページの最大数(すべて処理する場合は省略)
  1. PDFを inputs/ ディレクトリに配置:
mv your_document.pdf inputs/opinions.pdf
  1. パイプラインを実行:
python main.py config.json

パイプラインは以下を実行します:

  • 設定を読み込んで検証
  • 実行計画の確認をリクエスト
  • AI を使用してPDFから意見を抽出
  • 結果を outputs/<config-name>/comments.csv に保存

高度な使用方法

再処理を強制:

python main.py config.json -f

特定のステップのみを実行:

python main.py config.json -o conversion

確認プロンプトをスキップ(自動実行用):

python main.py config.json -skip-interaction

プロジェクト構造

conversion/
├── main.py                      # エントリポイント
├── utils.py                     # 共有ユーティリティ(設定、状態、LLM)
├── steps/
│   └── conversion.py            # 意見抽出ステップ
├── prompts/
│   └── conversion/
│       └── default.txt          # 抽出プロンプトテンプレート
├── configs/                     # 設定ファイルの例
│   └── opinions.json
├── inputs/                      # 入力PDFファイル
├── outputs/                     # 生成結果と状態
│   └── <job-name>/
│       ├── comments.csv         # 抽出された意見
│       └── status.json          # ジョブの状態と履歴
├── specs.json                   # ステップ仕様
└── requirements.txt             # Python 依存パッケージ

動作のしくみ

1. 設定と検証

パイプラインは JSON 設定を読み込み、すべての必須フィールドを検証し、デフォルト値とプロンプトを解決します。

2. ジョブ計画

システムは以下に基づいて実行するステップを決定します:

  • 強制フラグ(-f)ですべてを再処理
  • 最後の実行からのパラメータ変更
  • ステップ間の依存関係

3. PDF 処理

  • PyPDFを使用してPDFドキュメントを読み込み
  • 個別のページに分割

4. 並列意見抽出

各ページに対して:

  • ページコンテンツを抽出プロンプトと共にOpenAIに送信
  • JSON形式の構造化意見データを受信
  • 清潔なコメントテキストを抽出

5. 結果の保存

  • 抽出されたすべての意見を単一のCSVファイルに結合
  • status.json に実行履歴と状態を保持
  • 完了したステップ、時間、パラメータを追跡

出力

実行が成功したら、以下にファイルがあります:

  • outputs/<job-name>/comments.csv - ID とコメント本文を含む抽出された意見
  • outputs/<job-name>/status.json - 詳細な実行ログと履歴

設定リファレンス

パラメータ 必須 説明
name はい 文字列 プロジェクト名
question はい 文字列 質問またはトピックのコンテキスト
input はい 文字列 入力PDF名(.pdf なし)
model いいえ 文字列 デフォルト LLM モデル(デフォルト: gpt-3.5-turbo
conversion.model いいえ 文字列 抽出用モデル(デフォルト: 親の model
conversion.workers いいえ 整数 並列ワーカー数(デフォルト: 1)
conversion.limit いいえ 整数 処理するページの最大数(デフォルト: すべて)

よくあるユースケース

パブリックコンサルテーション

パブリックコンサルテーションドキュメントから構造化されたフィードバックを抽出して政策決定に活用。

研究分析

学術論文やレポートから異なる観点を自動カテゴリ化・抽出。

アンケート分析

スキャンされたアンケート回答を処理して、主要なテーマと意見をスケール調査。

ステークホルダーフィードバック

コンサルテーションプロセスにおける複数のステークホルダーからのフィードバックを収集・構造化。

依存パッケージ

主要なパッケージ:

  • langchain - LLM オーケストレーション フレームワーク
  • langchain_openai - OpenAI 統合
  • pypdf - PDF パージング
  • pandas - データ処理と CSV 出力
  • openai - OpenAI API クライアント
  • pydantic - データ検証と構造化出力

完全な依存パッケージリストは requirements.txt を参照。

トラブルシューティング

「Job already running and locked」

前のジョブがクラッシュしました。5分待つか、outputs/<job-name>/status.json のロックを削除してください。

OpenAI API エラー

  • OPENAI_API_KEY が正しく設定されているか確認
  • API アカウントに利用可能なクレジットがあるか確認
  • 指定されたモデル名が有効か確認

PDF 読み込みエラー

  • PDF ファイルが inputs/ ディレクトリに存在することを確認
  • ファイル名が設定と一致していることを確認(.pdf なし)
  • PDF が破損していないか確認

結果が空

  • PDF が読み込み可能なテキストを含んでいるか確認(画像だけではないか)
  • 抽出プロンプトがドキュメントタイプに適切か確認
  • ワーカー数を増やすか、より強力なモデルを使用するか試す

貢献

貢献を歓迎します。貢献するには:

  1. リポジトリをフォーク
  2. 機能ブランチを作成 (git checkout -b feature/your-feature)
  3. 変更を加えて十分にテスト
  4. 明確な説明付きでプルリクエストを提出

ライセンス

詳細は LICENSE ファイルを参照。

サポート

問題、質問、提案がある場合:

  • 既存の Issue とドキュメントを確認
  • 問題の詳細情報付きで新しい Issue を開く
  • 設定と関連するエラーメッセージを含める

: このプロジェクトは OpenAI API キーが必要で、モデル使用に基づいてコストが発生します。使用量とコストを適切に監視してください。

About

AI駆動の分析を使用してPDFドキュメントから構造化された意見やコメントを抽出します。このプロジェクトは、大規模なドキュメントの解析と OpenAI の言語モデルを使用した異なる観点の特定プロセスを自動化します。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages