PPT 翻译工具
应公司leader要求开发一个翻译PPT的小工具用来减轻我们实习生dirty work的工作量现在开源如下详细代码包请转至隔壁https://github.com/Magique-lini/PPT_Translation产品需求文档如下具体怎么运行看文章最后版本v1.1日期2026-06-24状态草稿交互形态Web 应用 后端 API一、产品概述背景与目标跨语言场景下PPT 的人工翻译效率低、格式还原成本高现有通用翻译工具无法保留幻灯片的视觉布局且术语精准度不足以应对专业场景。本产品采用Web 应用 后端 API形态交付核心目标提供开箱即用的 Web 界面任何用户无需安装即可完成 PPT 翻译同时暴露 REST API支持企业系统与开发者程序化集成自动保留原始 PPT 布局与格式支持场景预设保证专业术语准确性。产品架构用户浏览器 │ 拖拽上传 / 参数配置 / 进度查看 / 文件下载 ▼ Web 前端单页应用 │ HTTP / REST ▼ 后端 APIFastAPI ├── PPT 解析与格式还原python-pptx ├── 翻译引擎调用DeepL / OpenAI / Google └── 任务队列异步翻译用户群体类型使用方式代表场景普通用户Web 界面个人学习、工作汇报、出行演讲等日常场景专业服务商Web 界面 / API翻译公司、会议服务商批量处理企业研发团队REST API集成至内部文档管理、OA 或内容平台个人开发者REST API嵌入个人工具或自动化脚本二、核心功能需求F1 · Web 前端编号需求优先级F1-1提供拖拽上传区域支持点击选择文件接受.pptx格式P0F1-2上传前展示文件名、页数、大小预览P0F1-3提供语言方向选择中→英 / 英→中和翻译场景下拉选择P0F1-4翻译过程中显示进度条与预计剩余时间禁止重复提交P0F1-5翻译完成后提供一键下载按钮文件名格式原文件名_translated.pptxP0F1-6错误状态友好提示文件过大、格式不支持、翻译失败等P0F1-7支持历史记录展示本次会话内已翻译文件列表可重新下载P1F1-8支持双语对照预览翻译完成后在页面内预览幻灯片缩略图P2F2 · 文件处理编号需求优先级F2-1支持上传.pptx格式文件单文件最大50 MB最多500 张幻灯片P0F2-2翻译完成后返回同格式.pptx文件Web 端直接下载API 端支持回调 URL 推送P0F2-3支持异步模式提交后返回task_id前端轮询进度API 端支持 WebhookP0F2-4支持批量翻译Web 端多文件上传API 端单次请求最多 10 个文件P1F3 · 翻译能力编号需求优先级F3-1支持中→英与英→中双向翻译P0F3-2接入至少一种主流翻译引擎DeepL / OpenAI / Google Translate引擎可配置P0F3-3支持翻译场景domain参数内置场景通用、商务、医疗、法律、金融、学术、科技P0F3-4支持自定义术语表glossary键值对形式覆盖引擎默认翻译P1F3-5支持不翻译列表如品牌名、专有名词跳过翻译P1F3-6翻译记忆相同文本片段复用已翻译结果提升一致性与速度P2F4 · 格式保留编号需求优先级F4-1保留所有文本框的位置、尺寸、旋转角度P0F4-2保留字体族、字号、加粗、斜体、颜色、下划线等字符格式P0F4-3保留段落对齐方式、行间距、缩进P0F4-4图片、形状、图表、背景、动画、备注页原样保留不做翻译P0F4-5翻译后文本若超出原文本框范围自动等比缩小字号以适配可关闭P1F4-6支持双语对照模式在原文下方插入译文颜色或字号有别P2F5 · API 接口规范Web 前端与外部调用方共用同一套后端 API。5.1 文件翻译异步推荐POST /v1/translate Content-Type: multipart/form-data 参数 file .pptx 文件必填 source_lang 源语言zh / en必填 target_lang 目标语言zh / en必填 domain 翻译场景默认 general可选 engine 翻译引擎默认 deepl可选 glossary_id 术语表 ID可选 font_shrink 字号缩小适配true/false默认 true可选 webhook_url 翻译完成后回调地址可选API 调用方使用 返回 { task_id: xxx, status: queued, estimated_seconds: 30 }5.2 任务状态查询 / 结果下载GET /v1/translate/{task_id} 返回 进行中{ task_id: xxx, status: processing, progress: 0.6 } 完成 { task_id: xxx, status: completed, download_url: ..., expires_at: ... } 失败 { task_id: xxx, status: failed, error: { code: ..., message: ... } } GET /v1/translate/{task_id}/download 返回.pptx 文件流直接下载5.3 术语表管理POST /v1/glossaries 创建术语表 GET /v1/glossaries/{id} 获取术语表 PUT /v1/glossaries/{id} 更新术语表 DELETE /v1/glossaries/{id} 删除术语表5.4 翻译场景查询GET /v1/domains 返回所有支持的翻译场景列表及说明F6 · 安全与鉴权编号需求优先级F6-1Web 用户无需注册即可使用匿名模式通过 Session Cookie 标识会话P0F6-2API 调用方通过API KeyBearer Token鉴权P0F6-3上传文件仅在服务端短暂存储翻译完成后24 小时内自动删除P0F6-4传输层强制 HTTPSP0F6-5匿名用户速率限制每 IP 每日最多翻译5 个文件P1F6-6API Key 可配置速率限制RPM / 每日文件数P1三、非功能需求类别指标性能10 页以内 PPT ≤ 15s 完成翻译超 10 页异步处理前端实时显示进度可用性服务可用率 ≥ 99.5%月度格式还原率翻译后布局与原文视觉一致率 ≥ 95%内部测试集多引擎容灾主引擎不可用时自动 fallback 至备用引擎用户无感知兼容性Web 端支持 Chrome / Edge / Safari 最新两个主版本错误响应所有 API 错误返回标准 JSON{ code: ..., message: ... }四、翻译场景说明场景值说明典型术语示例general通用场景适合日常内容—business商务场景强调正式表达revenue → 营收stakeholder → 利益相关方medical医疗健康精准医学术语myocardial infarction → 心肌梗死legal法律合同严谨法律用语indemnification → 赔偿责任finance金融投资规范财务术语amortization → 摊销academic学术论文符合学术惯例methodology → 研究方法tech科技产品IT/工程术语containerization → 容器化五、优先级规划MVPP0 全量Web 界面拖拽上传、语言/场景选择、进度显示、一键下载、错误提示中英双向翻译 场景参数 至少一种翻译引擎接入完整格式保留文本框位置、字体、段落样式异步任务模式前端轮询进度匿名访问无需注册 HTTPS 文件 24h 自动删除V1.1P1批量翻译Web 多文件 API 批量接口自定义术语表 CRUD不翻译列表匿名用户速率限制 API Key 管理字号自动缩放适配会话内历史记录V2.0P2双语对照模式输出 页面预览翻译记忆多引擎 fallback使用量统计 DashboardAPI 调用方六、关键约束与风险风险说明应对第三方 API 成本按字符计费大文件成本较高翻译记忆复用 匿名用户限额复杂格式还原嵌套表格、艺术字、SmartArt 还原难度高MVP 阶段保留原始元素不翻译中文字体缺失服务端无中文字体导致乱码内置常用中文字体或嵌入字体策略引擎术语精度通用引擎在专业领域准确率不稳定术语表覆盖 场景 prompt 调优大文件超时页数多时翻译耗时长同步接口易超时强制异步模式 前端进度轮询七、验收下载代码包之后在config.py文件中更新自己的API key运行main.py 文件运行成功之后按住 “ctrl 鼠标左键” 就可以直接访问这个localhost端口上传PPT进行翻译了上手非常便捷欢迎大家使用翻译的PPT效果如下