Paper2Poster/Paper2Poster
GitHub: Paper2Poster/Paper2Poster
基于多智能体系统的学术论文自动海报生成工具,将PDF论文转换为可编辑的PPTX海报。
Stars: 3349 | Forks: 236
# 🎓Paper2Poster: 从学术论文自动生成学术海报
我们致力于解决 **如何从论文生成海报** 以及 **如何评估海报** 的问题。

## 🤩 Paper2Poster 相关资源

## 🔥 更新日志
- [x] [2025.11.3] 新增 **Gradio demo** 支持。
- [x] [2025.10.18] 新增 **Docker** 支持。
- [x] [2025.10.13] 新增针对会议和机构的自动 **logo 支持**,支持 **基于 YAML 的样式自定义**,以及全新的默认主题。
- [x] [2025.9.18] Paper2Poster 已被 **NeurIPS 2025 Dataset and Benchmark Track** 录用。
- [x] [2025.9.3] 我们现在支持**并行**生成各个章节内容以加快生成速度,只需指定 `--max_workers` 即可。
- [x] [2025.5.27] 我们发布了 [arXiv](https://arxiv.org/abs/2505.21497),[代码](https://github.com/Paper2Poster/Paper2Poster) 和 [`数据集`](https://huggingface.co/datasets/Paper2Poster/Paper2Poster)
**PosterAgent** 是一个从 `paper.pdf` 生成 **可编辑** `poster.pptx` 的自顶向下、视觉闭环多智能体系统。

## 📋 目录
- [🛠️ 安装说明](#-installation)
- [🐳 Docker 部署](#-docker-deployment)
- [🚀 快速开始](#-quick-start)
- [🔮 评估](#-evaluation)
## 🛠️ 安装说明
我们的 Paper2Poster 支持本地部署(通过 [vLLM](https://docs.vllm.ai/en/v0.6.6/getting_started/installation.html))或基于 API 的访问(例如 GPT-4o)。
**Python 环境**
```
pip install -r requirements.txt
```
**安装 Libreoffice**
```
sudo apt install libreoffice
```
或者,如果你**没有** sudo 权限,可以直接下载 `soffice` 可执行文件:https://www.libreoffice.org/download/download-libreoffice/,并将可执行文件目录添加到你的 `$PATH` 中。
**安装 poppler**
```
conda install -c conda-forge poppler
```
**API Key**
在项目根目录下创建一个 `.env` 文件并添加你的 OpenAI API key:
```
OPENAI_API_KEY=
```
**可选:Google Search API(用于 logo 搜索)**
要使用 Google Custom Search 以获得更可靠的 logo 搜索结果,请将以下内容添加到你的 `.env` 文件中:
```
GOOGLE_SEARCH_API_KEY=
GOOGLE_SEARCH_ENGINE_ID=
```
## 🐳 Docker 部署
为了更轻松地部署,你可以使用 Docker 运行 Paper2Poster,无需手动安装依赖。
**构建 Docker 镜像:**
```
docker build -t paper2poster .
```
**故障排除:**
- 如果在运行 Docker 命令时遇到“permission denied”错误,请在 Docker 命令前使用 `sudo`(例如 `sudo docker build -t paper2poster .`)
**示例:**
```
# 如果 output 目录不存在则创建它
mkdir -p <4o_4o>_generated_posters
docker run --rm \
-e OPENAI_API_KEY= \
-v "$(pwd)/Paper2Poster-data:/Paper2Poster-data" \
-v "$(pwd)/<4o_4o>_generated_posters:/app/<4o_4o>_generated_posters" \
paper2poster \
python -m PosterAgent.new_pipeline \
--poster_path="/Paper2Poster-data//paper.pdf" \
--model_name_t=4o \
--model_name_v=4o \
--poster_width_inches=48 \
--poster_height_inches=36
```
生成的海报将保存在你主机上的 `<4o_4o>_generated_posters/Paper2Poster-data/paper_name/poster.pptx` 中。
## 🚀 快速开始
在 `{dataset_dir}` 下创建一个名为 `{paper_name}` 的文件夹,并将你的论文以 `paper.pdf` 的名称放入其中。
```
📁 {dataset_dir}/
└── 📁 {paper_name}/
└── 📄 paper.pdf
```
要使用开源模型,你需要先使用 [vLLM](https://docs.vllm.ai/en/v0.6.6/getting_started/installation.html) 进行部署,并确保在 [`utils/wei_utils.py`](utils/wei_utils.py) 的 `get_agent_config()` 函数中正确指定了端口。
- [高性能] 使用 `GPT-4o` 生成海报:
```
python -m PosterAgent.new_pipeline \
--poster_path="${dataset_dir}/${paper_name}/paper.pdf" \
--model_name_t="4o" \ # LLM
--model_name_v="4o" \ # VLM
--poster_width_inches=48 \
--poster_height_inches=36
```
- [经济实惠] 使用 `Qwen-2.5-7B-Instruct` 和 `GPT-4o` 生成海报:
```
python -m PosterAgent.new_pipeline \
--poster_path="${dataset_dir}/${paper_name}/paper.pdf" \
--model_name_t="vllm_qwen" \ # LLM
--model_name_v="4o" \ # VLM
--poster_width_inches=48 \
--poster_height_inches=36 \
--no_blank_detection # An option to disable blank detection
```
- [本地] 使用 `Qwen-2.5-7B-Instruct` 生成海报:
```
python -m PosterAgent.new_pipeline \
--poster_path="${dataset_dir}/${paper_name}/paper.pdf" \
--model_name_t="vllm_qwen" \ # LLM
--model_name_v="vllm_qwen_vl" \ # VLM
--poster_width_inches=48 \
--poster_height_inches=36
```
PosterAgent **支持 LLM / VLM 的灵活组合**,欢迎尝试其他选项,或在 [`utils/wei_utils.py`](utils/wei_utils.py) 的 `get_agent_config()` 中自定义你的设置。
### 向海报添加 Logo
你可以自动向海报中添加机构和会议 logo:
```
python -m PosterAgent.new_pipeline \
--poster_path="${dataset_dir}/${paper_name}/paper.pdf" \
--model_name_t="4o" \
--model_name_v="4o" \
--poster_width_inches=48 \
--poster_height_inches=36 \
--conference_venue="NeurIPS" # Automatically searches for conference logo
```
**Logo 搜索策略:**
1. **本地搜索**:首先检查提供的 logo 库(`logo_store/institutes/` 和 `logo_store/conferences/`)
2. **网络搜索**:如果在本地未找到,则执行在线搜索
- 默认使用 DuckDuckGo(无需 API key)
- 如需更可靠的结果,请使用 `--use_google_search`(需要在 `.env` 中配置 `GOOGLE_SEARCH_API_KEY` 和 `GOOGLE_SEARCH_ENGINE_ID`)
你也可以指定自定义 logo 路径以跳过自动检测:
```
--institution_logo_path="path/to/institution_logo.png" \
--conference_logo_path="path/to/conference_logo.png"
```
### YAML 样式自定义
通过 YAML 配置文件自定义海报外观:
- **全局默认值**:`config/poster.yaml`(适用于所有海报)
- **单张海报覆盖**:将 `poster.yaml` 放在你的 `paper.pdf` 旁边以进行自定义样式设置
## 🔮 评估
通过以下方式下载 Paper2Poster 评估数据集:
```
python -m PosterAgent.create_dataset
```
在评估中,论文存储在名为 `Paper2Poster-data` 的目录下。
使用 **PaperQuiz** 评估生成的海报:
```
python -m Paper2Poster-eval.eval_poster_pipeline \
--paper_name="${paper_name}" \
--poster_method="${model_t}_${model_v}_generated_posters" \
--metric=qa # PaperQuiz
```
使用 **VLM-as-Judge** 评估生成的海报:
```
python -m Paper2Poster-eval.eval_poster_pipeline \
--paper_name="${paper_name}" \
--poster_method="${model_t}_${model_v}_generated_posters" \
--metric=judge # VLM-as-Judge
```
使用其他统计指标(如视觉相似度、PPL 等)评估生成的海报:
```
python -m Paper2Poster-eval.eval_poster_pipeline \
--paper_name="${paper_name}" \
--poster_method="${model_t}_${model_v}_generated_posters" \
--metric=stats # statistical measures
```
如果你想为自己的论文创建 PaperQuiz:
```
python -m Paper2Poster-eval.create_paper_questions \
--paper_folder="Paper2Poster-data/${paper_name}"
```
## ❤ 致谢
我们要感谢 [🐫CAMEL](https://github.com/camel-ai/camel),[🦉OWL](https://github.com/camel-ai/owl),[Docling](https://github.com/docling-project/docling),[PPTAgent](https://github.com/icip-cas/PPTAgent) 提供的代码库。
## 📖 引用
如果你觉得这个项目有帮助,请引用我们的论文。
```
@misc{paper2poster,
title={Paper2Poster: Towards Multimodal Poster Automation from Scientific Papers},
author={Wei Pang and Kevin Qinghong Lin and Xiangru Jian and Xi He and Philip Torr},
year={2025},
eprint={2505.21497},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2505.21497},
}
```
标签:AIGC, DLL 劫持, DNS解析, Docker, Gradio, Hugging Face, NeurIPS 2025, Paper2Poster, Petitpotam, PyRIT, Python, TruffleHog, 内容生成, 多智能体系统, 多模态, 大语言模型, 学术工具, 学术论文, 安全防御评估, 开源项目, 排版引擎, 文档自动化, 无后门, 海报生成, 知识提取, 科学可视化, 请求拦截, 逆向工具