一个基于OpenAI的智能Excel翻译器,具有上下文感知功能和批量翻译能力,能够准确翻译Excel文件中的内容,同时保持原有的格式和结构。
Excel Translator是一个强大的工具,专门用于翻译Excel电子表格中的内容。与传统的逐单元格翻译工具不同,Excel Translator利用先进的AI技术和上下文感知算法,能够理解表格的结构、列的含义以及数据之间的关系,从而提供更准确、更一致的翻译结果。
该工具特别适用于需要翻译技术文档、数据报告、产品规格表等复杂Excel文件的场景,能够确保专业术语的一致性,并保持原始文件的格式和布局。
- 上下文感知翻译:利用表格结构、列类型和专业领域信息进行智能翻译,确保翻译结果符合上下文语境
- 批量翻译:支持将多行数据合并为单个翻译请求,显著提高翻译效率并减少API调用次数。具有以下高级特性:
- 智能分批:根据模型token限制智能分批处理大量数据,自动优化批次大小
- 多Sheet支持:支持翻译包含多个工作表的Excel文件,保持工作表间的引用关系
- 格式保留:可选择保留原始Excel文件的格式,包括合并单元格、字体样式、边框等
- 术语管理:内置专业领域术语库(机械、电气等),确保专业术语翻译的一致性
- 智能缓存:内置缓存机制,避免重复翻译相同内容,提高处理效率
- 领域检测:自动识别内容所属的专业领域(机械、电气、软件、医疗等),应用相应的翻译规则
- OpenAI集成:使用先进的AI模型(如GPT-4o)进行高质量翻译,支持多种语言
- 异步处理:采用异步编程模型,提高处理效率和响应速度
- 错误处理:完善的错误处理机制,确保在翻译失败时能够优雅地处理并提供有用的错误信息
- Web API支持:提供RESTful API接口,支持通过HTTP请求进行翻译
graph TD
A[用户接口] --> B[集成翻译器]
B --> C[上下文感知翻译器]
B --> D[批量翻译器]
B --> E[传统单元格翻译器]
C --> F[OpenAI API]
D --> F
E --> F
B --> G[Excel处理器]
G --> H[增强型Excel处理器]
G --> I[基础Excel处理器]
J[术语管理器] --> B
K[翻译过滤器] --> B
- Python 3.11 或更高版本
- OpenAI API密钥
git clone https://github.com/your-username/excel-translator.git
cd excel-translator推荐使用 uv 来管理依赖:
# 安装 uv (如果尚未安装)
pip install uv
# 安装项目依赖
uv sync或者使用 pip:
pip install -e .复制 .env.example 文件并重命名为 .env:
cp .env.example .env编辑 .env 文件,填写必要的配置信息:
# OpenAI配置
OPENAI_API_KEY=your_openai_api_key_here
OPENAI_MODEL=gpt-4o
OPENAI_BASE_URL=https://api.openai.com/v1
# 翻译设置
MAX_BATCH_SIZE=50
REQUEST_TIMEOUT=30
PRESERVE_FORMAT=true
# 批量翻译设置
BATCH_TRANSLATION_ENABLED=true
MAX_TOKENS=4096
TOKEN_BUFFER=500
# 文件设置
UPLOAD_DIR=uploads
OUTPUT_DIR=output
MAX_FILE_SIZE=10485760
# 日志设置
LOG_LEVEL=INFOpython main.py -i input.xlsx -o output -l englishpython main.py然后访问 http://localhost:18000/docs 查看API文档。
OPENAI_API_KEY: 你的OpenAI API密钥(必需)OPENAI_MODEL: 使用的OpenAI模型,默认为gpt-4oOPENAI_BASE_URL: OpenAI API的基础URL,可选,用于使用代理或自定义端点MAX_BATCH_SIZE: 批量翻译的最大单元数,默认为50REQUEST_TIMEOUT: API请求超时时间(秒),默认为30PRESERVE_FORMAT: 是否保留原始Excel格式,默认为trueBATCH_TRANSLATION_ENABLED: 是否启用批量翻译,默认为true。启用后将使用上下文感知的批量翻译功能,显著提高翻译效率并减少API调用次数MAX_TOKENS: 最大输出token数量,默认为4096。用于控制批量翻译中每个批次的最大token数量,避免超出模型限制TOKEN_BUFFER: token缓冲区大小,默认为1000。为批量翻译中的格式化内容预留的token空间,确保不会因格式化内容超出token限制UPLOAD_DIR: 上传文件目录,默认为uploadsOUTPUT_DIR: 输出文件目录,默认为outputMAX_FILE_SIZE: 最大文件大小(字节),默认为10485760(10MB)LOG_LEVEL: 日志级别,默认为INFO
import asyncio
from translator.integrated_translator import IntegratedTranslator
async def translate_excel():
# 创建翻译器实例
translator = IntegratedTranslator(
model="gpt-4o", # 指定模型
use_context_aware=True, # 使用上下文感知翻译
preserve_format=True # 保留原始格式
)
# 翻译Excel文件
result_path = await translator.translate_excel_file(
file_path="input.xlsx",
output_path="output",
source_language="chinese",
target_language="english"
)
print(f"翻译完成,结果保存在: {result_path}")
# 运行异步函数
asyncio.run(translate_excel())Excel Translator默认启用批量翻译功能,可以显著提高翻译效率并减少API调用次数。批量翻译会智能地将多个文本单元组合成批次进行翻译,同时保持上下文信息。
import asyncio
from translator.integrated_translator import IntegratedTranslator
async def translate_excel_with_batch():
# 创建翻译器实例(默认启用批量翻译)
translator = IntegratedTranslator(
model="gpt-4o", # 指定模型
use_context_aware=True, # 使用上下文感知翻译
preserve_format=True, # 保留原始格式
batch_translation_enabled=True # 启用批量翻译(默认值)
)
# 翻译Excel文件(将自动使用批量翻译)
result_path = await translator.translate_excel_file(
file_path="input.xlsx",
output_path="output",
source_language="chinese",
target_language="english"
)
print(f"翻译完成,结果保存在: {result_path}")
# 获取翻译统计信息
stats = translator.get_translation_stats()
print(f"翻译统计: {stats}")
# 运行异步函数
asyncio.run(translate_excel_with_batch())Excel Translator提供了一个基于FastAPI的Web API接口,可以通过HTTP请求进行翻译。
python main.py服务将启动在 http://localhost:18000。
POST /api/v1/excel-translator/translate: 翻译Excel文件- 参数:
file: 上传的Excel文件(multipart/form-data)source_language: 源语言target_language: 目标语言model: 使用的模型domain_terms: 领域术语字典(可选,JSON格式字符串)
- 参数:
使用curl命令:
curl -X POST "http://localhost:18000/api/v1/excel-translator/translate" \
-H "accept: text/event-stream" \
-H "Content-Type: multipart/form-data" \
-F "file=@input.xlsx" \
-F "source_language=chinese" \
-F "target_language=english" \
-F "model=gpt-4o"excel-translator/
├── main.py # 应用入口文件
├── pyproject.toml # 项目配置文件
├── .env.example # 环境变量示例文件
├── README.md # 项目说明文档
├── LICENSE # 许可证文件
├── design/ # 设计文档目录
│ ├── batch_translation_methods.md
│ └── batch_translator_design.md
├── src/ # 源代码目录
│ ├── api/ # API相关代码
│ │ ├── routes.py # API路由
│ │ └── sse_manager.py # SSE管理器
│ ├── config/ # 配置相关代码
│ │ ├── settings.py # 应用配置
│ │ └── logging_config.py # 日志配置
│ ├── models/ # 数据模型
│ └── translator/ # 翻译核心代码
│ ├── integrated_translator.py # 集成翻译器
│ ├── context_aware_translator.py # 上下文感知翻译器
│ ├── context_aware_batch_translator.py # 批量翻译器
│ ├── excel_handler.py # Excel处理器
│ ├── enhanced_excel_handler.py # 增强型Excel处理器
│ ├── terminology_manager.py # 术语管理器
│ ├── translation_filter.py # 翻译过滤器
│ └── ... # 其他翻译相关模块
└── tests/ # 测试代码目录
- 启用批量翻译功能,可以显著提高翻译效率
- 检查网络连接是否稳定
- 确认OpenAI API密钥是否正确配置
- 调整
MAX_BATCH_SIZE参数以优化性能
- 确保使用了正确的上下文感知翻译功能
- 检查是否正确配置了领域术语
- 尝试使用不同的AI模型
- 确认源语言和目标语言设置是否正确
- 确认
PRESERVE_FORMAT配置项是否设置为true - 检查Excel文件是否包含复杂的格式设置
- 尝试使用增强型Excel处理器
- 检查OpenAI API的使用配额
- 调整
REQUEST_TIMEOUT参数增加超时时间 - 启用缓存功能避免重复翻译
可以通过以下方式添加自定义术语:
- 在代码中使用
TerminologyManager类添加术语 - 通过API接口传递
domain_terms参数 - 修改配置文件添加术语库
欢迎任何形式的贡献!如果你想为这个项目做贡献,请遵循以下步骤:
- Fork 本仓库
- 创建你的特性分支 (
git checkout -b feature/AmazingFeature) - 提交你的更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启一个 Pull Request
- 克隆 Fork 的仓库
- 安装依赖:
uv sync
请确保你的代码遵循项目的编码规范,并包含适当的测试。
本项目采用 MIT 许可证。详情请见 LICENSE 文件。
如果你觉得这个项目对你有帮助,请考虑给它一个⭐️!
如果你有任何问题或建议,请提交 issue 或联系项目维护者。