已成功将 translate_arxiv.py 的功能整理成完整的 REST API,提供文档翻译服务。该 API 支持多种文件格式和翻译引擎,具备任务管理、状态查询、文件下载等完整功能。
api_app.py- 主 API 服务器应用start_api.py- API 服务器启动脚本api_requirements.txt- Python 依赖管理test_api.py- API 功能测试脚本
API_DOCUMENTATION.md- 详细的 API 使用文档API_SUMMARY.md- 功能总结文档(本文件)
- ✅ 支持多种文件格式:
.tex,.pdf,.zip,.tar.gz,.tar.bz2,.tar.xz - ✅ 自动文件类型检测和处理
- ✅ 安全的文件上传(最大 100MB)
- ✅ 临时文件管理和清理
- ✅ Google Translate - 免费翻译服务
- ✅ Tencent Cloud - 腾讯云翻译服务
- ✅ TencentCloud - 腾讯云翻译服务(新引擎)
- ✅ OpenAI - OpenAI GPT 翻译服务
- ✅ 自动下载 ArXiv 论文
- ✅ 缓存机制(避免重复下载)
- ✅ 支持所有 ArXiv 格式
- ✅ 自动提取和处理 LaTeX 结构
- ✅ 异步任务处理
- ✅ 实时状态更新
- ✅ 进度追踪(0-100%)
- ✅ 任务状态:pending, processing, completed, failed, cancelled
- ✅ 任务列表和删除功能
- ✅ 完整的 LaTeX 文档翻译
- ✅ 数学公式保持不变
- ✅ 文档结构完整性
- ✅ 自动合并和清理
- ✅ 支持 .bib 和 .bbl 文件
- ✅ XeLaTeX 编译支持
- ✅ 自动引用处理
- ✅ PDF 生成
- ✅ 编译错误处理
- ✅ 多轮编译确保引用正确
- ✅ 翻译后的 LaTeX 文件
- ✅ 编译后的 PDF 文件
- ✅ 完整的项目 ZIP 包
- ✅ 安全的文件访问控制
- Flask - Web 框架
- Flask-CORS - 跨域支持
- 多线程 - 异步任务处理
- RESTful API - 标准化接口设计
- JSON 格式 - 统一数据交换格式
- HTTP 状态码 - 标准化错误处理
- 文件上传 - multipart/form-data 支持
- 临时存储 - 上传文件和输出文件
- 任务状态 - 内存中的任务管理
- 缓存机制 - ArXiv 论文缓存
- 自动清理 - 过期文件处理
| 方法 | 端点 | 功能 | 描述 |
|---|---|---|---|
| GET | /api/health |
健康检查 | 检查服务状态 |
| GET | /api/engines |
获取引擎 | 列出可用翻译引擎 |
| POST | /api/upload |
上传文件 | 上传文档进行翻译 |
| POST | /api/arxiv/<id> |
ArXiv翻译 | 翻译指定ArXiv论文 |
| POST | /api/translate/<task_id> |
启动翻译 | 开始翻译任务 |
| GET | /api/status/<task_id> |
查询状态 | 获取任务状态 |
| GET | /api/download/<task_id>/<filename> |
下载文件 | 下载翻译结果 |
| GET | /api/tasks |
任务列表 | 获取所有任务 |
| DELETE | /api/tasks/<task_id> |
删除任务 | 删除任务和文件 |
# 安装依赖
pip install -r api_requirements.txt
# 启动服务器
python start_api.py
# 或者直接启动
python api_app.pyimport requests
# 1. 上传文件
with open('document.tex', 'rb') as f:
files = {'file': f}
response = requests.post('http://localhost:5000/api/upload', files=files)
task_id = response.json()['task_id']
# 2. 启动翻译
data = {'engine': 'openai', 'language_from': 'en', 'language_to': 'zh-CN'}
response = requests.post(f'http://localhost:5000/api/translate/{task_id}', json=data)
# 3. 查询状态
response = requests.get(f'http://localhost:5000/api/status/{task_id}')
status = response.json()
# 4. 下载结果
if status['status'] == 'completed':
response = requests.get(f'http://localhost:5000/api/download/{task_id}/{task_id}.zip')
with open('result.zip', 'wb') as f:
f.write(response.content)# 直接翻译 ArXiv 论文
data = {'engine': 'openai', 'language_from': 'en', 'language_to': 'zh-CN'}
response = requests.post('http://localhost:5000/api/arxiv/2301.00001', json=data)
task_id = response.json()['task_id']# 运行完整测试套件
python test_api.py- ✅ 健康检查
- ✅ 引擎列表获取
- ✅ 文件上传
- ✅ 翻译启动
- ✅ 状态查询
- ✅ 任务完成等待
- ✅ 文件下载
- ✅ ArXiv 翻译
- ✅ 错误处理
Flask==2.3.3
Flask-CORS==4.0.0
Werkzeug==2.3.7
requests==2.31.0
tiktoken==0.5.1
{
"openai": {
"base_url": "https://api.openai.com/v1",
"api_key": "your_openai_api_key",
"model": "gpt-3.5-turbo",
"max_tokens": 8000,
"temperature": 0.3,
"chunk_size": 6000
},
"tencent": {
"secret_id": "your_tencent_secret_id",
"secret_key": "your_tencent_secret_key",
"region": "ap-shanghai"
}
}- ✅ 文件类型验证
- ✅ 文件大小限制(100MB)
- ✅ 安全的文件名处理
- ✅ 临时文件自动清理
- ✅ 任务 ID 访问控制
- ✅ 文件下载权限检查
- ✅ 跨域请求控制(CORS)
- ✅ 全面的异常处理
- ✅ 详细错误信息
- ✅ HTTP 状态码标准化
- ✅ 超时处理
- ✅ 多线程任务处理
- ✅ 异步翻译执行
- ✅ 非阻塞 API 响应
- ✅ 任务队列管理
- ✅ 内存使用优化
- ✅ 临时存储管理
- ✅ 文件自动清理
- ✅ 缓存机制
- 文件大小: 最大 100MB
- 并发任务: 无硬限制,受系统资源影响
- 翻译时间: 取决于文档大小和引擎响应速度
- 存储空间: 临时文件需要足够磁盘空间
- 大文件: 建议分批处理大型文档
- 频繁使用: 考虑实现文件清理策略
- 生产环境: 建议使用专业 WSGI 服务器(如 Gunicorn)
- 监控: 建议添加日志和监控功能
- 用户认证和授权
- 翻译历史记录
- 批量文件处理
- 翻译质量评估
- 微服务架构
- 分布式任务队列
- 数据库持久化
- Web 界面
- 移动端 API
MathTranslate API 成功将命令行工具转换为完整的 Web 服务,具备以下优势:
- 易用性: RESTful API 接口,易于集成
- 完整性: 涵盖文档翻译的完整流程
- 灵活性: 支持多种翻译引擎和文件格式
- 可靠性: 完善的错误处理和状态管理
- 扩展性: 模块化设计,易于扩展
该 API 为文档翻译提供了企业级的解决方案,可以轻松集成到各种应用场景中。