Self-hosted service
Paper2Poster/Paper2Poster avatar
Paper2Poster/Paper2Poster

Paper2Poster: Turning a paper.pdf into an editable poster.pptx with a three-agent pipeline

[NeurIPS 2025] Open-source Multi-agent Poster Generation from Papers

3,944 stars286 forksPythonMIT

At a glance

What is it?
Paper2Poster is an MIT-licensed Python project that converts a scientific paper PDF into an editable PowerPoint poster using a Parser, a Planner and a Painter-Commentor loop. It is a reasonable fit if you already have a model endpoint and a LibreOffice-capable machine, and a poor fit if you want a finished visual design without reviewing the output.
Who is it for?
Adopt Paper2Poster if you are preparing conference posters at a fixed size and want an editable pptx you can correct by hand, and you have either an OpenAI key or a vLLM-deployed open model plus LibreOffice and poppler on the machine. Do not adopt it if you need a design-finished artifact with no human pass, or if you cannot install system packages.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 99 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The gap Paper2Poster targets: a paper.pdf and a conference deadline

Most poster tools start from an outline a human has already written. Paper2Poster starts one step earlier, at the PDF. The README frames the project around two questions: how to create a poster from a paper, and how to evaluate a poster. The output is not a PNG or a PDF render but an editable poster.pptx, which matters because poster sessions usually end with someone nudging a text box at 1am. The intended user is a researcher or lab member who has the paper, knows the target dimensions, and is willing to review the result rather than accept it. The repository also ships a benchmark component, accepted to the NeurIPS 2025 Dataset and Benchmark Track, which pairs generated posters with human-made ones and defines metrics including Visual Quality, Textual Coherence, VLM-as-Judge and PaperQuiz. That benchmark is the second half of the project's claim: it is not only a generator, it is an attempt to define what a good poster is. If you only want the generator, the benchmark material is optional context.

Parser, Planner, Painter-Commentor: what each agent actually does

The README describes PosterAgent as a top-down, visual-in-the-loop multi-agent system. The pipeline has three named stages. The Parser distills the paper into a structured asset library. The Planner then aligns text and visual pairs into a binary-tree layout intended to preserve reading order and spatial balance. Finally, the Painter-Commentor loop refines each panel by executing rendering code and using VLM feedback to remove overflow and fix alignment. That last stage is the interesting design decision. Instead of generating a layout in one shot, the system renders and then looks at what it rendered, which is why a vision model is a required component and not an optional one. The two model flags in the CLI map onto this: --model_name_t is the LLM and --model_name_v is the VLM. You can mix them, and the README gives an economic configuration of Qwen-2.5-7B-Instruct for text with GPT-4o for vision. Parallel generation per section is available through --max_workers, added in the 2025.9.3 update.

Installation: two system packages, one Python environment, one .env file

The install path is short but has hard external dependencies. Python packages come from pip install -r requirements.txt. LibreOffice is required and installed with sudo apt install libreoffice; if you lack sudo, the README points you at downloading the soffice executable and adding its directory to your $PATH. poppler is installed through conda install -c conda-forge poppler. Then you create a .env file in the project root with OPENAI_API_KEY. Two optional keys exist for logo search through Google Custom Search: GOOGLE_SEARCH_API_KEY and GOOGLE_SEARCH_ENGINE_ID. The README does not spell out why LibreOffice and poppler are needed, though the rendering-and-inspection loop described above implies both a converter and a PDF rasterizer are in the path. Treat that as an inference from the dependency list, not a documented statement. The practical consequence is that this is not a pure-Python install. On a locked-down cluster without root and without conda, the soffice-direct-download route is the documented escape hatch.

Running it: the folder convention, the CLI flags and the Docker path

Input follows a strict convention. You create a folder named {paper_name} under a dataset directory and place the paper inside it as paper.pdf. The CLI is invoked as a module: python -m PosterAgent.new_pipeline with --poster_path, --model_name_t, --model_name_v, --poster_width_inches and --poster_height_inches. The README's examples use 48 by 36 inches. There is also a --no_blank_detection flag, shown in the economic Qwen plus GPT-4o example, which disables blank detection. The README does not explain what blank detection does or when disabling it helps, which is a documentation gap worth noting. For open-source models you must deploy them with vLLM first and set the port inside get_agent_config() in utils/wei_utils.py. Docker is supported: docker build -t paper2poster . followed by a docker run that passes OPENAI_API_KEY as an environment variable and mounts both the data directory and the output directory. The README notes that the generated poster lands in a path like <4o_4o>_generated_posters/Paper2Poster-data/paper_name/poster.pptx on the host. There is also a Gradio demo and a lightweight skills/ directory described as dependency-free, invoked in agents such as Codex with a prompt like Use $paper2poster-poster to turn this paper into a poster package.

Where the pipeline is likely to disappoint

The Painter-Commentor loop exists precisely because the first render is often wrong. Overflow and misalignment are named in the README as the problems the loop eliminates, which is an admission that they occur. A VLM judging its own render can also converge on a layout that is technically clean and rhetorically weak: nothing in the described loop checks whether the most important result is the most prominent element. The benchmark's PaperQuiz metric exists because that gap is real. There is a second, more mundane limitation. The tool requires a model endpoint. If you are working under an institutional policy that forbids sending unpublished manuscripts to a hosted API, the GPT-4o path is closed to you and you must stand up vLLM locally, which moves the cost from dollars to GPU hours. Third, the configuration surface is partly code, not flags: model ports live in get_agent_config() in utils/wei_utils.py, so switching between a local Qwen deployment and a hosted model means editing Python rather than changing an environment variable. Finally, the README documents no release artifacts, so there is no versioned changelog to pin against. You track main.

How it differs from template-driven poster generators

The obvious alternative is a LaTeX beamerposter or a PowerPoint template that you fill in by hand. The difference is not quality, it is where the work sits. A template asks you to decide the layout and then type the content. Paper2Poster decides the layout from the paper's own structure and hands you a pptx to correct. That trade favors people who find layout selection harder than editing, and penalizes people who already have a house style they must match exactly. The README's 2025.10.13 update added YAML-based style customization, automatic logo support for conferences and institutions, and a new default theme, which narrows that gap for teams with a defined visual identity. If your institution's poster template is non-negotiable, the YAML route is the thing to check before dismissing the tool. A second alternative is writing your own extraction script against an LLM API. That gives you full control and no LibreOffice dependency, but you would be rebuilding the Planner's binary-tree layout and the render-inspect loop yourself, which is the bulk of the engineering here.

Licence, maintenance and the cost of staying current

The repository is MIT-licensed. That is permissive for internal and commercial use, but it covers the code only. The models you point it at carry their own terms, and the README's default example routes through GPT-4o, so the practical cost of running Paper2Poster is a function of your model provider, not the licence. The project is active: the last push shown is 2026-06-08, and the update list runs from the May 2025 arXiv release through Docker support, Gradio, YAML styling, parallel section generation and the June 2026 skills directory. No releases were retrieved, so upgrades are git pulls against main. That means upgrade cost is real but low in absolute terms, since the dependency list is short and the CLI surface is small. The risk is drift in the model-name strings: the README uses shorthand like 4o and vllm_qwen, which are resolved somewhere in the codebase, so a provider-side model rename can break a working setup without any change to this repository. Pin your model identifiers and re-run one known paper after each pull. Nothing here constitutes legal advice; read the MIT text and your provider's terms yourself.

Editorial conclusion

Adopt Paper2Poster if you are preparing conference posters at a fixed size and want an editable pptx you can correct by hand, and you have either an OpenAI key or a vLLM-deployed open model plus LibreOffice and poppler on the machine. Do not adopt it if you need a design-finished artifact with no human pass, or if you cannot install system packages. Before committing, verify the three external dependencies (LibreOffice, poppler, a model endpoint), confirm which model name strings your deployment actually exposes in get_agent_config() in utils/wei_utils.py, and run one paper through the pipeline at your real poster dimensions to see whether the generated panels need manual repair.

Official sources

  1. Issues
  2. License: MIT
  3. Paper2Poster/Paper2Poster on GitHub
  4. Project website
  5. README
Community notes

Community notes