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
autofigure-edit.mp4
- [2026.03.24] π§ Our sister project DeepScientist v1.5 is now officially released. It is a local-first open-source autonomous research system for end-to-end scientific discovery. Explore it on GitHub or read the ICLR 2026 paper.
- [2026.03.11] π Our AutoFigure-Edit paper is now available on arXiv and featured in π€Hugging Face Daily Papers! If you find our work helpful, please consider giving us an upvote on Hugging Face and citing our paper. Thank you! β€οΈ
- [2026.02.17] π The AutoFigure-Edit online platform is now live! It is free for all scholars to use. Try it out at deepscientist.cc or check out our open-source code on GitHub. This new Edit version achieves much better performance!
- [2026.01.26] π AutoFigure has been accepted to ICLR 2026! You can read the paper on arXiv.
| 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![]() |
You can install via cloning the repo:
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, AutoFigure-Edit, 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}
}
@misc{lin2026autofigureeditgeneratingeditablescientific,
title={AutoFigure-Edit: Generating Editable Scientific Illustration},
author={Zhen Lin and Qiujie Xie and Minjun Zhu and Shichen Li and Qiyao Sun and Enhao Gu and Yiran Ding and Ke Sun and Fang Guo and Panzhong Lu and Zhiyuan Ning and Yixuan Weng and Yue Zhang},
year={2026},
eprint={2603.06674},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2603.06674},
}This project is licensed under the MIT License - see LICENSE for details.
Explore more open-source research tools from ResearAI:
| Project | What it does |
|---|---|
| DeepScientist | autonomous scientific discovery system |
| AutoFigure-Edit | editable vector paper figures |
| DeepReviewer-v2 | review papers and drafts |
| Awesome-AI-Scientist | curated AI scientist landscape |
The optimal configuration for this project uses gemini-3.1-flash-image-preview from Google AI Studio [https://aistudio.google.com/] as the image generation model and gemini-3.1-pro-preview as the Text model. Each run costs approximately $0.50, consumes about 30,000 tokens, and takes around 20 minutes.
[Mainland China Notice] Gemini's Terms of Service do not permit access or usage by users in mainland China. If OpenRouter throws an error, it is often because an account registered in mainland China lacks the necessary permissions to use Gemini. It is recommended to use an OpenRouter account registered in the United States or Europe and to ensure compliant usage.






