Paper2Slides README

The project's README from github.com/HKUDS/Paper2Slides. As one markdown file: README.md.

Paper2Slides Logo

Paper2Slides: From Paper to Presentation in One Click

Python License Feishu WeChat

✨ Never Build Slides from Scratch Again ✨

| 📄 Universal File Support  |  🎯 RAG-Powered Precision  |  🎨 Custom Styling  |  ⚡ Lightning Speed |


🎯 What is Paper2Slides?

Turns your research papers, reports, and documents into professional slides & posters in minutes.

✨ Key Features

⚡ Easy as One Command

# One command to generate slides from a paper
python -m paper2slides --input paper.pdf --output slides --style doraemon --length medium --fast --parallel 2

🔥 News


🎨 Custom Styling Showcase


doraemon

academic

custom

doraemon

academic

custom

✨ Multiple styles available — simply modify the --style parameter
Examples from DeepSeek-V3.2: Pushing the Frontier of Open Large Language Models

💡 Custom Style Example: Totoro Theme
--style "Studio Ghibli anime style with warm whimsical aesthetic. Use soft watercolor Morandi tones with light cream background, muted sage green and dusty pink accents. Totoro character can appear as a friendly guide relating to the content, with nature elements like soft clouds or leaves."

🌐 Paper2Slides Web Interface


📋 Table of Contents


🏃 Quick Start

1. Environment Setup

# Clone repository
git clone https://github.com/HKUDS/Paper2Slides.git
cd Paper2Slides

# Create and activate conda environment
conda create -n paper2slides python=3.12 -y
conda activate paper2slides

# Install dependencies
pip install -r requirements.txt

[!NOTE] Create a .env file in paper2slides/ directory with your API keys. Refer to paper2slides/.env.example for the required variables.

2. Command Line Usage

# Basic usage - generate slides from a paper
python -m paper2slides --input paper.pdf --output slides --length medium

# Generate poster with custom style
python -m paper2slides --input paper.pdf --output poster --style "minimalist with blue theme" --density medium

# Fast mode
python -m paper2slides --input paper.pdf --output slides --fast

# Enable parallel generation (2 workers by default)
python -m paper2slides --input paper.pdf --output slides --parallel 2

# List all processed outputs
python -m paper2slides --list

CLI Options:

Option Description Default
--input, -i Input file(s) or directory Required
--output Output type: slides or poster poster
--content Content type: paper or general paper
--style Style: academic, doraemon, or custom doraemon
--length Slides length: short, medium, long short
--density Poster density: sparse, medium, dense medium
--fast Fast mode: skip RAG indexing false
--parallel Enable parallel slide generation: --parallel uses 2 workers, --parallel N uses N workers 1 (sequential without this option)
--from-stage Force restart from stage: rag, summary, plan, generate Auto-detect
--debug Enable debug logging false

💾 Checkpoint & Resume:

Paper2Slides intelligently saves your progress at every key stage, allowing you to:

Scenario Command
Resume after interruption Just run the same command again — it auto-detects and continues
Change style only Add --from-stage plan to skip re-parsing
Regenerate images Add --from-stage generate to keep the same plan
Full restart Add --from-stage rag to start from scratch

[!TIP] Checkpoints are auto-saved. Just run the same command to resume. Use --from-stage only to force restart from a specific stage.

3. Web Interface

Launch both backend and frontend services:

./scripts/start.sh

Or start services independently:

# Terminal 1: Start backend API
./scripts/start_backend.sh

# Terminal 2: Start frontend
./scripts/start_frontend.sh

Access the web interface at http://localhost:5173 (default)


🏗️ Paper2Slides Framework

Paper2Slides transforms documents through a 4-stage pipeline designed for reliability and efficiency:

Stage Description Checkpoint Output
🔍 RAG Parse documents and construct intelligent retrieval index using RAG checkpoint_rag.json Searchable knowledge base
📊 Analysis Extract document structure, identify key figures, tables, and content hierarchy checkpoint_summary.json Structured content map
📋 Planning Generate optimized content layout and slide/poster organization strategy checkpoint_plan.json Presentation blueprint
🎨 Creation Render final high-quality slides and poster visuals Output directory Polished presentation materials

💾 Smart Recovery System

Each stage automatically saves progress checkpoints, enabling seamless resumption from any point if the process is interrupted—no need to start over.

Fast Mode vs Normal Mode

Mode Processing Pipeline Use Cases
Normal Complete RAG indexing with deep document analysis Complex research papers, lengthy documents, multi-section content
Fast Skip RAG indexing, direct LLM query Short documents, instant previews, quick revisions

Use --fast when:

Use normal mode (default) when:


⚙️ Configuration

Output Directory Structure

outputs/
├── <project_name>/
│   ├── <content_type>/                   # paper or general
│   │   ├── <mode>/                       # fast or normal
│   │   │   ├── checkpoint_rag.json       # RAG query results & parsed file paths
│   │   │   ├── checkpoint_summary.json   # Extracted content, figures, tables
│   │   │   ├── summary.md                # Human-readable summary
│   │   │   └── <config_name>/            # e.g., slides_doraemon_medium
│   │   │       ├── state.json            # Current pipeline state
│   │   │       ├── checkpoint_plan.json  # Content plan for slides/poster
│   │   │       └── <timestamp>/          # Generated outputs
│   │   │           ├── slide_01.png
│   │   │           ├── slide_02.png
│   │   │           ├── ...
│   │   │           └── slides.pdf        # Final PDF output
│   │   └── rag_output/                   # RAG index storage
│   └── ...
└── ...

Checkpoint Files:

File Description Reusable When
checkpoint_rag.json Parsed document content Same input files
checkpoint_summary.json Figures, tables, structure Same input files
checkpoint_plan.json Content layout plan Same style & length/density

Style Configuration

Style Description
academic Clean, professional academic presentation style
doraemon Colorful, friendly style with illustrations
custom Any text description for LLM-generated style

Image Generation Providers

Image Generation Notes

[!TIP] By default Paper2Slides uses gemini-3-pro-image-preview (OpenRouter) for image generation; you can switch to an image-capable Google Gemini model (e.g., models/gemini-1.5-flash) via IMAGE_GEN_PROVIDER=google. Key findings:

  • Mood Keywords: Words like "warm", "elegant", "vibrant" strongly influence the overall color palette
  • Layout vs Style: Fine-grained layout instructions ground well; fine-grained element styling does not
  • Prompt Length: Simple prompts generally outperform detailed ones
  • Multi-slide Generation: Native multi-image output is story-like; for consistent slides, we use iterative single-image generation

📁 Code Structure

Module Description
paper2slides/core/ Pipeline orchestration, 4-stage execution
paper2slides/raganything/ Document parsing & RAG indexing
paper2slides/summary/ Content extraction: figures, tables, paper structure
paper2slides/generator/ Content planning & image generation
api/ FastAPI backend for web interface
frontend/ React frontend (Vite + TailwindCSS)
Click to expand full project structure
Paper2Slides/
├── paper2slides/                 # Core library
│   ├── main.py                   # CLI entry point
│   ├── core/
│   │   ├── pipeline.py           # Main pipeline orchestration
│   │   ├── state.py              # Checkpoint state management
│   │   └── stages/
│   │       ├── rag_stage.py      # Stage 1: Parse & index
│   │       ├── summary_stage.py  # Stage 2: Extract content
│   │       ├── plan_stage.py     # Stage 3: Plan layout
│   │       └── generate_stage.py # Stage 4: Generate images
│   │
│   ├── raganything/
│   │   ├── raganything.py        # RAG processor
│   │   └── parser.py             # Document parser
│   │
│   ├── summary/
│   │   ├── paper.py              # Paper structure extraction
│   │   └── extractors/           # Figure/table extractors
│   │
│   ├── generator/
│   │   ├── content_planner.py    # Slide/poster planning
│   │   └── image_generator.py    # Image generation
│   │
│   ├── prompts/                  # LLM prompt templates
│   └── utils/                    # Utilities
│
├── api/server.py                 # FastAPI backend
├── frontend/src/                 # React frontend
└── scripts/                      # Shell scripts (start/stop)


🌟Found Paper2Slides helpful? Star us on GitHub!

🚀 Turn any document into professional presentations in minutes!


Star History

Star History Chart


❤️ Thanks for visiting ✨ Paper2Slides!

Views

Paper2Slides (HKUDS/Paper2Slides)

Searching Database…

这是什么?Paper2Slides 能在几分钟内把研究论文、报告和文档变成专业的幻灯片和海报,借助基于 RAG 的流水线精确提取内容。
这是 CLI 工具,还是有图形界面?它主要是 Python CLI 工具,但也附带网页界面,后端为 FastAPI,前端为 React(Vite + TailwindCSS)。
怎么从一篇论文生成幻灯片?创建包含 API 密钥的 .env 文件,然后运行 CLI,用 --input 指向你的文件,并把 --output 设为 slides 或 poster。也可以同时启动后端和前端,使用网页界面。
运行之前需要准备哪些 API 密钥?你需要 LLM API 密钥,外加一个图像生成服务的密钥,通过 IMAGEGENPROVIDER 配置为 'openrouter'(默认,使用 gemini-3-pro-image-preview)或 Google 的 Gemini API。
AI 生成的图像在整套幻灯片里风格总是一致吗?并不完美:原生的多图输出往往看起来像连环画,而不是风格统一的整套幻灯片,因此 Paper2Slides 会退而采用逐张迭代生成的方式来保持风格一致;而且过于细致的样式提示词反而可能损害效果。
CLI 和网页界面在任何操作系统上都能跑吗?它是基于 Python 的 CLI 和 Web 应用,后端为 FastAPI、前端为 React,只要能运行 Python 和 Node 的平台都能跨平台使用;网页界面通过浏览器访问。
可以输入哪些文档格式?Paper2Slides 接受 PDF、Word、Excel、PowerPoint 和 Markdown 文件,并且可以一次处理多个文件。
快速模式和普通模式有什么区别?快速模式(--fast)跳过 RAG 索引直接查询 LLM,适合短文档或快速预览;普通模式会先构建完整的 RAG 索引,更适合篇幅长或图表众多的多文件文档。
幻灯片可以选择哪些风格?内置风格包括 'academic'(简洁、专业)和 'doraemon'(多彩、插画感),也可以用自然语言描述 'custom' 风格,比如龙猫主题。
生成中断了怎么办?四个流水线阶段(RAG、分析、规划、创作)都会自动保存检查点文件,重新运行同一命令会从上次中断处继续,而不用从头再来。
Creator
HKUDS
Size
26.9 MB
Stars
3.8K
Updated
CommitMay 20
Age
10mo
Commits · 90 Days