Files
slide-translate/README.md
T
nite 1c1c68a214 refactor: 统一使用 OpenAI 兼容 API,支持自定义 base_url/key/model
- 移除 Gemini 和 Ollama 独立适配,统一使用 ChatOpenAI + base_url
- config.ini 简化为 BASE_URL / API_KEY / MODEL / TEMPERATURE / MAX_RETRIES
- 新增 config.example.ini 示例配置
- 移除 langchain-google-genai / langchain-ollama / pymupdf 依赖
- main.py 新增断点续跑:跳过已有 index.md / index_refined.md
- LLM 请求支持 max_retries 自动重试(默认 3 次)
- 优化 README
2026-04-18 18:42:42 +10:00

99 lines
2.4 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 留子课程幻灯片整理翻译工具
将课程 PDF 幻灯片自动转换为结构化中文 Markdown,利用 LLM 优化排版、解释图片、翻译并保留英文专业术语。
## 功能
- **PDF → Markdown**:自动将 PDF 转为结构化 Markdown
- **智能排版**:LLM 优化格式、修正标题层级、修复数学公式
- **图片注解**:自动识别图片内容并添加说明
- **中文翻译**:翻译为简体中文,保留专业术语英文原文(如 `磁共振成像(MRI)`
- **断点续跑**:自动跳过已完成的步骤,支持中断后继续
## 前置要求
- Nvidia GPUdocling 转换需要)
- 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
```