PaperBanana generates publication-quality academic diagrams and statistical plots from text descriptions. It is a community implementation of the paper "PaperBanana: Automating Academic Illustration for AI Scientists" (arXiv:2601.23265), built from the published description, unaffiliated with the original authors, and extended to further outputs such as slide generation.
Generation runs as a pipeline of up to seven agents in two phases, with an optional optimization phase in front. In that phase a context enricher restructures raw methodology text into components, flows, groupings, and inputs and outputs, while a caption sharpener turns a vague caption into a precise visual specification. Phase 1 is linear planning: a retriever picks the most relevant of 13 curated reference diagrams, a planner writes a detailed textual description by in-context learning from them, and a stylist refines that description against venue guidelines for colour, layout, and typography. Phase 2 iterates: a visualizer renders the description and a critic evaluates the image against the source context and returns a revised description, repeating three times by default or until the critic is satisfied.
An input is a methodology text file or a PDF with per-page selection, optionally guided by reference or sketch images. A run writes final_output.png alongside every intermediate iteration and its metadata, and a later invocation can continue the latest or a named run with written feedback. Statistical plots take a CSV or JSON data file plus a stated intent and are rendered from model-written matplotlib code, so they need no image-generation provider.
Venue style packs supply a methodology style guide, a plot style guide, and optional aspect-ratio and font settings; neurips, icml, acl, and ieee ship built in, and user packs can be scaffolded from those templates or synthesized from a corpus of example figures. Batch manifests in YAML or JSON run many diagrams or plots in one pass, write a batch report, and can stitch the resulting panels into a single labeled composite figure. Component-to-provider assignments are:
| Component | Provider | Model |
|---|---|---|
| VLM (planning, critique) | OpenAI | gpt-5.2 (default) |
| Image generation | OpenAI | gpt-image-1.5 (default) |
| VLM | Google Gemini | gemini-2.5-flash |
| Image generation | Google Gemini | gemini-3-pro-image-preview |
| VLM | Atlas Cloud | deepseek-ai/DeepSeek-V3-0324 |
| Image generation | Atlas Cloud | openai/gpt-image-2/text-to-image |
| VLM and image | OpenRouter | any supported model |
Features
- Two-phase pipeline: linear planning by retriever, planner, and stylist, followed by visualizer-critic refinement rounds
- Input optimization: parallel context enrichment and caption sharpening before planning begins
- Auto-refine and continuation: --auto loops until the critic is satisfied under a safety cap, and --continue resumes a prior run with feedback
- Candidate fan-out: --num-candidates renders 1 to 8 candidates in parallel with seed offsets after one planning pass
- PDF input: methodology context read straight from a PDF with 1-based page selection
- Reference images: sketches, whiteboard photos, or prior figures guide the planner
- Statistical plots: CSV or JSON data rendered through model-written matplotlib code
- Venue style packs: built-in NeurIPS, ICML, ACL, and IEEE packs plus user packs scaffolded or synthesized from example figures
- Batch runs: YAML or JSON manifests for many diagrams or plots, a batch report, and optional composite stitching
- Studio: a local Gradio interface covering diagrams, plots, evaluation, batch runs, and a browser for output folders
- Interfaces: a Typer CLI, a Python API, an MCP server for editor integration, and Claude Code skills for generating and evaluating figures
