From Text to Publication-Ready Diagrams
AutoFigure is an intelligent system that leverages Large Language Models (LLMs) with iterative refinement to generate high-quality scientific figures from text descriptions or research papers.
Quick Start β’ Web Interface β’ Configuration β’ API Reference
| Feature | Description |
|---|---|
| π Text-to-Figure | Generate figures directly from natural language descriptions. |
| π Paper-to-Figure | Extract methodology from PDFs and create visual diagrams automatically. |
| π Iterative Refinement | Dual-agent system (Generation + Evaluation) for continuous quality optimization. |
| π¨ Multiple Formats | Output as SVG or mxGraph XML (fully compatible with draw.io). |
| π Image Enhancement | Optional AI-powered post-processing for aesthetic beautification. |
| π₯οΈ Web Interface | Interactive Next.js frontend for easy generation and editing. |
AutoFigure employs a Review-Refine loop to ensure high accuracy and aesthetic quality.
Process:
- Generate: The agent creates initial SVG/XML based on description & references.
- Evaluate: The critic scores quality (0-10) and provides specific feedback.
- Refine: The loop continues until the figure meets publication standards.
Here are examples of figures generated by AutoFigure across different domains, showcasing its versatility in handling various levels of complexity.
| Category & Visualization |
|---|
π Paper Case![]() |
π Survey Case![]() |
π Blog Case![]() |
π Textbook Case![]() |
Installation
You can install from source or via pip options:
# Basic installation
pip install autofigure
# With PDF support (for Paper-to-Figure)
pip install autofigure[pdf]
# With image enhancement
pip install autofigure[enhancement]
# Full installation (Recommended)
pip install autofigure[full]Or clone the repository:
git clone https://github.com/ResearAI/AutoFigure.git
cd AutoFigure
pip install -e .
playwright install chromium # Required for renderingfrom autofigure import AutoFigureAgent, Config
# 1. Configure
config = Config(
generation_api_key="your-api-key",
generation_provider="openrouter", # options: 'openrouter', 'gemini', 'bianxie'
generation_model="google/gemini-2.5-pro",
)
# 2. Generate
agent = AutoFigureAgent(config)
result = agent.generate(
description="A flowchart showing transformer training pipeline",
max_iterations=5,
output_format="svg",
topic="paper" # 'paper', 'survey', 'blog', 'textbook'
)
print(f"β
Generated: {result.svg_path} (Score: {result.final_score}/10)")Extract methodology from a paper and generate a figure automatically.
# Generate figure from paper (PDF or Markdown)
result = agent.generate_from_paper(
paper_path="./paper.pdf",
max_iterations=5,
output_format="svg",
enable_enhancement=True, # Enhance the result
)
if result.success:
print(f"Extracted methodology: {result.methodology_text[:200]}...")
print(f"Generated figure: {result.svg_path}")Generate multiple enhanced aesthetic variants of the figure.
result = agent.generate(
description="Neural network architecture diagram",
enable_enhancement=True,
enhancement_count=3, # Generate 3 variants
art_style="Modern scientific illustration with clean lines",
enhancement_input_type="code2prompt" # Best quality mode
)
if result.success:
print(f"Original Preview: {result.preview_path}")
print(f"Enhanced variants: {result.enhanced_paths}")Ideally suited for visual interaction and editing.
./start.sh
# Then open http://localhost:6002 in your browserWe introduce FigureBench, the first large-scale benchmark for generating scientific illustrations from long-form text.
| Category | Samples | Avg. Tokens | Text Density | Complexity |
|---|---|---|---|---|
| π Paper | 3,200 | 12,732 | 42.1% | High |
| π Blog | 20 | 4,047 | 46.0% | Med |
| π Survey | 40 | 2,179 | 43.8% | High |
| π Textbook | 40 | 352 | 25.0% | Low |
| Total | 3,300 | 10k+ | 41.2% | ~5.3 Components |
from datasets import load_dataset
dataset = load_dataset("WestlakeNLP/FigureBench")AutoFigure is highly configurable. You can set these in Config() or via environment variables.
| Provider | Base URL | Recommended Models |
|---|---|---|
| OpenRouter | openrouter.ai/api/v1 |
gemini-2.5-pro |
| Bianxie | api.bianxie.ai/v1 |
gemini-2.5-pro |
generativelanguage... |
gemini-2.5-pro |
| Option | Description | Default |
|---|---|---|
generation_api_key |
API key for figure generation | Required |
generation_base_url |
Base URL for API | Provider default |
generation_model |
Model name | Provider default |
generation_provider |
Provider: 'openrouter', 'bianxie', 'gemini' | 'openrouter' |
| Option | Description | Default |
|---|---|---|
methodology_api_key |
API key for methodology extraction | Same as generation |
methodology_model |
Model for methodology extraction | Same as generation |
methodology_provider |
Provider for methodology extraction | Same as generation |
| Option | Description | Default |
|---|---|---|
enhancement_api_key |
API key for image enhancement | None |
enhancement_provider |
Enhancement provider | 'openrouter' |
enhancement_model |
Model for image enhancement | Provider default |
enhancement_input_type |
Input type: 'none', 'code', 'code2prompt' | 'code2prompt' |
enhancement_count |
Number of enhanced variants to generate | 1 |
art_style |
Art style description for enhancement | '' |
| Option | Description | Default |
|---|---|---|
max_iterations |
Maximum refinement iterations | 5 |
quality_threshold |
Quality threshold (0-10) | 9.0 |
output_dir |
Output directory | './autofigure_output' |
custom_references |
Custom reference figure paths | None |
| Parameter | Description |
|---|---|
description |
Text description of the figure to generate |
max_iterations |
Maximum iterations (overrides config) |
output_format |
'svg' or 'mxgraphxml' |
quality_threshold |
Quality threshold (overrides config) |
enable_enhancement |
Whether to enhance the final image |
art_style |
Art style for enhancement (overrides config) |
enhancement_input_type |
'none', 'code', or 'code2prompt' (overrides config) |
enhancement_count |
Number of enhanced variants (overrides config) |
topic |
Content type: 'paper', 'survey', 'blog', 'textbook' |
custom_references |
Custom reference figure paths |
Accepts all parameters from generate() plus:
| Parameter | Description |
|---|---|
paper_path |
Path to paper file (PDF or Markdown) |
methodology_api_key |
API key for extraction (overrides config) |
methodology_provider |
Provider for extraction (overrides config) |
| Attribute | Description |
|---|---|
success |
Whether generation was successful |
svg_path |
Path to generated SVG file |
mxgraph_path |
Path to generated mxGraph XML file |
preview_path |
Path to PNG preview image |
enhanced_paths |
List of all enhanced image paths |
final_score |
Final quality score (0-10) |
methodology_text |
Extracted methodology (from paper) |
error |
Error message if failed |
| Mode | Description |
|---|---|
none |
Direct beautification without code reference |
code |
Use generated code (SVG/XML) as reference |
code2prompt |
Use LLM to analyze code and generate detailed prompt (recommended) |
Click to expand directory tree
AutoFigure/
βββ autofigure/ # π¦ Python SDK
β βββ agent.py # Main Agent
β βββ generator.py # Generation Pipeline
β βββ enhancer.py # Image Enhancement
β βββ extractor.py # PDF Method Extraction
βββ frontend/ # π₯οΈ Next.js Web UI
βββ backend/ # π Flask API Server
βββ scripts/ # π οΈ Utility Scripts
βββ pyproject.toml # Config
WeChat Discussion Group
Scan the QR code to join our community. If the code is expired, please add WeChat ID nauhcutnil or contact tuchuan@mail.hfut.edu.cn.
If you use AutoFigure or FigureBench in your research, please cite:
@inproceedings{
zhu2026autofigure,
title={AutoFigure: Generating and Refining Publication-Ready Scientific Illustrations},
author={Minjun Zhu and Zhen Lin and Yixuan Weng and Panzhong Lu and Qiujie Xie and Yifan Wei and Sifan Liu and Qiyao Sun and Yue Zhang},
booktitle={The Fourteenth International Conference on Learning Representations},
year={2026},
url={https://openreview.net/forum?id=5N3z9JQJKq}
}





