図表追加スキル
論文分析レポートに、元論文および参照論文から重要な図表(Figure/Table)を抽出・追加します。
概要
このスキルは以下を行います:
- •既存レポートの分析
- •元論文から重要な図表を特定・抽出
- •参照論文から重要な図表を特定・抽出
- •図表の保存
- •レポートへの図表埋め込み
- •図表の説明文を追加
重要: このスキルは元論文だけでなく、レポートで言及されている参照論文からも図表を抽出します。
Python モジュール
このスキルは src/figure_extractor.py モジュールを使用します。
CLI の使用方法
# 基本的な使用方法(自動検出モード) uv run figure-extractor https://arxiv.org/abs/2401.12345 # 特定の図のみ抽出 uv run figure-extractor 2401.12345 --figures 1,2,3 # 埋め込み画像を全て抽出 uv run figure-extractor 2401.12345 --mode images # 特定のページを画像として抽出 uv run figure-extractor 2401.12345 --mode pages --pages 2,5,8 # Table を除外 uv run figure-extractor 2401.12345 --no-tables # ズーム倍率を変更(高解像度) uv run figure-extractor 2401.12345 --zoom 3.0
Python API の使用方法
from pathlib import Path
from src.figure_extractor import (
FigureExtractor,
generate_markdown_embed,
update_report_with_figures,
)
from src.arxiv_helper import download_pdf, extract_arxiv_id
# arXiv ID を抽出して PDF をダウンロード
arxiv_id = extract_arxiv_id("https://arxiv.org/abs/2401.12345")
pdf_path = download_pdf(arxiv_id, output_dir="downloads")
# 図表を抽出
extractor = FigureExtractor(output_dir="reports/figures", zoom=2.0)
# 方法1: 自動検出で Figure/Table を抽出
result = extractor.extract_from_pdf(
pdf_path,
arxiv_id,
figure_numbers=[1, 2, 3], # 特定の図のみ
extract_tables=True,
)
# 方法2: 埋め込み画像を全て抽出
result = extractor.extract_embedded_images(pdf_path, arxiv_id)
# 方法3: 特定のページを画像として抽出
result = extractor.extract_page_as_image(pdf_path, arxiv_id, page_numbers=[2, 5, 8])
# 結果を確認
print(f"Extracted {len(result.figures)} figures")
for fig in result.figures:
print(f" - {fig.figure_id}: {fig.image_path}")
# Markdown 埋め込みコードを生成
for fig in result.figures:
print(generate_markdown_embed(fig, relative_to=Path("reports")))
# レポートに図表を自動挿入
updated_content = update_report_with_figures(
"reports/2401.12345_report.md",
result,
insert_positions={
"fig1": "### 3.2 アーキテクチャ",
"table1": "### 5.1 主要な結果",
},
)
ワークフロー
1. 対象レポートと論文の特定
1.1 レポートの読み込み
# 最新のレポートを確認 ls -lt reports/*.md | head -5
対象レポートを Read ツールで読み込み、以下を把握:
- •論文の arXiv ID
- •レポートの構造
- •既に言及されている Figure/Table
1.2 元論文の取得と図表抽出
# PDF をダウンロードして図表を抽出 uv run figure-extractor <arxiv_id>
2. 重要な図表の特定
2.1 論文全体をスキャン
Read ツールで PDF を読み取り、全ての Figure と Table を特定:
## 論文内の図表一覧 | 番号 | 種類 | ページ | タイトル/キャプション | 重要度 | |------|------|--------|---------------------|--------| | Figure 1 | 図 | 2 | System Architecture | 高 | | Figure 2 | 図 | 4 | Training Pipeline | 高 | | Table 1 | 表 | 6 | Main Results | 高 | | Figure 3 | 図 | 7 | Ablation Study | 中 |
2.2 重要な図表の選定基準
以下の基準で優先度を判定:
高優先度(必須):
- •アーキテクチャ図: システム全体の構造を示す図
- •メイン結果: 主要な実験結果のテーブル/グラフ
- •手法の概念図: 提案手法の核心を示す図
- •比較図: ベースラインとの比較を示すグラフ
中優先度(推奨):
- •アブレーション結果: アブレーション研究の結果
- •ケーススタディ: 具体的な事例を示す図
- •分類体系図: サーベイ論文のTaxonomy図
低優先度(オプション):
- •補足図: Appendix の詳細図
- •実装詳細図: 特定の実装を示す図
3. 図表の抽出
3.1 CLI ツールで抽出(推奨)
# 全ての図表を自動検出して抽出 uv run figure-extractor 2401.12345 # 特定の図のみ抽出 uv run figure-extractor 2401.12345 --figures 1,2,5 # 埋め込み画像を全て抽出(ベクター図に対応) uv run figure-extractor 2401.12345 --mode images # 特定のページ全体を画像として抽出 uv run figure-extractor 2401.12345 --mode pages --pages 2,5,8
3.2 抽出した図表の命名規則
reports/figures/{arxiv_id}/
├── fig1.png # Figure 1
├── fig2.png # Figure 2
├── table1.png # Table 1
├── fig3.png # Figure 3
└── references/ # 参照論文の図表
└── ref1_xxx_fig1.png
4. 参照論文の図表抽出(詳細ワークフロー)
参照論文からの図表抽出は、レポートの理解を深めるために重要です。以下の詳細なワークフローに従ってください。
4.1 レポートから参照論文の arXiv ID を抽出
レポートの「重要な参照論文」セクションを読み取り、各論文の arXiv URL から ID を抽出します。
手順:
- •
Readツールでレポートを読み込む - •「参照論文の詳細」セクションを探す
- •各論文の URL フィールドから arXiv ID を抽出
抽出対象の例:
| **URL** | https://arxiv.org/abs/2310.08560 | → arXiv ID: 2310.08560 | **URL** | https://arxiv.org/abs/2302.04761 | → arXiv ID: 2302.04761
4.2 重要な参照論文の選定基準
全ての参照論文から図を抽出するのではなく、以下の基準で 3-5 本 を選定:
| 優先度 | 条件 | 抽出する図の種類 |
|---|---|---|
| 最高 | ベースライン/比較対象として使用 | アーキテクチャ図、結果図 |
| 高 | 提案手法の基盤となっている | 手法の概念図、アルゴリズム図 |
| 中 | 関連アプローチとして詳しく言及 | 全体像を示す図 |
| 低 | 背景知識として引用 | 通常は不要 |
選定例(サーベイ論文の場合):
- •MemGPT → メモリアーキテクチャ図(Figure 1)
- •ReAct → Thought-Action-Observation サイクル図
- •LATS → MCTS 探索木の図
- •Reflexion → 自己反省ループの図
4.3 参照論文の PDF 取得と図表抽出
各参照論文について以下を実行:
# 1. ディレクトリを作成
mkdir -p reports/figures/{main_arxiv_id}/references
# 2. 参照論文の PDF をダウンロード
uv run arxiv-helper https://arxiv.org/abs/{ref_arxiv_id}
# 3. 図表を抽出(特定の図のみ)
uv run figure-extractor {ref_arxiv_id} --figures 1 --output-dir reports/figures/{main_arxiv_id}/references
# 4. ファイル名をリネーム(参照論文であることを明示)
mv reports/figures/{main_arxiv_id}/references/fig1.png \
reports/figures/{main_arxiv_id}/references/{ref_name}_{ref_arxiv_id}_fig1.png
複数の参照論文を並列で処理する例:
# 並列でダウンロード
uv run arxiv-helper 2310.08560 & # MemGPT
uv run arxiv-helper 2302.04761 & # Toolformer
uv run arxiv-helper 2210.03629 & # ReAct
wait
# 各論文から図を抽出
for id in 2310.08560 2302.04761 2210.03629; do
uv run figure-extractor $id --figures 1 --output-dir reports/figures/{main_id}/references
done
4.4 参照論文の図を特定する方法
参照論文の PDF を Read ツールで読み込み、重要な図を特定します。
特定すべき図:
- •論文の Figure 1: 通常、手法の全体像を示す
- •アーキテクチャ図: システム構造を示す図
- •アルゴリズムの可視化: 処理フローを示す図
- •主要結果の図: 性能比較グラフ等
PDF 読み取り例:
# Read ツールで参照論文の PDF を読み取り
Read downloads/{ref_arxiv_id}.pdf
# 図のページ番号を特定後、ページ単位で抽出
uv run figure-extractor {ref_arxiv_id} --mode pages --pages 2,5
4.5 参照論文図表の命名規則
reports/figures/{main_arxiv_id}/references/
├── memgpt_2310.08560_fig1.png # MemGPT の Figure 1
├── toolformer_2302.04761_fig1.png # Toolformer の Figure 1
├── react_2210.03629_fig1.png # ReAct の Figure 1
├── reflexion_2303.11366_fig1.png # Reflexion の Figure 1
└── lats_2310.04406_fig2.png # LATS の Figure 2
命名規則:
- •
{短縮名}_{arxiv_id}_fig{番号}.png - •短縮名は論文のキーワード(memgpt, react, lats 等)
4.6 参照論文の図をレポートに埋め込む
参照論文の図は、レポートの「参照論文の詳細」セクション内の各論文説明に追加します。
埋め込み位置の例:
### [1]. MemGPT: Towards LLMs as Operating Systems | 項目 | 内容 | |------|------| | **著者** | Charles Packer, et al. | | **URL** | https://arxiv.org/abs/2310.08560 |  *Figure 1 (MemGPT): 階層的メモリシステムのアーキテクチャ。メインコンテキストと外部メモリの関係を示す。* #### 概要 MemGPTは、LLMをオペレーティングシステムになぞらえ...
5. レポートへの図表埋め込み
5.1 図表の挿入位置
元論文の図表:
| レポートセクション | 挿入する図表 |
|---|---|
| サーベイ/研究の概要 | Figure: 研究の発展・全体像 |
| 提案手法 > アーキテクチャ | Figure: System Architecture |
| 提案手法 > 手法の概要 | Figure: Method Overview |
| 実験 > 結果 | Table: Main Results, Figure: Comparison |
| 結果と考察 > アブレーション | Figure: Ablation Study |
参照論文の図表:
| レポートセクション | 挿入する図表 |
|---|---|
| 参照論文 > [論文名] > 概要の直後 | 参照論文の Figure 1(アーキテクチャ図) |
| 参照論文 > [論文名] > 手法の概要 | 参照論文の手法説明図 |
| 比較分析セクション | 複数論文の比較図(並べて表示) |
5.2 図表埋め込みフォーマット
### 3.2 アーキテクチャ

*Figure 1: [論文からのキャプション]*
本アーキテクチャは以下のコンポーネントから構成される:
- [コンポーネント1の説明]
- [コンポーネント2の説明]
5.3 表の埋め込み
表は可能な限り Markdown 形式で再現し、画像は補助として使用:
### 5.1 主要な結果
**Table 1: Main Results**
| Method | Accuracy | F1 Score | Latency |
|--------|----------|----------|---------|
| Baseline | 85.2 | 84.1 | 120ms |
| Proposed | **92.4** | **91.8** | 95ms |

*Table 1: [論文からのキャプション]*
5.4 参照論文の図表埋め込み
参照論文の図は、レポートの「参照論文の詳細」セクション内に追加します。
フォーマット:
### [1]. MemGPT: Towards LLMs as Operating Systems
| 項目 | 内容 |
|------|------|
| **著者** | Charles Packer, Vivian Fang, et al. |
| **年** | 2023 |
| **URL** | https://arxiv.org/abs/2310.08560 |
#### アーキテクチャ図

*Figure 1 (MemGPT 論文より): MemGPT の階層的メモリアーキテクチャ。LLM のコンテキストウィンドウをメインメモリ、外部ストレージを仮想メモリとして扱い、OS のページング機構を模倣している。*
#### 概要
MemGPTは、LLMをオペレーティングシステムになぞらえ...
複数の参照論文図を並べて比較する例:
### メモリアーキテクチャの比較
以下の図は、主要なメモリ手法のアーキテクチャを比較しています。
| MemGPT | MemoryBank |
|--------|------------|
|  |  |
| 階層的メモリ(メイン + 外部) | 忘却曲線に基づくメモリ管理 |
6. 図表の説明追加
6.1 図表の詳細解説
各図表について、以下の解説を追加:
#### Figure 1 の詳細解説 **図の目的**: [この図が何を示しているか] **主要な要素**: 1. **[要素1]**: [説明] 2. **[要素2]**: [説明] 3. **[要素3]**: [説明] **データフロー**: [入力] → [処理1] → [処理2] → [出力] **注目すべきポイント**: - [ポイント1] - [ポイント2] **論文での言及**: > "[論文からの引用]"
6.2 図表間の関連付け
複数の図表の関連性を説明:
> **図表の関連性**: Figure 1 のアーキテクチャで示される各コンポーネントは、 > Table 1 の実験結果と対応しており、各コンポーネントの貢献度は > Figure 4 のアブレーション研究で検証されている。
実行コマンド
# 基本的な使用方法(元論文のみ) /add-figures 2401.12345 # 特定の図表のみを追加 /add-figures 2401.12345 --figures "1,2,5" # 参照論文の図表も含める(推奨) /add-figures 2401.12345 --include-references # 高解像度で抽出 /add-figures 2401.12345 --high-res # レポートファイルを直接指定 /add-figures @reports/2401.12345_report.md
引数の説明:
- •
--include-references: 参照論文から重要な図(3-5本分)を抽出してレポートに追加 - •
--figures "1,2,5": 特定の図番号のみを抽出 - •
--high-res: 高解像度(zoom=3.0)で抽出 - •
@reports/*.md: レポートファイルのパスを直接指定
出力構造
reports/
├── {arxiv_id}_report.md # 更新されたレポート
└── figures/
└── {arxiv_id}/
├── fig1.png # 元論文の Figure 1
├── fig2.png # 元論文の Figure 2
├── fig3.png # 元論文の Figure 3
├── table1.png # 元論文の Table 1
├── table2.png # 元論文の Table 2
└── references/ # 参照論文の図表
├── memgpt_2310.08560_fig1.png # MemGPT の Figure 1
├── toolformer_2302.04761_fig1.png # Toolformer の Figure 1
├── react_2210.03629_fig1.png # ReAct の Figure 1
├── reflexion_2303.11366_fig1.png # Reflexion の Figure 1
├── lats_2310.04406_fig1.png # LATS の Figure 1
└── swiftsage_2305.17390_fig1.png # SwiftSage の Figure 1
ディレクトリ構造の説明:
- •
figures/{arxiv_id}/: 元論文(分析対象論文)の図表 - •
figures/{arxiv_id}/references/: 参照論文の図表 - •ファイル名規則:
{論文短縮名}_{arxiv_id}_fig{番号}.png
依存関係
PyMuPDF は既にプロジェクトの依存関係に含まれています(pyproject.toml)。
# 依存関係のインストール(未実行の場合) uv sync
主な依存パッケージ
- •
pymupdf: PDF からの図表抽出に使用
トラブルシューティング
図表が抽出できない場合
- •ベクター形式の図: ページ全体をキャプチャする方法に切り替え
- •埋め込み画像がない: PDF が画像として図を含んでいない可能性
- •品質が低い: 解像度を上げて再抽出
大きな PDF の処理
# 特定のページのみ処理
uv run python -c "
import fitz
doc = fitz.open('paper.pdf')
# ページ 2, 5, 8 のみ処理
for page_num in [1, 4, 7]: # 0-indexed
page = doc[page_num]
# ...
"
レポート更新例
更新前
## 3. 提案手法 ### 3.2 アーキテクチャ 提案手法は、エンコーダー、メモリモジュール、デコーダーの3つの主要コンポーネントから構成される。
更新後
## 3. 提案手法 ### 3.2 アーキテクチャ  *Figure 1: Overview of the proposed architecture showing the encoder, memory module, and decoder components.* 提案手法は、エンコーダー、メモリモジュール、デコーダーの3つの主要コンポーネントから構成される。 **Figure 1 の詳細解説**: 本アーキテクチャは以下の処理フローで動作する: 1. **エンコーダー** (左側): 入力データを潜在表現に変換 2. **メモリモジュール** (中央): 過去の情報を保持・参照 3. **デコーダー** (右側): 潜在表現から出力を生成 > 論文より: "Our architecture integrates a novel memory mechanism that enables..."
修正履歴への追記
図表追加後、レポート末尾の修正履歴を更新:
## 修正履歴 | 日付 | 修正タイプ | 内容 | |------|-----------|------| | 2026-01-24 | 図表追加 | Figure 1-3, Table 1 を追加 |
完全なワークフロー(まとめ)
以下は、元論文と参照論文の両方から図表を抽出してレポートに追加する完全なワークフローです。
ステップ 1: レポートの分析
# レポートを読み込み、arXiv ID と参照論文を確認
Read reports/{arxiv_id}_report.md
確認事項:
- •元論文の arXiv ID
- •参照論文セクションの各論文の arXiv URL
- •既存の図表埋め込み状況
ステップ 2: 元論文の図表抽出
# 元論文の図表を抽出
uv run figure-extractor {arxiv_id}
ステップ 3: 参照論文の特定と選定
レポートの「参照論文の詳細」セクションから、arXiv URL を持つ論文を抽出:
2310.08560 → MemGPT 2302.04761 → Toolformer 2210.03629 → ReAct 2303.11366 → Reflexion 2310.04406 → LATS 2305.17390 → SwiftSage 2305.10250 → MemoryBank 2303.17580 → HuggingGPT
重要度に基づいて 3-5 本を選定。
ステップ 4: 参照論文の PDF 取得
# 参照論文をダウンロード uv run arxiv-helper 2310.08560 # MemGPT uv run arxiv-helper 2210.03629 # ReAct uv run arxiv-helper 2303.11366 # Reflexion
ステップ 5: 参照論文の PDF を読み取り、重要な図を特定
# 各参照論文の PDF を読み取り Read downloads/2310.08560.pdf
各論文から抽出すべき図を特定(通常 Figure 1 が最も重要)。
ステップ 6: 参照論文の図表を抽出
# 参照論文用のディレクトリ作成
mkdir -p reports/figures/{arxiv_id}/references
# 各参照論文から図を抽出
uv run figure-extractor 2310.08560 --figures 1 --output-dir reports/figures/{arxiv_id}/references
uv run figure-extractor 2210.03629 --figures 1 --output-dir reports/figures/{arxiv_id}/references
uv run figure-extractor 2303.11366 --figures 1 --output-dir reports/figures/{arxiv_id}/references
ステップ 7: ファイル名のリネーム
# 参照論文であることを明示するためリネーム
cd reports/figures/{arxiv_id}/references
mv fig1.png memgpt_2310.08560_fig1.png
# ... 他の論文も同様
ステップ 8: レポートへの埋め込み
Edit ツールを使用して、レポートの適切な位置に図表を埋め込む:
- •元論文の図表: 各セクションの冒頭に追加
- •参照論文の図表: 「参照論文の詳細」セクション内の各論文説明に追加
ステップ 9: 修正履歴の更新
## 修正履歴 | 日付 | 修正タイプ | 内容 | |------|-----------|------| | 2026-01-24 | 図表追加 | Figure 1-5, Table 1-3 を追加 | | 2026-01-24 | 参照論文図追加 | MemGPT, ReAct, Reflexion の図を追加 |
注意事項
- •著作権に配慮し、論文からの図表は引用として適切に使用すること
- •抽出した図表は個人的な学習・研究目的での使用を想定
- •高解像度の抽出は処理時間が長くなる場合がある
- •一部の PDF は図表抽出に対応していない形式の場合がある
- •参照論文の図表は、元論文での言及と合わせて使用すること
- •参照論文は全て抽出するのではなく、重要な 3-5 本に絞ること
- •参照論文の図表は、その論文の説明を補完する目的で使用すること