このアプリは、財務データを含むPDFファイル(画像含む)から情報を自動抽出し、内容に応じた最適なグラフ候補を提示。ユーザーが選択したグラフを動的に生成・表示する Flask ベースの可視化アプリです。
PDFファイルの分析&グラフ用データの作成はOpenAIにアクセスして実装しています。
- 📄 PDFからテキスト抽出(OCR対応)
- 🤖 OpenAI API による構造化データの自動生成
- 📊 自動提案されるグラフ候補の中から選択可能
- 🖼️ 棒グラフ・折れ線・円グラフなど最大6種類に対応
- 💾 生成されたグラフは
static/graphs/
に保存され再利用可能 - 🔁 セッションを用いた再選択・再描画もスムーズ
pdf_graph_insight/
├── app/
│ ├── init.py # Flask初期化
│ ├── constants_pf.py # 定数管理
│ ├── generate_graphs_event_pf.py # グラフ生成処理(イベント別)
│ ├── prompt_templates_pf.py # プロンプトテンプレ管理
│ ├── routes_pf.py # ルーティング&セッション制御
│ ├── select_graphs_event_pf.py # グラフ選択画面の処理
│
│ ├── static/
│ │ ├── style.css # スタイルシート
│ │ └── graphs/ # 保存されたグラフ画像
│
│ └── templates/
│ ├── index.html # 初期アップロード画面
│ ├── select_graphs.html # グラフ選択画面
│ └── results.html # グラフ表示結果画面
│
├── uploads/ # アップロードされたPDF保存用
├── myenv/ # 仮想環境(.gitignore推奨)
├── .env # OpenAI APIキーなど環境変数
├── requirements.txt # 依存パッケージ
└── run.py # Flask起動スクリプト
- 項目別棒グラフ
- 時系列棒グラフ
- 項目別分類積み上げ棒グラフ
- 時系列分類積み上げ棒グラフ
- 項目別折れ線グラフ(時系列)
- 円グラフ(構成比)
区分 | 使用技術 |
---|---|
言語 | Python 3.x |
フレームワーク | Flask |
グラフ描画 | matplotlib |
OCR | PyMuPDF + pytesseract |
LLM API | OpenAI GPT-4o |
HTML/CSS | Bootstrap + Jinja2テンプレート |
- 仮想環境作成(任意):
python -m venv myenv
source myenv/bin/activate # or myenv\Scripts\activate (Windows)
- 依存ライブラリのインストール:
pip install -r requirements.txt
- .env ファイルを作成して、OpenAIキーを記載:
OPENAI_API_KEY=sk-xxxxxxx
- アプリ起動:
python run.py
- ブラウザで http://127.0.0.1:5000 を開く。
{
"title": "○○の項目毎分類積み上げ棒グラフ",
"graph_type": "項目毎分類積み上げ棒グラフ",
"indicatorName": "○○",
"unit": "100万円",
"categories": ["カテゴリA", "カテゴリB"],
"items": ["項目A", "項目B", "項目C"],
"values": [
[40, 30, 50], // カテゴリA
[20, 25, 15] // カテゴリB
]
}
- ファイル構成の規約を徹底して保守性・拡張性を意識
- Python + Flask + OpenAI の実用的なアプリ設計力
- OpenAI 利用の可能性を提案
- グラフタイプの拡張
- PDF保存(ダウンロード)機能
- 自動提案時における(指標名、カテゴリ名、グラフタイプ 等)の指定機能