🌍 基于AI的智能PDF文档翻译工具,支持Web界面和API接口,保持文档结构不变。
- 🚀 智能翻译: 基于OpenAI/DeepSeek等大语言模型
- 📄 保持格式: 翻译后保持原始PDF文档结构和布局
- 🌐 双重接口: FastAPI REST API + Gradio Web界面
- ⚙️ 环境配置: 通过环境变量灵活配置
- 🔧 容器部署: Docker一键部署
- 📊 实时监控: 翻译进度实时跟踪
pdftranslate_web/
├── src/pdftranslate_web/ # 核心模块
│ ├── __init__.py
│ ├── api_server.py # FastAPI API服务器
│ ├── api_client.py # Python客户端SDK
│ └── gradio_client.py # Gradio Web界面
├── scripts/ # 启动脚本
│ ├── run_server.py # 启动API服务器
│ └── run_gradio.py # 启动Web界面
├── docker/ # Docker配置
│ └── start.sh # 容器启动脚本
├── docs/ # 文档
│ ├── API_USAGE.md # API使用说明
│ └── GRADIO_USAGE.md # Web界面使用说明
├── tests/ # 测试文件
├── .env.example # 环境变量配置模板
├── docker-compose.yml # Docker Compose配置
├── Dockerfile # Docker镜像配置
├── pyproject.toml # 项目配置和依赖
└── README.md # 项目说明
推荐使用 uv 包管理器:uv 是一个超快的 Python 包安装器和解析器,比 pip 快 10-100 倍,支持自动依赖解析和虚拟环境管理。
# 克隆项目
git clone https://github.com/wwwzhouhui/pdftranslate_web
cd pdftranslate_web
# 方式一:使用 uv 包管理器 (推荐)
# 安装 uv (如果没有安装)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 或者使用 pip 安装
pip install uv
# 使用 uv 安装依赖 (自动创建虚拟环境)
uv sync
# 方式二:使用传统 pip
# 安装依赖
pip install -e .
复制环境变量模板并编辑:
cp .env.example .env
编辑 .env
文件,设置API密钥:
# OpenAI配置 (必填)
OPENAI_API_KEY=your-api-key-here
OPENAI_MODEL=deepseek-ai/DeepSeek-V3
OPENAI_BASE_URL=https://api.siliconflow.cn/v1
# 翻译配置
QPS=4
DEFAULT_LANG_IN=en
DEFAULT_LANG_OUT=zh
WATERMARK_OUTPUT_MODE=no_watermark
# 使用 uv (推荐)
uv run python scripts/run_server.py --host 0.0.0.0 --port 8000
# 或使用传统方式
python scripts/run_server.py --host 0.0.0.0 --port 8000
API服务将在 http://localhost:8000
启动,文档地址:http://localhost:8000/docs
# 使用 uv (推荐)
uv run python scripts/run_gradio.py --server-url http://localhost:8000 --port 7860
# 或使用传统方式
python scripts/run_gradio.py --server-url http://localhost:8000 --port 7860
Web界面将在 http://localhost:7860
启动
from pdftranslate_web.api_client import BabelDOCClient
# 创建客户端
client = BabelDOCClient("http://localhost:8000")
# 翻译PDF文件
downloaded_files = client.translate_and_download(
pdf_path="document.pdf",
output_dir="./output",
lang_in="en",
lang_out="zh"
)
print(f"翻译完成:{downloaded_files}")
# 使用API客户端
# uv方式 (推荐)
uv run python src/pdftranslate_web/api_client.py document.pdf --output-dir ./output --lang-out zh
# 传统方式
python src/pdftranslate_web/api_client.py document.pdf --output-dir ./output --lang-out zh
# 检查服务器状态
curl http://localhost:8000/health
- 打开浏览器访问
http://localhost:7860
- 上传PDF文件
- 选择翻译选项(源语言、目标语言、输出类型)
- 点击"开始翻译"
- 等待翻译完成并下载结果
POST /translate
- 提交翻译任务GET /status/{task_id}
- 查询翻译状态GET /download/{task_id}/{file_type}
- 下载翻译结果GET /health
- 健康检查
详细API文档请查看:docs/API_USAGE.md
所有配置通过环境变量进行设置。可以通过 .env
文件或直接设置环境变量:
# OpenAI配置 (必填)
OPENAI_API_KEY=your-api-key-here # API密钥
OPENAI_MODEL=deepseek-ai/DeepSeek-V3 # 模型名称
OPENAI_BASE_URL=https://api.siliconflow.cn/v1 # API基础URL
# 服务器配置
SERVER_HOST=0.0.0.0 # 绑定地址
SERVER_PORT=8000 # 端口号
QPS=4 # 每秒请求数限制
# 翻译配置
DEFAULT_LANG_IN=en # 默认源语言
DEFAULT_LANG_OUT=zh # 默认目标语言
WATERMARK_OUTPUT_MODE=no_watermark # 水印模式
NO_DUAL=false # 是否生成双语PDF
NO_MONO=false # 是否生成单语PDF
环境变量 | 默认值 | 说明 |
---|---|---|
OPENAI_API_KEY |
- | OpenAI API密钥 (必填) |
OPENAI_MODEL |
deepseek-ai/DeepSeek-V3 |
使用的模型 |
OPENAI_BASE_URL |
https://api.siliconflow.cn/v1 |
API端点 |
SERVER_HOST |
0.0.0.0 |
服务器地址 |
SERVER_PORT |
8000 |
服务器端口 |
QPS |
4 |
请求频率限制 |
DEFAULT_LANG_IN |
en |
默认源语言 |
DEFAULT_LANG_OUT |
zh |
默认目标语言 |
WATERMARK_OUTPUT_MODE |
no_watermark |
水印模式 |
# 克隆项目
git clone https://github.com/wwwzhouhui/pdftranslate_web
cd pdftranslate_web
# 方式一:使用 uv (推荐)
# 安装 uv (如果没有安装)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 安装开发依赖
uv sync --dev
# 方式二:使用传统 pip + 虚拟环境
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Linux/Mac
# venv\Scripts\activate # Windows
# 安装开发依赖
pip install -e ".[dev]"
pytest tests/
black src/
isort src/
- 准备环境变量文件
# 复制环境变量模板
cp .env.example .env
# 编辑环境变量 (必须设置API密钥)
nano .env
- 启动服务
# 构建并启动服务
docker-compose up -d
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f pdftranslate
服务启动后访问:
- API服务:http://localhost:8000
- Web界面:http://localhost:7860
- API文档:http://localhost:8000/docs
在 .env
文件中设置必需的配置:
# 必需配置
OPENAI_API_KEY=your-api-key-here
OPENAI_MODEL=deepseek-ai/DeepSeek-V3
OPENAI_BASE_URL=https://api.siliconflow.cn/v1
# 可选配置
QPS=4
DEFAULT_LANG_IN=en
DEFAULT_LANG_OUT=zh
# 构建镜像
docker-compose build
# 启动服务
docker-compose up -d
# 停止服务
docker-compose down
# 查看日志
docker-compose logs pdftranslate
# 重启服务
docker-compose restart pdftranslate
# 构建镜像
docker build -t pdftranslate_web .
# 运行容器
docker run -d \
--name pdftranslate \
-p 8000:8000 \
-p 7860:7860 \
-e OPENAI_API_KEY="your-api-key" \
pdftranslate_web
-
API密钥错误
- 检查
.env
文件中的OPENAI_API_KEY
设置 - 确认API密钥有效且有足够配额
- 检查
-
模块导入错误
- 确保已正确安装项目依赖
- 检查Python路径设置
-
端口占用
- 修改
.env
文件中的端口号 - 或使用环境变量指定其他端口
- 修改
-
翻译失败
- 检查网络连接
- 确认API服务可用性
- 查看日志文件获取详细错误信息
# 查看API服务器日志
python scripts/run_server.py --log-level DEBUG
# 查看特定任务日志
curl http://localhost:8000/status/{task_id}
- Fork项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature
) - 提交更改 (
git commit -m 'Add some AmazingFeature'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 开启Pull Request
本项目采用 AGPL-3.0 许可证。详见 LICENSE 文件。
- 📧 Email: [email protected]
- 🐛 问题反馈: GitHub Issues
- 重新整理项目目录结构
- 完善文档和配置文件
- 添加多种部署方式支持
- 优化API接口设计
⭐ 如果这个项目对您有帮助,请给我们一个star!