- 多格式文档支持: 一站式翻译PDF、Word(DOC/DOCX)和Excel(XLSX)文档
- 保留原始格式: 精确保留原文档的字体、样式、表格结构和排版
- 智能语言检测: 自动识别源文档语言,支持中、英、日、法、德、西等多语言互译
- 高质量翻译: 集成大语言模型,确保翻译的专业性和准确性
- 双服务器架构:
- 文档处理服务: 负责文档解析、翻译管理和格式重建
- LLM推理服务: 使用lmdeploy引擎大幅提高推理速度,提供高性能翻译能力
- 高并发处理:
- 线程池并行翻译多页文档
- 队列管理和任务调度机制
- 批处理优化,减少API调用次数
- 性能优化:
- 翻译结果缓存机制,避免重复翻译
- 分块处理大型文档,优化内存使用
- 自适应批量处理,平衡吞吐量和响应时间
- RESTful API: 标准化接口设计,便于集成
- 异步处理模式: 上传文件后立即返回,后台处理完成后通知
- 实时进度跟踪: 提供任务状态查询接口,实时监控翻译进度
- OpenAI兼容接口: LLM服务支持OpenAI风格的请求格式
- Python 3.10+
- 至少8GB内存(推荐16GB+,特别是处理大型PDF)
- 6GB磁盘空间用于应用和临时文件存储
- NVIDIA GPU(可选,加速LLM推理)
# 安装主要依赖
pip install flask requests PyMuPDF python-docx openpyxl mammoth
# 安装LLM服务依赖
pip install lmdeploy waitress
mkdir -p uploads translated
chmod 755 uploads translated
-
文档处理服务配置
- 设置API_URL指向LLM服务地址
- 配置上传文件大小限制
- 配置语言映射关系
-
LLM服务配置
- 设置模型路径
- 配置工作线程数和批处理大小
- 调整内存使用和会话长度
# 创建并激活虚拟环境
python -m venv doctranslate-env
source doctranslate-env/bin/activate # Linux/Mac
# 或
doctranslate-env\Scripts\activate # Windows
# 安装依赖
pip install flask requests PyMuPDF python-docx openpyxl mammoth lmdeploy waitress
# 编辑LLM服务配置
nano server.py # 修改model_path指向你的模型目录
# 运行LLM服务
python server.py
成功启动后,您将看到:
正在加载模型: D:\tran\models\DeepSeek-R1-Distill-Qwen-1.5B...(以实际路径为准)
模型加载完成!服务器准备就绪。
启动工作线程 1/10
...
启动Flask服务器在端口 8000...
# 创建必要的目录
mkdir -p uploads translated
# 编辑文档处理服务配置
nano tran.py # 确认API_URL设置为http://localhost:8000/v1/chat/completions
# 运行文档处理服务
python tran.py
成功启动后,您将看到:
🔄 测试翻译API连接...
✅ 翻译API连接成功
* Running on http://127.0.0.1:5000
- API调用测试
curl -X POST http://localhost:5000/api/translate \
-H "Content-Type: application/json" \
-d '{
"file_url": "https://example.com/sample.pdf",
"callback_url": "http://localhost:8080/callback",
"target_language": "zh",
"request_id": "test-001"
}'
- 查询翻译状态
curl http://localhost:5000/api/status?request_id=test-001
文档处理服务提供以下API端点:
-
开始翻译
- POST
/api/translate
- 参数:
file_url
: 文档URL地址target_language
: 目标语言(en/zh/ja/fr/de/es)callback_url
: 处理完成后的回调地址request_id
(可选): 自定义请求ID
- POST
-
查询状态
- GET
/api/status?request_id={request_id}
- 返回当前翻译进度和状态
- GET
-
取消任务
- POST
/api/cancel
- 参数:
request_id
- POST
可以直接在Python代码中调用翻译功能:
from paste import translate
# 参数1: 本地文件路径或URL
# 参数2: 目标语言代码
result_path = translate("path/to/document.pdf", "zh")
# 或
result_path = translate("https://example.com/document.docx", "en")
if result_path:
print(f"翻译成功,结果保存在: {result_path}")
else:
print("翻译失败")
函数返回值:
- 翻译成功: 返回翻译后文件的保存路径
- 翻译失败: 返回None
app.config['MAX_CONTENT_LENGTH'] = 32 * 1024 * 1024 # 增加最大文件大小至32MB
app.config['API_KEY'] = "your_api_key" # 添加API密钥
CONFIG = {
"max_workers": 20, # 增加工作线程
"max_batch_size": 20, # 增加批处理大小
"session_len": 4096, # 增加会话长度
"temperature": 0.3, # 调低温度提高翻译准确性
}
-
翻译服务无响应
- 检查LLM服务是否正常运行
- 确认API_URL配置正确
-
内存不足错误
- 减小批处理大小和并行线程数
- 处理大型PDF时考虑分段处理
-
翻译质量问题
- 调整temperature为较低值(0.1-0.3)
- 为特定领域添加专业提示词
-
文件格式保留问题
- 复杂表格和图表可能需要手动调整
- PDF中的复杂排版可能不能完全保留
- 使用SSD存储临时文件,加快IO操作
- 增加系统内存,特别是处理大型Excel或PDF文件时
- 启用结果缓存以提高重复翻译效率
- 对于高流量场景,考虑使用Redis进行分布式缓存
系统架构由两个独立服务组成,可根据需求单独扩展。文档处理服务负责格式处理的CPU密集型任务,而LLM服务可利用GPU加速翻译推理。