文本翻译 API
GET
POST
/transapi/
兼容 translate-api 接口格式的文本翻译。
请求参数
| 参数 | 类型 | 说明 |
|---|---|---|
text | string | 要翻译的文本 |
source_language | string | 源语言代码(如 en, zh, ja) |
target_language | string | 目标语言代码 |
secret | string | 访问密钥 (如果服务端配置了密钥) |
GET 请求使用 URL 查询参数,POST 请求支持 JSON body 或 Form 表单。
示例
GET /transapi/?text=Hello&source_language=en&target_language=zh
响应
{"code": 0, "msg": "ok", "text": "你好"}
图片翻译 API
POST
/transapi/image/
上传图片进行翻译。支持两种模式:直接视觉翻译(翻译模型直接读图)或 OCR 前置(先识别文字再翻译)。
请求参数(multipart/form-data)
| 参数 | 类型 | 说明 |
|---|---|---|
image | file | 图片文件(JPG/PNG/GIF/WebP) |
source_language | string | 源语言代码 |
target_language | string | 目标语言代码 |
use_ocr | string | true/false — 是否启用 OCR 前置识别 (默认 false) |
secret | string | 访问密钥 (可选) |
请求参数(JSON,使用 base64)
| 参数 | 类型 | 说明 |
|---|---|---|
image_base64 | string | 图片的 Base64 编码 |
source_language | string | 源语言代码 |
target_language | string | 目标语言代码 |
use_ocr | string | true/false (可选) |
secret | string | (可选) |
OCR 前置模式:当
use_ocr=true 时,系统先调用 OCR 模型(如 glm-ocr)识别图片中的文字,再将文字交给翻译模型翻译。适合文字量大、排版复杂的图片。
响应
{"code": 0, "msg": "ok", "text": "翻译结果"}
PDF 翻译
1. 上传 PDF
POST
/upload/pdf/
上传 PDF 文件,系统自动拆分为逐页图片。
| 参数 | 类型 | 说明 |
|---|---|---|
pdf | file | PDF 文件 |
secret | string | (可选) |
响应
{"code": 0, "msg": "ok", "pdf_id": "abc123", "total_pages": 10}
2. 获取页面图片
GET
/api/pdf/{pdf_id}/page/{page_num}
返回指定页面的 PNG 图片。页码从 1 开始。
3. 翻译指定页面
POST
/api/pdf/{pdf_id}/translate/{page_num}
| 参数 | 类型 | 说明 |
|---|---|---|
source_language | string | 源语言代码 |
target_language | string | 目标语言代码 |
use_ocr | string | true/false (可选) |
secret | string | (可选) |
4. Web 浏览器
GET
/pdf/{pdf_id}
打开 PDF 翻译浏览器页面,左右对照原文和译文,支持翻页和 OCR 切换。
语言列表
GET
/languages
获取所有支持的语言列表。
响应
{"code": 0, "msg": "ok", "languages": [{"code": "en", "name": "English", "tg_code": "en"}, ...]}
响应状态码
| code | 含义 | 说明 |
|---|---|---|
| 0 | 成功 | 翻译成功,结果在 text 字段 |
| 1 | 无权访问 | 密钥错误或未提供 |
| 2 | 参数缺失 | 缺少必要的请求参数 |
| 3 | 语言不支持 | 提供的语言代码无法识别 |
| 4 | 结果为空 | 模型返回了空翻译 |
| 5 | 服务错误 | Ollama 连接失败、超时等 |
配置说明
配置文件位于 data/config.json,首次启动时自动从 config.example.json 生成。修改后需重启服务。
{
"ollama_base_url": "http://localhost:11434",
"ollama_secret": "",
"model_name": "translategemma:latest",
"host": "0.0.0.0",
"port": 9911,
"secret": "",
"request_timeout": 120,
"ocr_model": {
"ollama_base_url": "",
"ollama_secret": "",
"model_name": "glm-ocr:latest",
"model_prompt": "Text Recognition",
"request_timeout": 120,
"default_enabled": true
}
}
| 字段 | 说明 |
|---|---|
ollama_base_url | Ollama 服务地址。Docker 部署时改为 http://host.docker.internal:11434 |
ollama_secret | Ollama API 密钥(Bearer Token),留空表示无需认证 |
model_name | 翻译模型名称,必须与 ollama list 完全一致 |
host / port | 监听地址和端口,默认 0.0.0.0:9911 |
secret | 翻译服务的访问密钥,留空表示无需密钥 |
request_timeout | Ollama 请求超时时间(秒) |
OCR 模型配置 (ocr_model)
用于图片/PDF 翻译的 OCR 前置识别模型。可以使用独立的 Ollama 实例。
| 字段 | 说明 |
|---|---|
ollama_base_url | OCR 模型的 Ollama 地址,留空则使用主地址 |
ollama_secret | OCR 模型的 Ollama 密钥,留空则使用主密钥 |
model_name | OCR 模型名称,默认 glm-ocr:latest |
model_prompt | OCR 识别提示词,默认 Text Recognition |
request_timeout | OCR 请求超时时间(秒) |
default_enabled | 网页端 OCR 前置复选框是否默认勾选(true/false)。若 model_name 为空则 OCR 不可用 |
提示:删除
data/config.json 后重启服务,将自动从 config.example.json 重新生成包含所有新字段的配置。