# 留子课程幻灯片整理翻译工具 将课程 PDF 幻灯片自动转换为结构化中文 Markdown,利用 LLM 优化排版、解释图片、翻译并保留英文专业术语。 ## 功能 - **PDF → Markdown**:自动将 PDF 转为结构化 Markdown - **智能排版**:LLM 优化格式、修正标题层级、修复数学公式 - **图片注解**:自动识别图片内容并添加说明 - **中文翻译**:翻译为简体中文,保留专业术语英文原文(如 `磁共振成像(MRI)`) - **断点续跑**:自动跳过已完成的步骤,支持中断后继续 ## 前置要求 - Nvidia GPU(docling 转换需要) - OpenAI 兼容 API(支持 OpenAI / DeepSeek / 通义千问 / Ollama 等) ## 安装 ```bash pip install uv uv venv uv sync ``` ## 配置 复制 `config.example.ini` 为 `config.ini` 并填入你的 API 信息: ```bash cp config.example.ini config.ini ``` `config.ini` 格式: ```ini [llm] BASE_URL = https://api.openai.com/v1 API_KEY = sk-xxxx MODEL = gpt-4o TEMPERATURE = 0.7 MAX_RETRIES = 3 ``` **常见服务配置:** | 服务 | BASE_URL | MODEL 示例 | |------|----------|-----------| | OpenAI | `https://api.openai.com/v1` | `gpt-4o` | | DeepSeek | `https://api.deepseek.com/v1` | `deepseek-chat` | | 通义千问 | `https://dashscope.aliyuncs.com/compatible-mode/v1` | `qwen-max` | | Ollama | `http://localhost:11434/v1` | `gemma3:latest` | > Ollama 的 `API_KEY` 可填任意值(如 `ollama`)。 环境变量 `OPENAI_API_KEY` / `OPENAI_BASE_URL` 也可配置,优先级低于 `config.ini`。 ## 使用 将 PDF 放入 `input/` 目录,然后运行: ```bash uv run python main.py ``` 输出结构: ``` output/ └── 课程名称/ ├── index.md # PDF 转 Markdown ├── index_refined.md # LLM 精炼翻译 └── images/ # 提取的图片 ``` ### 断点续跑 程序会自动跳过已完成的步骤: - `index_refined.md` 已存在 → **跳过整个文件** - `index.md` 已存在但 `index_refined.md` 不存在 → **跳过 PDF 转换,仅运行 LLM 精炼** 如需重新处理,删除对应的输出文件即可。 ## 引用 - [docling](https://github.com/docling-project/docling) - [langchain](https://github.com/langchain-ai/langchain) ## 常见问题 ### docling 转换 PDF 时报错 可能是 PDF 不规范,用 ghostscript 修复: ```bash gs -o output.pdf -sDEVICE=pdfwrite -dPDFSETTINGS=/default input.pdf ```