# pdf2ppt
**Repository Path**: corffee/pdf2ppt
## Basic Information
- **Project Name**: pdf2ppt
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-05-25
- **Last Updated**: 2026-06-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# PDF2PPT
**PDF2PPT** 是一个开源工具,致力于将 AI 生成的 PDF 文稿(如 Google NotebookLM 导出的内容)或其他标准 PDF 文档,通过智能解析转换为可编辑的 PowerPoint (PPTX) 演示文稿。
本项目基于 **MinerU** 强大的文档解析能力,能够精准识别 PDF 中的文本、图片、表格和列表结构,并将其高保真地还原到 PPT 页面中。
## 核心优势
### 🚀 MinerU 技术加持
本项目采用 MinerU API 作为 PDF 文档解析引擎,提供以下核心能力:
- **🎯 精准元素识别**
- **标题 (Title)**: 识别各级标题,保留层级关系
- **文本 (Text)**: 提取段落文本,支持多语言 OCR
- **图片 (Image)**: 提取高清原图,包含图片标题 (image_caption)
- **表格 (Table)**: 识别复杂表格结构,支持 HTML 格式输出
- **列表 (List)**: 识别有序/无序列表,保留层级结构
- **页脚 (Footer)**: 识别页脚和水印文字
- **📍 精确 Bbox 定位**
- 每个元素都带有精确的边界框坐标 `[x1, y1, x2, y2]`
- 支持像素级定位,确保 PPT 还原布局一致性
- **🔍 强大 OCR 能力**
- 支持中英文混排识别
- LaTeX 公式识别(如 `$360^{\circ}$`)
- 特殊字符和符号识别
### 💡 智能转换特性
- **Area-based 字号算法**: 根据 bbox 面积和字符密度自动计算最佳字号
- **坐标系智能转换**: 自动处理 PDF 和 PPT 不同坐标系的转换
- **LaTeX 符号清理**: 自动转换 LaTeX 符号为 Unicode 字符(如 `\circ` → `°`)
- **水印智能过滤**: 自动检测和移除重复水印元素
- **表格动态字号**: 表格字号根据单元格高度自适应(10-16pt 范围)
## 工作流程 (Process Flow)
```mermaid
graph TD
A[输入PDF] -->|分拆单页| B(单页PDF)
B -->|批量上传| C{MinerU API v4}
C -->|VLM模型解析| D[结构化JSON]
D -->|layout.json| E1[Page Size + 坐标系]
D -->|content_list.json| E2[元素列表]
E1 --> F[坐标系转换]
E2 --> F
F -->|元素分类| G{元素类型}
G -->|Title/Text| H1[Area-based
字号计算]
G -->|Image| H2[高清原图
+Caption]
G -->|Table| H3[HTML解析
原生表格]
G -->|List| H4[列表结构化
渲染]
G -->|Footer| H5[水印检测
过滤]
H1 --> I[智能布局]
H2 --> I
H3 --> I
H4 --> I
H5 --> I
I --> J[生成PPTX]
style C fill:#e1f5ff
style D fill:#fff4e1
style G fill:#ffe1f5
style J fill:#e1ffe1
```
**流程说明**:
1. **PDF 分页**: 将多页 PDF 拆分为单页,支持批量并发处理
2. **MinerU 解析**:
- 使用 VLM 模型进行深度 OCR 和版面分析
- 获取两个关键 JSON:`layout.json`(坐标系信息)和 `content_list.json`(元素内容)
3. **坐标转换**: 自动检测并转换 layout 和 content 的不同坐标系
4. **元素处理**:
- 根据元素类型进行专门处理
- 图片提取 caption 作为独立文本
- 表格解析为原生 PPT 表格
5. **智能合成**:
- Area-based 算法计算最佳字号
- 精确 bbox 定位保证布局一致性
- LaTeX 符号清理优化显示效果
## 转换效果对比
以下是实际转换效果对比(使用 Google NotebookLM 生成的 PDF 测试):
| **PDF 原始页面** | **转换后的 PPT** |
| :-----------------------------: | :-----------------------------: |
|  |  |
## 下载
您可以直接下载打包好的可执行文件,无需安装Python环境:
- **[PDF2PPT_Tool.exe (v0.3)](https://github.com/blacksamuraiiii/pdf2ppt/releases/download/v0.3/PDF2PPT_Tool.exe)**
## 快速开始
### 1. 安装依赖
```bash
pip install -r requirements.txt
```
### 2. 申请 MinerU Token
本项目依赖 MinerU API。请前往 [MinerU API 管理台](https://mineru.net/apiManage/token) 注册并获取您的 API Token。
### 3. 配置环境
配置 `config.py` 文件(可参考 `config.example.py`):
```python
# config.py
MINERU_TOKEN = "您的_MINERU_TOKEN"
PDF_INPUT_PATH = "input.pdf"
PPT_OUTPUT_PATH = "output.pptx"
CACHE_DIR = "temp" # 缓存目录,避免重复调用 API
USE_CACHE = True # 是否使用缓存
REMOVE_WATERMARK = True # 是否移除水印
```
### 4. 运行程序
#### 方式一:GUI 界面 (推荐)
```bash
python app.py
```

#### 方式二:命令行
```bash
python pdf2ppt.py
```
## 版本历史
## 🤖 Agent Skill 集成 (New!)
本项目现已提供标准的 **AI Agent Skill** 包,支持 Agent 直接调用。
- **Skill 路径**: `./skill-pdf2ppt`
- **能力描述**: 将 PDF 文档转换为可编辑的 PowerPoint (PPTX) 演示文稿。
- **调用方式**:
```bash
python skill-pdf2ppt/scripts/main.py --pdf_path "input.pdf" --token "YOUR_TOKEN"
```
- **查看详情**: 请阅读 [skill-pdf2ppt/SKILL.md](skill-pdf2ppt/SKILL.md)
## 版本历史
### v0.3
**🎯 智能解析增强**
- ✨ **Layout.json 多源解析**: 同时利用 `layout.json` 和 `content_list.json`,提取 image_caption 的精确 bbox
- 🔄 **坐标系智能转换**: 自动检测并转换不同坐标系,确保元素位置精确
- 🧹 **LaTeX 符号清理**: 增强 LaTeX 公式处理(支持 `\circ`, `\degree`, `\times` 等常用符号)
- 🚫 **水印智能过滤**: 优化水印检测算法,支持关键词匹配、位置判断和重复文本检测
**📊 表格与文本优化**
- 📐 **表格动态字号**: 基于单元格高度自适应字号(10-16pt 范围)
- ⚖️ **表格内容居中**: 垂直和水平双向居中对齐,表头自动加粗
- 📏 **Area-based 字号算法优化**: 缩放因子从 0.8 提升至 0.95,文字更清晰
**🛠️ 代码优化**
- 🧼 **日志精简**: 移除表格尺寸、字号估算等调试信息
- 📦 **缓存机制**: temp 文件夹用于开发调试,生产环境直接使用 API 返回值
- 🎨 **统一样式**: 所有文字统一使用 Area-based 算法和 Microsoft YaHei 字体
### v0.2
**🎨 图形化界面**
- ✨ **GUI 界面**: 基于 CustomTkinter 的现代化界面 (`app.py`)
- 🖱️ **操作便捷**: 文件拖拽选择、参数可视化配置、实时日志显示
- 📦 **打包支持**: 提供 `app.spec` 和 `version_info.txt`,支持 PyInstaller 打包为 exe
**🔧 功能增强**
- 🚫 **去水印功能**: 自动检测和过滤 PDF 中的重复水印元素
- 🌐 **日志汉化**: 统计日志全面汉化,提升可读性
- 🔣 **特殊字符处理**: 针对 `\u200b` 等特殊字符进行转义
### v0.1
**🎉 初始版本**
- 🔗 **MinerU 集成**: 集成 MinerU API (v4) 上传与解析流程
- 🌳 **递归解析**: 实现基于递归的 Block 解析,支持复杂嵌套布局
- 📐 **Area-based 算法**: 引入字号估算算法,解决文字大小不一致问题
- 📊 **元素支持**: 支持 Text、Title、Image、Table、List、Footer 等元素类型
- 💾 **配置与缓存**: 配置分离 (`config.py`) 和解析结果缓存 (`temp/`)
## 依赖库
```
customtkinter==5.2.1
python-pptx==0.6.21
pymupdf==1.23.8
requests==2.31.0
```
详见 `requirements.txt`。
## 致谢
感谢 [MinerU](https://github.com/opendatalab/MinerU) 项目提供强大的文档解析能力!
## License
MIT License