Skip to content

PDFに含まれる財務データをAIで解析し、最適なグラフを自動生成・可視化するFlaskアプリ。

Notifications You must be signed in to change notification settings

abej7/pdf-graph-insight

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UI Image

Flask OpenAI PDFから自動グラフ提案&作成するアプリ

🗂️ 概要

このアプリは、財務データを含むPDFファイル(画像含む)から情報を自動抽出し、内容に応じた最適なグラフ候補を提示。ユーザーが選択したグラフを動的に生成・表示する Flask ベースの可視化アプリです。

PDFファイルの分析&グラフ用データの作成はOpenAIにアクセスして実装しています。


🚀 主な機能

  • 📄 PDFからテキスト抽出(OCR対応)
  • 🤖 OpenAI API による構造化データの自動生成
  • 📊 自動提案されるグラフ候補の中から選択可能
  • 🖼️ 棒グラフ・折れ線・円グラフなど最大6種類に対応
  • 💾 生成されたグラフは static/graphs/ に保存され再利用可能
  • 🔁 セッションを用いた再選択・再描画もスムーズ

🖥 画面イメージ

1. 初期画面

UI Image

2. アップロードPDF選択

UI Image

3. PDF読込&OpenAIへグラフ候補抽出を依頼

UI Image

4. グラフ候補の一覧表示&必要なグラフをチェック&作成指示

UI Image

5. 作成したグラフを表示

UI Image


📂 ディレクトリ構成

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起動スクリプト


📈 対応グラフタイプ(6種類)

  1. 項目別棒グラフ
  2. 時系列棒グラフ
  3. 項目別分類積み上げ棒グラフ
  4. 時系列分類積み上げ棒グラフ
  5. 項目別折れ線グラフ(時系列)
  6. 円グラフ(構成比)

🛠 使用技術

区分 使用技術
言語 Python 3.x
フレームワーク Flask
グラフ描画 matplotlib
OCR PyMuPDF + pytesseract
LLM API OpenAI GPT-4o
HTML/CSS Bootstrap + Jinja2テンプレート

📦 セットアップ手順

  1. 仮想環境作成(任意):
python -m venv myenv
source myenv/bin/activate  # or myenv\Scripts\activate (Windows)
  1. 依存ライブラリのインストール:
pip install -r requirements.txt
  1. .env ファイルを作成して、OpenAIキーを記載:
OPENAI_API_KEY=sk-xxxxxxx
  1. アプリ起動:
python run.py
  1. ブラウザで http://127.0.0.1:5000 を開く。

OpenAIに要求するデータ形式(例)

{
  "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保存(ダウンロード)機能
  • 自動提案時における(指標名、カテゴリ名、グラフタイプ 等)の指定機能

About

PDFに含まれる財務データをAIで解析し、最適なグラフを自動生成・可視化するFlaskアプリ。

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published