sci-figure

Extracts figures and sub-figures from academic PDF papers. Supports Fig/Figure, Scheme, Chart, Supplementary Figure, Extended Data Figure (Nature), and Chinese equivalents (图/方案/示意图/附图/补充图). Sub-figure label recognition supports (a)/(A)/a)/(i)/(1)/a. formats. High-quality PNG output at configurable DPI. Use when user asks to "extract figure", "截取文献图片", "提取子图", "get figure from paper", "Scheme", "方案图", "补充图", "Supplementary Figure", or "Extended Data".

Sci-Figure — Scientific Figure Extractor

Precisely extract figures and sub-figures from academic PDF papers.

Script Directory

Scripts in scripts/ subdirectory. Replace ${SKILL_DIR} with this SKILL.md's directory path.

ScriptPurpose
scripts/extract_figure.pyMain CLI for figure extraction

Preferences (EXTEND.md)

Use Bash to check EXTEND.md existence (priority order):

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

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

EXTEND.md Supports: Default DPI | Default output format | Tesseract path

Usage

python ${SKILL_DIR}/scripts/extract_figure.py <input.pdf> [options]

Options

OptionShortDescriptionDefault
<input>PDF file pathRequired
--figure-fFigure number (1, 2, 3...)Required (except --list/--all)
--subfigure-sSub-figure label (a, b, c...)None (returns whole figure)
--output-oOutput directoryCurrent directory
--dpi-dOutput resolution600
--list-lList all available figure numbersfalse
--allExtract all figuresfalse
--formatOutput formatpng

Examples

# Extract Figure 2, sub-figure c
python ${SKILL_DIR}/scripts/extract_figure.py paper.pdf -f 2 -s c

# Extract entire Figure 3
python ${SKILL_DIR}/scripts/extract_figure.py paper.pdf -f 3

# List all available figures in a PDF
python ${SKILL_DIR}/scripts/extract_figure.py paper.pdf --list

# Extract all figures
python ${SKILL_DIR}/scripts/extract_figure.py paper.pdf --all

# Custom output directory and DPI
python ${SKILL_DIR}/scripts/extract_figure.py paper.pdf -f 2 -s c -o ./output/ -d 300

Output:

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

Error Handling

ScenarioBehavior
Figure number not foundError + list all available figure numbers
OCR recognition failedReturn entire figure region
Sub-figure split failedReturn entire figure region
No sub-figure labels foundReturn entire figure region

Tech Stack

LibraryRole
pdfplumberText + coordinate extraction (locate "Figure X" labels)
PyMuPDF (fitz)PDF → high-quality image rendering (600 DPI)
opencv-pythonBoundary detection, contour analysis
PillowFinal cropping, format conversion
pytesseractOCR for sub-figure label recognition

Detected Figure Fields

FieldTypeDescription
numberintFigure number
pageintPage index (0-based)
bboxtupleCrop region in pixels
bbox_pdftupleCrop region in PDF points
captionstrCaption text (truncated to 200 chars)
caption_fullstrFull caption text (no truncation)
caption_bbox_pdftupleCaption bounding box in PDF points
sublabelslist[str]Sub-figure labels, e.g. ["a","b","c"]
sublabel_detailslist[dict]Labels with detected format, e.g. {"label":"a","format":"(a)"}
figure_typestrOne of: figure, scheme, chart, supplementary, extended_data
is_supplementaryboolTrue for supplementary and extended_data types
imagendarrayCropped figure image (numpy array)

Extension Support

Custom configurations via EXTEND.md. See Preferences section for paths and supported options.


© License & Copyright

Aut_Sci_Write — Autonomous Scientific Writer

  • Author: Shuo Zhao
  • License: MIT License
  • Copyright: © 2026 Shuo Zhao. All rights reserved.
  • Original Work: This is an original work created by the author. No reproduction, redistribution, or commercial use without explicit permission. Permission is hereby granted, free of charge, to any person obtaining a copy of this software... (See the LICENSE file in the root directory for the full MIT terms.)

This skill is part of the Aut_Sci_Write suite. For full license terms, see the LICENSE file in the project root.