mcpField
S
sci-figure

sci-figure

github.com/shzhao27208ドキュメント213235 回インストール11 週間前に更新
リポジトリ

sci-figure について

sci-figureは、学術PDFから図やサブ図を抽出するコマンドラインスキルです。画像抽出、コンピュータービジョン、キャプションを使うフォールバックを組み合わせ、OCRでサブ図ラベルを認識できます。

主な機能

  1. 01指定した図または全図の一覧・抽出
  2. 02ラベル付きサブ図の切り出し
  3. 03画像抽出・CV・キャプション戦略の併用
  4. 04形式・解像度・OCRの選択
  5. 05PDFページのレンダリングと注釈

活用シーン

  1. 01論文PDFから図を保存
  2. 02複合図から一つのパネルを抽出
  3. 03ページ上の検出範囲を確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/shzhao27208/aut_sci_write --skill sci-figure

インストール後、Claude Code で/sci-figureを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

_meta.json
CHANGELOG.md
LICENSE
README_CN.md
README.md
requirements.txt
setup.py
sci_figure.egg-info/
dependency_links.txt
entry_points.txt
PKG-INFO
requires.txt
SOURCES.txt
top_level.txt
sci_figure/
__init__.py
annotator.py
caption_detector.py
cli.py
column_detector.py
exceptions.py
figure_extractor.py
image_processor.py
native_extractor.py
pdf_parser.py
region_detector.py
subfigure_splitter.py
utils.py
scripts/
extract_figure.py
tests/
__init__.py
test_caption_dedup.py

詳細

Sci-Figure — 科学論文図版抽出ツール

学術論文の PDF から図やサブ図を正確に抽出します。

ライセンスに関する注意:sci-figure は、AGPL ライセンスの PyMuPDF (fitz) にリンクしているため、AGPL-3.0-or-later ライセンスで提供されています。

インストール

初回使用前に、スキルディレクトリからパッケージをインストールします。

cd ${SKILL_DIR}
pip install -e .

これにより、sh-sci-fig CLI コマンドが登録されます。Tesseract OCR が必要です。

  • Windows:winget install UB-Mannheim.TesseractOCR
  • Linux:apt install tesseract-ocr
  • macOS:brew install tesseract

設定(EXTEND.md)

Bash を使用して、EXTEND.md が存在するかどうかを優先順位順に確認します。

# Check project-level first
test -f .baoyu-skills/sci-figure/EXTEND.md && echo "project"

# Then user-level (cross-platform: $HOME works on macOS/Linux/WSL)
test -f "$HOME/.baoyu-skills/sci-figure/EXTEND.md" && echo "user"

EXTEND.md で設定できる項目:既定の DPI | 既定の出力形式 | Tesseract のパス

使用方法

sh-sci-fig <input.pdf> [options]

オプション

オプション短縮形説明既定値
<input>PDF ファイルのパス必須
--figure-f図番号(1、2、3...)必須(--list/--all を除く)
--subfigure-sサブ図のラベル(a、b、c...)なし(図全体を返します)
--output-o出力ディレクトリ現在のディレクトリ
--dpi-d出力解像度600
--list-l利用可能な図番号をすべて一覧表示false
--allすべての図を抽出false
--format出力形式(png/jpg)png
--strategy抽出戦略:hybrid/native/cvhybrid
--ocrOCR エンジン:tesseract/easyocr/nonetesseract
--render-page注釈付きでページ全体をレンダリングfalse
--annotateレンダリングしたページにバウンディングボックスを描画false
--bbox手動での bbox 上書き(px 単位の x0,y0,x1,y1)なし
--no-trim余白のトリミングを無効化false
--debugデバッグログを有効化false
--quiet-q情報メッセージを非表示false

使用例

# Extract Figure 2, sub-figure c
sh-sci-fig paper.pdf -f 2 -s c

# Extract entire Figure 3
sh-sci-fig paper.pdf -f 3

# List all available figures in a PDF
sh-sci-fig paper.pdf --list

# Extract all figures
sh-sci-fig paper.pdf --all

# Custom output directory and DPI
sh-sci-fig paper.pdf -f 2 -s c -o ./output/ -d 300

# Use EasyOCR for sub-figure label detection
sh-sci-fig paper.pdf --all --ocr easyocr

# CV-only strategy (skip native extraction)
sh-sci-fig paper.pdf --all --strategy cv

# Render page with annotated bounding boxes (debugging)
sh-sci-fig paper.pdf -f 1 --render-page --annotate

# Manual bbox extraction (multimodal correction)
sh-sci-fig paper.pdf -f 1 --bbox 100,200,800,1200

出力:

Extracted: figure_2c.png (1920x1080, 600 DPI)

エラー処理

状況動作
図番号が見つからないエラーを表示し、利用可能な図番号をすべて一覧表示
OCR の認識に失敗図全体の領域を返す
サブ図の分割に失敗図全体の領域を返す
サブ図のラベルが見つからない図全体の領域を返す

技術スタック

ライブラリ役割
pdfplumberテキストと座標の抽出(キャプション検出)
PyMuPDF (fitz)ネイティブ画像の抽出、高品質なページレンダリング
opencv-pythonCV による領域検出、連結成分分析、コンテンツ検証
Pillow最終的なトリミング、形式変換
pytesseractサブ図ラベル認識用 OCR(既定)
easyocr代替 OCR エンジン(オプション、pip install sci-figure[ocr])
numpy画像配列の操作

抽出エンジン(v2)

エンジン優先順位適した対象
Native(PyMuPDF)1 番目PDF に埋め込まれたラスター画像
CV(連結成分)2 番目ベクター画像、色付きのプロット
Caption-anchored3 番目上記のエンジンが失敗した場合のフォールバック

hybrid 戦略(既定)は、3 つのエンジンを順番に試し、結果を検証します。

検出される図のフィールド

FigureExtractor.detect_all() が返す各図は、次のキーを持つ dict です。

フィールド型説明
numberint図番号
pageintページインデックス(0 始まり)
bbox_pdftuplePDF ポイント単位の切り抜き領域(x0, y0, x1, y1)
bbox_pxtupleピクセル単位の切り抜き領域(x0, y0, x1, y1)
caption_textstrキャプション全文
figure_typestr次のいずれか:figure、scheme、chart、supplementary、extended_data
sublabelslist[str]サブ図のラベル。例:["a","b","c"]
imagendarray切り抜いた図の画像(numpy 配列)
engine_usedstr切り抜きを生成したエンジン:native、cv、fallback

list_figures() は、image フィールドを除いた同じ dict を返します。

拡張機能のサポート

EXTEND.md を使用してカスタム設定を行えます。パスと対応オプションについては、設定のセクションを参照してください。


© ライセンスと著作権

Aut_Sci_Write — 自律型科学論文執筆ツール

  • 著者:Shuo Zhao
  • ライセンス:MIT License
  • 著作権:© 2026 Shuo Zhao. All rights reserved.
  • オリジナル作品:本作品は著者が作成したオリジナル作品です。明示的な許可なく、複製、再配布、または商用利用することはできません。 本ソフトウェアのコピーを取得したすべての人に対し、無償で次のことを許可します…(MIT ライセンスの全文については、ルートディレクトリの LICENSE ファイルをご覧ください。)

このスキルは Aut_Sci_Write スイートの一部です。ライセンス条項の全文については、プロジェクトルートの LICENSE ファイルをご覧ください。

コメント