AI駆動の分析を使用してPDFドキュメントから構造化された意見やコメントを抽出します。このプロジェクトは、大規模なドキュメントの解析と OpenAI の言語モデルを使用した異なる観点の特定プロセスを自動化します。
Conversion は、PDFファイルから意見を抽出して構造化するための知的なドキュメント処理パイプラインです。LangChain と OpenAI の GPT モデルを使用して、ドキュメントページから異なるコメントと意見を自動的に特定・抽出し、非構造化テキストを清潔で構造化されたCSVデータセットに変換します。
- AI駆動の抽出: OpenAI の GPT モデルを使用した信頼性の高い意見抽出
- バッチ処理: 複数のドキュメントページを並列処理して高速抽出
- 設定可能なワークフロー: JSON ベースの設定で柔軟なジョブ定義とパラメータ設定
- スマートジョブ管理: ジョブの状態、依存関係、実行履歴を追跡
- 進捗追跡: リアルタイムの進捗更新と詳細なステータスレポート
- 再開可能な実行: パラメータの変更を検出し、影響を受けたステップのみを再実行
- 調査効率化: 大規模なパブリックコンサルテーションやアンケート文書から主要な意見を自動抽出
- スケーラブル分析: 並列ワーカーでドキュメントを大規模処理
- データ品質維持: 構造化された出力で一貫性のある、分析準備済みの清潔なデータセット
- 変更追跡: 設定変更を自動検出してデータ整合性を維持
- 柔軟な統合: モジュール設計により異なるドキュメントタイプとユースケースへの適応が容易
- Python 3.8以上
- OpenAI API キー(GPT モデル使用時)
- 処理するドキュメントが含まれたPDFファイル
- リポジトリをクローン:
git clone <repository-url>
cd conversion- 依存パッケージをインストール:
pip install -r requirements.txt- OpenAI API キーを設定:
export OPENAI_API_KEY="your-api-key-here"- 設定ファイル(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: 処理するページの最大数(すべて処理する場合は省略)
- PDFを
inputs/ディレクトリに配置:
mv your_document.pdf inputs/opinions.pdf- パイプラインを実行:
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-interactionconversion/
├── 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 依存パッケージ
パイプラインは JSON 設定を読み込み、すべての必須フィールドを検証し、デフォルト値とプロンプトを解決します。
システムは以下に基づいて実行するステップを決定します:
- 強制フラグ(
-f)ですべてを再処理 - 最後の実行からのパラメータ変更
- ステップ間の依存関係
- PyPDFを使用してPDFドキュメントを読み込み
- 個別のページに分割
各ページに対して:
- ページコンテンツを抽出プロンプトと共にOpenAIに送信
- JSON形式の構造化意見データを受信
- 清潔なコメントテキストを抽出
- 抽出されたすべての意見を単一の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 を参照。
前のジョブがクラッシュしました。5分待つか、outputs/<job-name>/status.json のロックを削除してください。
OPENAI_API_KEYが正しく設定されているか確認- API アカウントに利用可能なクレジットがあるか確認
- 指定されたモデル名が有効か確認
- PDF ファイルが
inputs/ディレクトリに存在することを確認 - ファイル名が設定と一致していることを確認(
.pdfなし) - PDF が破損していないか確認
- PDF が読み込み可能なテキストを含んでいるか確認(画像だけではないか)
- 抽出プロンプトがドキュメントタイプに適切か確認
- ワーカー数を増やすか、より強力なモデルを使用するか試す
貢献を歓迎します。貢献するには:
- リポジトリをフォーク
- 機能ブランチを作成 (
git checkout -b feature/your-feature) - 変更を加えて十分にテスト
- 明確な説明付きでプルリクエストを提出
詳細は LICENSE ファイルを参照。
問題、質問、提案がある場合:
- 既存の Issue とドキュメントを確認
- 問題の詳細情報付きで新しい Issue を開く
- 設定と関連するエラーメッセージを含める
注: このプロジェクトは OpenAI API キーが必要で、モデル使用に基づいてコストが発生します。使用量とコストを適切に監視してください。