[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-72259":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":30,"readmeContent":31,"aiSummary":32,"trendingCount":16,"starSnapshotCount":16,"syncStatus":33,"lastSyncTime":34,"discoverSource":35},72259,"Paper2Slides","HKUDS\u002FPaper2Slides","HKUDS","\"Paper2Slides: From Paper to Presentation in One Click\"","",null,"Python",3716,472,30,23,0,9,26,105,27,101.02,"MIT License",false,"main",[26,27,28,29],"agentic-ai","llm-agents","paper2poster","paper2slides","2026-06-12 04:01:04","\u003Cdiv align=\"center\">\n\n\u003Cimg src=\"assets\u002Fpaper2slides_logo.png\" alt=\"Paper2Slides Logo\" width=\"200\"\u002F>\u003Cbr>\n\n# Paper2Slides: From Paper to Presentation in One Click\n\n[![Python](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPython-3.12+-FCE7D6.svg)](https:\u002F\u002Fwww.python.org\u002F)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-C1E5F5.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT\u002F)\n[![Feishu](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FFeishu-Group-E9DBFC?style=flat&logo=wechat&logoColor=white)](.\u002FCOMMUNICATION.md) \n[![WeChat](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FWeChat-Group-C5EAB4?style=flat&logo=wechat&logoColor=white)](.\u002FCOMMUNICATION.md)\n\n✨ **Never Build Slides from Scratch Again** ✨\n\n| 📄 **Universal File Support** &nbsp;|&nbsp; 🎯 **RAG-Powered Precision** &nbsp;|&nbsp; 🎨 **Custom Styling** &nbsp;|&nbsp; ⚡ **Lightning Speed** |\n\n\u003C\u002Fdiv>\n\n---\n\n## 🎯 What is Paper2Slides?\n\nTurns your **research papers**, **reports**, and **documents** into **professional slides & posters** in **minutes**.\n\n### ✨ Key Features\n- 📄 **Universal Document Support**\u003Cbr>\n  Seamlessly process PDF, Word, Excel, PowerPoint, Markdown, and multiple file formats simultaneously.\n  \n- 🎯 **Comprehensive Content Extraction**\u003Cbr>\n  RAG-powered mechanism ensures every critical insight, figure, and data point is captured with precision.\n  \n- 🔗 **Source-Linked Accuracy**\u003Cbr>\n  Maintains direct traceability between generated content and original sources, eliminating information drift.\n  \n- 🎨 **Custom Styling Freedom**\u003Cbr>\n  Choose from professional built-in themes or describe your vision in natural language for custom styling.\n  \n- ⚡ **Lightning-Fast Generation**\u003Cbr>\n  Instant preview mode enables rapid experimentation and real-time refinements.\n  \n- 💾 **Seamless Session Management**\u003Cbr>\n  Advanced checkpoint system preserves all progress—pause, resume, or switch themes instantly without loss.\n  \n- ✨ **Professional-Grade Visuals**\u003Cbr>\n  Deliver polished, presentation-ready slides and posters with publication-quality design standards.\n\n### ⚡ Easy as One Command\n```bash\n# One command to generate slides from a paper\npython -m paper2slides --input paper.pdf --output slides --style doraemon --length medium --fast --parallel 2\n```\n\n---\n\n## 🔥 News\n\n- **[2025.12.09]** Added parallel slide generation (`--parallel`) for faster processing\n- **[2025.12.08]** Paper2Slides is now open source!\n\n---\n\n## 🎨 Custom Styling Showcase\n\n\u003Cdiv align=\"center\">\n\n\u003Ctable>\n\u003Ctr>\n\u003Ctd align=\"center\" width=\"290\">\u003Cimg src=\"assets\u002Fdoraemon_poster.png?v=2\" width=\"280\"\u002F>\u003Cbr\u002F>\u003Ccode>doraemon\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd align=\"center\" width=\"290\">\u003Cimg src=\"assets\u002Facademic_poster.png?v=2\" width=\"280\"\u002F>\u003Cbr\u002F>\u003Ccode>academic\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd align=\"center\" width=\"290\">\u003Cimg src=\"assets\u002Ftotoro_poster.png?v=2\" width=\"280\"\u002F>\u003Cbr\u002F>\u003Ccode>custom\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n\u003Ctable>\n\u003Ctr>\n\u003Ctd align=\"center\" width=\"290\">\u003Ca href=\"assets\u002Fdoraemon_slides.pdf\">\u003Cimg src=\"assets\u002Fdoraemon_slides_preview.png?v=2\" width=\"280\"\u002F>\u003C\u002Fa>\u003Cbr\u002F>\u003Ccode>doraemon\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd align=\"center\" width=\"290\">\u003Ca href=\"assets\u002Facademic_slides.pdf\">\u003Cimg src=\"assets\u002Facademic_slides_preview.png?v=2\" width=\"280\"\u002F>\u003C\u002Fa>\u003Cbr\u002F>\u003Ccode>academic\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd align=\"center\" width=\"290\">\u003Ca href=\"assets\u002Ftotoro_slides.pdf\">\u003Cimg src=\"assets\u002Ftotoro_slides_preview.png?v=2\" width=\"280\"\u002F>\u003C\u002Fa>\u003Cbr\u002F>\u003Ccode>custom\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n\u003Csub>✨ Multiple styles available — simply modify the \u003Ccode>--style\u003C\u002Fcode> parameter\u003Cbr\u002F>\nExamples from \u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fabs\u002F2512.02556\">DeepSeek-V3.2: Pushing the Frontier of Open Large Language Models\u003C\u002Fa>\u003C\u002Fsub>\n\n\u003C\u002Fdiv>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>💡 Custom Style Example: Totoro Theme\u003C\u002Fb>\u003C\u002Fsummary>\n\n```\n--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.\"\n```\n\n\u003C\u002Fdetails>\n\n---\n\n### 🌐 Paper2Slides Web Interface\n\n\u003Cdiv align=\"center\">\n\u003Ctable>\n\u003Ctr>\n\u003Ctd>\u003Cimg src=\"assets\u002Fui_1.png\" width=\"420\"\u002F>\u003C\u002Ftd>\n\u003Ctd>\u003Cimg src=\"assets\u002Fui_2.png\" width=\"420\"\u002F>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\n---\n\n## 📋 Table of Contents\n\n- [🎯 Quick Start](#-quick-start)\n- [🏗️ Paper2Slides Framework](#%EF%B8%8F-paper2slides-framework)\n- [🔧 Configuration](#%EF%B8%8F-configuration)\n- [📁 Code Structure](#-code-structure)\n\n---\n\n## 🏃 Quick Start\n\n### 1. Environment Setup\n\n```bash\n# Clone repository\ngit clone https:\u002F\u002Fgithub.com\u002FHKUDS\u002FPaper2Slides.git\ncd Paper2Slides\n\n# Create and activate conda environment\nconda create -n paper2slides python=3.12 -y\nconda activate paper2slides\n\n# Install dependencies\npip install -r requirements.txt\n```\n\n> [!NOTE]\n> Create a `.env` file in `paper2slides\u002F` directory with your API keys. Refer to `paper2slides\u002F.env.example` for the required variables.\n\n### 2. Command Line Usage\n\n```bash\n# Basic usage - generate slides from a paper\npython -m paper2slides --input paper.pdf --output slides --length medium\n\n# Generate poster with custom style\npython -m paper2slides --input paper.pdf --output poster --style \"minimalist with blue theme\" --density medium\n\n# Fast mode\npython -m paper2slides --input paper.pdf --output slides --fast\n\n# Enable parallel generation (2 workers by default)\npython -m paper2slides --input paper.pdf --output slides --parallel 2\n\n# List all processed outputs\npython -m paper2slides --list\n```\n\n**CLI Options**:\n\n| Option | Description | Default |\n|--------|-------------|---------|\n| `--input, -i` | Input file(s) or directory | Required |\n| `--output` | Output type: `slides` or `poster` | `poster` |\n| `--content` | Content type: `paper` or `general` | `paper` |\n| `--style` | Style: `academic`, `doraemon`, or custom | `doraemon` |\n| `--length` | Slides length: `short`, `medium`, `long` | `short` |\n| `--density` | Poster density: `sparse`, `medium`, `dense` | `medium` |\n| `--fast` | Fast mode: skip RAG indexing | `false` |\n| `--parallel` | Enable parallel slide generation: `--parallel` uses 2 workers, `--parallel N` uses N workers | `1` (sequential without this option) |\n| `--from-stage` | Force restart from stage: `rag`, `summary`, `plan`, `generate` | Auto-detect |\n| `--debug` | Enable debug logging | `false` |\n\n**💾 Checkpoint & Resume**:\n\nPaper2Slides intelligently saves your progress at every key stage, allowing you to:\n\n| Scenario | Command |\n|----------|---------|\n| **Resume after interruption** | Just run the same command again — it auto-detects and continues |\n| **Change style only** | Add `--from-stage plan` to skip re-parsing |\n| **Regenerate images** | Add `--from-stage generate` to keep the same plan |\n| **Full restart** | Add `--from-stage rag` to start from scratch |\n\n> [!TIP]\n> Checkpoints are auto-saved. Just run the same command to resume. Use `--from-stage` only to **force** restart from a specific stage.\n\n### 3. Web Interface\n\nLaunch both backend and frontend services:\n\n```bash\n.\u002Fscripts\u002Fstart.sh\n```\n\nOr start services independently:\n\n```bash\n# Terminal 1: Start backend API\n.\u002Fscripts\u002Fstart_backend.sh\n\n# Terminal 2: Start frontend\n.\u002Fscripts\u002Fstart_frontend.sh\n```\n\nAccess the web interface at `http:\u002F\u002Flocalhost:5173` (default)\n\n\u003Cdiv align=\"center\">\n\u003Ctable>\n\u003Ctr>\n\u003Ctd>\u003Cimg src=\"assets\u002Fui_1.png\" width=\"420\"\u002F>\u003C\u002Ftd>\n\u003Ctd>\u003Cimg src=\"assets\u002Fui_2.png\" width=\"420\"\u002F>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\n---\n\n## 🏗️ Paper2Slides Framework\n\nPaper2Slides transforms documents through a 4-stage pipeline designed for **reliability** and **efficiency**:\n\n| Stage | Description | Checkpoint | Output |\n|-------|-------------|------------|------------|\n| **🔍 RAG** | Parse documents and construct intelligent retrieval index using RAG | `checkpoint_rag.json` | Searchable knowledge base|\n| **📊 Analysis** | Extract document structure, identify key figures, tables, and content hierarchy\t| `checkpoint_summary.json` | Structured content map |\n| **📋 Planning** | Generate optimized content layout and slide\u002Fposter organization strategy | `checkpoint_plan.json` | Presentation blueprint|\n| **🎨 Creation** | Render final high-quality slides and poster visuals | Output directory | Polished presentation materials |\n\n### 💾 Smart Recovery System\nEach stage automatically saves progress checkpoints, enabling seamless resumption from any point if the process is interrupted—no need to start over.\n\n### Fast Mode vs Normal Mode\n\n| Mode | Processing Pipeline | Use Cases |\n|------|---------------------|-----------|\n| **Normal** | Complete RAG indexing with deep document analysis | Complex research papers, lengthy documents, multi-section content|\n| **Fast** | Skip RAG indexing, direct LLM query | Short documents, instant previews, quick revisions |\n\nUse `--fast` when:\n- Document (text + figures) is short enough to fit in LLM context\n- Quick preview\u002Fiteration needed\n- Don't want to wait for RAG indexing\n\nUse normal mode (default) when:\n- Document is long or has many figures\n- Multiple files to process together\n- Need retrieval for better context selection\n\n---\n\n## ⚙️ Configuration\n\n### Output Directory Structure\n\n```\noutputs\u002F\n├── \u003Cproject_name>\u002F\n│   ├── \u003Ccontent_type>\u002F                   # paper or general\n│   │   ├── \u003Cmode>\u002F                       # fast or normal\n│   │   │   ├── checkpoint_rag.json       # RAG query results & parsed file paths\n│   │   │   ├── checkpoint_summary.json   # Extracted content, figures, tables\n│   │   │   ├── summary.md                # Human-readable summary\n│   │   │   └── \u003Cconfig_name>\u002F            # e.g., slides_doraemon_medium\n│   │   │       ├── state.json            # Current pipeline state\n│   │   │       ├── checkpoint_plan.json  # Content plan for slides\u002Fposter\n│   │   │       └── \u003Ctimestamp>\u002F          # Generated outputs\n│   │   │           ├── slide_01.png\n│   │   │           ├── slide_02.png\n│   │   │           ├── ...\n│   │   │           └── slides.pdf        # Final PDF output\n│   │   └── rag_output\u002F                   # RAG index storage\n│   └── ...\n└── ...\n```\n\n**Checkpoint Files**:\n| File | Description | Reusable When |\n|------|-------------|---------------|\n| `checkpoint_rag.json` | Parsed document content | Same input files |\n| `checkpoint_summary.json` | Figures, tables, structure | Same input files |\n| `checkpoint_plan.json` | Content layout plan | Same style & length\u002Fdensity |\n\n### Style Configuration\n\n| Style | Description |\n|-------|-------------|\n| `academic` | Clean, professional academic presentation style |\n| `doraemon` | Colorful, friendly style with illustrations |\n| `custom` | Any text description for LLM-generated style |\n\n### Image Generation Providers\n\n- Set `IMAGE_GEN_PROVIDER` in `paper2slides\u002F.env` to choose the backend:\n  - `openrouter` (default): uses `IMAGE_GEN_API_KEY`, `IMAGE_GEN_BASE_URL`, and `IMAGE_GEN_MODEL` (default `google\u002Fgemini-3-pro-image-preview`)\n  - `google`: uses the official Gemini API at `GOOGLE_GENAI_BASE_URL` (default `https:\u002F\u002Fgenerativelanguage.googleapis.com\u002Fv1beta`), `IMAGE_GEN_API_KEY`, `IMAGE_GEN_MODEL` (default `models\u002Fgemini-3-pro-image-preview`, must be image-capable), and `IMAGE_GEN_RESPONSE_MIME_TYPE` (default `text\u002Fplain`; use text types if your model does not support image responses)\n- Reference figures are sent as inline data when supported (Google) or as `image_url` attachments (OpenRouter).\n\n### Image Generation Notes\n\n> [!TIP]\n> 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\u002Fgemini-1.5-flash`) via `IMAGE_GEN_PROVIDER=google`. Key findings:\n> \n> - **Mood Keywords**: Words like \"warm\", \"elegant\", \"vibrant\" strongly influence the overall color palette\n> - **Layout vs Style**: Fine-grained *layout* instructions ground well; fine-grained *element styling* does not\n> - **Prompt Length**: Simple prompts generally outperform detailed ones\n> - **Multi-slide Generation**: Native multi-image output is story-like; for consistent slides, we use iterative single-image generation\n\n---\n\n## 📁 Code Structure\n\n| Module | Description |\n|--------|-------------|\n| `paper2slides\u002Fcore\u002F` | Pipeline orchestration, 4-stage execution |\n| `paper2slides\u002Fraganything\u002F` | Document parsing & RAG indexing |\n| `paper2slides\u002Fsummary\u002F` | Content extraction: figures, tables, paper structure |\n| `paper2slides\u002Fgenerator\u002F` | Content planning & image generation |\n| `api\u002F` | FastAPI backend for web interface |\n| `frontend\u002F` | React frontend (Vite + TailwindCSS) |\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Click to expand full project structure\u003C\u002Fb>\u003C\u002Fsummary>\n\n```\nPaper2Slides\u002F\n├── paper2slides\u002F                 # Core library\n│   ├── main.py                   # CLI entry point\n│   ├── core\u002F\n│   │   ├── pipeline.py           # Main pipeline orchestration\n│   │   ├── state.py              # Checkpoint state management\n│   │   └── stages\u002F\n│   │       ├── rag_stage.py      # Stage 1: Parse & index\n│   │       ├── summary_stage.py  # Stage 2: Extract content\n│   │       ├── plan_stage.py     # Stage 3: Plan layout\n│   │       └── generate_stage.py # Stage 4: Generate images\n│   │\n│   ├── raganything\u002F\n│   │   ├── raganything.py        # RAG processor\n│   │   └── parser.py             # Document parser\n│   │\n│   ├── summary\u002F\n│   │   ├── paper.py              # Paper structure extraction\n│   │   └── extractors\u002F           # Figure\u002Ftable extractors\n│   │\n│   ├── generator\u002F\n│   │   ├── content_planner.py    # Slide\u002Fposter planning\n│   │   └── image_generator.py    # Image generation\n│   │\n│   ├── prompts\u002F                  # LLM prompt templates\n│   └── utils\u002F                    # Utilities\n│\n├── api\u002Fserver.py                 # FastAPI backend\n├── frontend\u002Fsrc\u002F                 # React frontend\n└── scripts\u002F                      # Shell scripts (start\u002Fstop)\n```\n\n\u003C\u002Fdetails>\n\n---\n\n## 🙏 Related Open-Sourced Projects\n\n- **[LightRAG](https:\u002F\u002Fgithub.com\u002FHKUDS\u002FLightRAG)**: Graph-Empowered RAG\n- **[RAG-Anything](https:\u002F\u002Fgithub.com\u002FHKUDS\u002FRAG-Anything)**: Multi-Modal RAG\n- **[VideoRAG](https:\u002F\u002Fgithub.com\u002FHKUDS\u002FVideoRAG)**: RAG with Extremely-Long Videos\n\n---\n\n\u003Cdiv align=\"center\">\n\n**🌟Found Paper2Slides helpful? Star us on GitHub!**\n\n**🚀 Turn any document into professional presentations in minutes!**  \n\n\u003C\u002Fdiv>\n\n---\n\n## Star History\n\n[![Star History Chart](https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=HKUDS\u002FPaper2Slides&type=timeline&legend=top-left)](https:\u002F\u002Fwww.star-history.com\u002F#HKUDS\u002FPaper2Slides&type=timeline&legend=top-left)\n\n---\n\n\u003Cp align=\"center\">\n  \u003Cem> ❤️ Thanks for visiting ✨ Paper2Slides!\u003C\u002Fem>\u003Cbr>\u003Cbr>\n  \u003Cimg src=\"https:\u002F\u002Fvisitor-badge.laobi.icu\u002Fbadge?page_id=HKUDS.Paper2Slides&style=for-the-badge&color=00d4ff\" alt=\"Views\">\n\u003C\u002Fp>\n","Paper2Slides 是一个能够将研究论文、报告和文档一键转换为专业幻灯片和海报的工具。其核心功能包括支持多种文件格式（如PDF、Word、Excel等）的无缝处理，利用RAG机制精确提取内容，并保持生成内容与原始来源的直接可追溯性。此外，用户可以选择内置的专业主题或通过自然语言描述自定义样式，享受快速生成和实时预览的便捷体验。该工具适用于需要高效制作学术报告或商业演示的场景，尤其适合研究人员、教师及企业人士使用。",2,"2026-06-11 03:41:05","high_star"]