功能: - 上传PDF自动翻译成中文 - 不登录可用(次数限制) - 登录后获得更多次数 - 会员等级制度(不同权益) - 智能缓存(相同文件秒出结果) - 原文译文对比查看 - 支持重新翻译(自定义要求) - 翻译历史记录 技术栈: Flask + SQLAlchemy + Bootstrap5
147 lines
3.6 KiB
Markdown
147 lines
3.6 KiB
Markdown
# PDF翻译助手 - 英文PDF翻译网站
|
||
|
||
基于本地LLM服务的英文PDF翻译中文网站。
|
||
|
||
## 功能特点
|
||
|
||
### 核心功能
|
||
- ✅ 上传英文PDF自动翻译成中文
|
||
- ✅ 智能缓存机制 - 相同文件秒出结果
|
||
- ✅ 翻译进度实时显示
|
||
- ✅ 原文译文对比查看
|
||
- ✅ 支持重新翻译(带自定义要求)
|
||
|
||
### 用户系统
|
||
- ✅ 不登录可用(有次数限制)
|
||
- ✅ 免费注册获得更多次数
|
||
- ✅ 会员等级制度
|
||
|
||
### 会员权益
|
||
|
||
| 用户类型 | 每日次数 | 最大页数 | 特殊功能 |
|
||
|---------|---------|---------|---------|
|
||
| 访客 | 3次 | 20页 | 基础翻译 |
|
||
| 免费 | 10次 | 50页 | 历史、重译 |
|
||
| 基础会员 | 50次 | 100页 | 导出PDF |
|
||
| 专业会员 | 200次 | 500页 | 批量翻译 |
|
||
| 企业会员 | 无限 | 无限 | API调用 |
|
||
|
||
## 快速启动
|
||
|
||
```bash
|
||
# 安装依赖
|
||
pip install -r requirements.txt
|
||
|
||
# 初始化数据库
|
||
python app.py
|
||
|
||
# 启动服务(默认端口5000)
|
||
python app.py
|
||
```
|
||
|
||
访问 http://localhost:5000 即可使用。
|
||
|
||
## 配置说明
|
||
|
||
修改 `config.py` 文件:
|
||
|
||
```python
|
||
# LLM服务配置
|
||
LLM_CONFIG = {
|
||
"api_base": "http://192.168.2.5:1234/v1", # LLM API地址
|
||
"api_key": "your-api-key",
|
||
"model": "qwen/qwen3.5-35b-a3b",
|
||
}
|
||
|
||
# 用户权限配置
|
||
USER_LIMITS = {
|
||
"guest": {"daily_translations": 3, "max_pages": 20},
|
||
"free": {"daily_translations": 10, "max_pages": 50},
|
||
# ...
|
||
}
|
||
```
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
pdf-translate-web/
|
||
├── app.py # Flask主应用
|
||
├── config.py # 配置文件
|
||
├── models.py # 数据库模型
|
||
├── services.py # 翻译服务
|
||
├── requirements.txt # 依赖列表
|
||
├── templates/ # HTML模板
|
||
│ ├── index.html # 首页
|
||
│ ├── login.html # 登录页
|
||
│ ├── register.html # 注册页
|
||
│ ├── pricing.html # 会员定价
|
||
│ ├── history.html # 翻译历史
|
||
│ └── translation.html # 翻译详情
|
||
├── static/ # 静态资源
|
||
│ ├── css/style.css # 样式
|
||
│ └ js/main.js # 前端脚本
|
||
├── uploads/ # 上传文件目录
|
||
├── cache/ # 翻译缓存目录
|
||
└── outputs/ # 输出文件目录
|
||
```
|
||
|
||
## API接口
|
||
|
||
### 上传翻译
|
||
```
|
||
POST /api/upload
|
||
参数: file (PDF文件), instruction (翻译要求,可选)
|
||
返回: {translation_id, from_cache, task_id}
|
||
```
|
||
|
||
### 翻译状态
|
||
```
|
||
GET /api/status/<translation_id>
|
||
返回: {status, progress}
|
||
```
|
||
|
||
### 获取结果
|
||
```
|
||
GET /api/result/<translation_id>
|
||
返回: {filename, content}
|
||
```
|
||
|
||
### 下载结果
|
||
```
|
||
GET /api/download/<translation_id>
|
||
返回: Markdown文件
|
||
```
|
||
|
||
### 重新翻译
|
||
```
|
||
POST /api/retranslate/<translation_id>
|
||
参数: {instruction: "翻译要求"}
|
||
```
|
||
|
||
## 扩展功能建议
|
||
|
||
1. **导出PDF格式** - 将翻译结果转回PDF保留排版
|
||
2. **批量翻译** - 支持多个PDF同时上传
|
||
3. **自定义术语库** - 用户可定义专业术语翻译
|
||
4. **翻译质量评分** - AI评估翻译质量
|
||
5. **API接口** - 提供外部调用接口
|
||
6. **导出Word格式** - 方便后续编辑
|
||
7. **多语言支持** - 支持更多语言互译
|
||
|
||
## 技术栈
|
||
|
||
- **后端**: Flask + SQLAlchemy
|
||
- **前端**: Bootstrap 5 + JavaScript
|
||
- **LLM**: 本地部署的 Qwen3.5 模型
|
||
- **缓存**: 文件缓存 + 数据库索引
|
||
- **异步**: Python threading
|
||
|
||
## 注意事项
|
||
|
||
⚠️ Qwen模型有思考模式,翻译速度约30秒/块,适合处理重要文档。
|
||
|
||
⚠️ 生产环境需要:
|
||
- 添加HTTPS支持
|
||
- 配置真实数据库(PostgreSQL)
|
||
- 实现支付系统
|
||
- 添加文件清理机制 |