ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

从 3 行 Python 到常驻 HTTP 服务:PDFMathTranslate 批量翻译 API 实战指南

从 3 行 Python 到常驻 HTTP 服务:PDFMathTranslate 批量翻译 API 实战指南 从 3 行 Python 到常驻 HTTP 服务PDFMathTranslate 批量翻译 API 实战指南【免费下载链接】PDFMathTranslate[EMNLP 2025 Demo] PDF scientific paper translation with preserved formats - 基于 AI 完整保留排版的 PDF 文档全文双语翻译支持 Google/DeepL/Ollama/OpenAI 等服务提供 CLI/GUI/MCP/Docker/Zotero项目地址: https://gitcode.com/GitHub_Trending/pd/PDFMathTranslate需要把几十篇带公式的英文论文一次性翻译成中文、且排版不能散架时逐份跑 CLI 显然不现实。本文基于 PDFMathTranslatepip 包名pdf2zh给出 PDF 批量翻译 API 的两条落地路线进程内 Python 调用以及 FlaskCelery 常驻 HTTP 翻译服务覆盖提交任务、轮询进度、取回结果、取消任务四个动作。两条路线选型进程内 Python vs 常驻 HTTP维度进程内 Python 调用常驻 HTTP 服务形态from pdf2zh import translate对/v1/translate发 POST/GET/DELETE适用场景脚本、CI、单机批量转目录多客户端共享、远程提交、进度追踪额外依赖无装 pdf2zh 即可pdf2zh[backend] Redis进度反馈传callback接收 tqdm 进度对象轮询任务状态PROGRESS→SUCCESS结果落地直接写本地文件通过 HTTP 拉取 mono/dual 两个 PDF一句话决策个人或课题组做批处理走进程内多个系统、多人要共用一份翻译能力走常驻 HTTP。路线一3 行代码用 translate() 完成批量 PDF 翻译先装环境Python 要求3.11,3.13pip install pdf2zh最小可运行调用如下from pdf2zh import translate params dict(lang_inen, lang_outzh, servicegoogle, thread4) results translate(files[paper1.pdf, paper2.pdf], output./out, **params) # [(paper1-mono.pdf, paper1-dual.pdf), (paper2-mono.pdf, paper2-dual.pdf)]几个实操要点每个输入产出两份 PDFmono为纯译文版dual为保留原版排版的译文对照版公式、表格位置与原稿一致。files列表里可以直接放http(s)://链接库会自动下载.doc/.docx文件会被先转成 PDF 再翻译。想在进程里上报进度传callback即可它接收每页处理完的 tqdm 对象。不想写代码时CLI 的pdf2zh --dir /path/to/translate/会递归扫描目录批量处理适合一次性清库存。如果 PDF 已经在内存里从对象存储或数据库取回改用translate_streamfrom pdf2zh import translate_stream with open(paper.pdf, rb) as f: mono, dual translate_stream(streamf.read(), **params)mono/dual是 bytes各开一个文件以二进制模式写入即可。路线二两条命令起 FlaskCelery HTTP 翻译服务第一步装后端依赖并备好 Redis。Redis 是 Celery 异步翻译任务的 broker 兼结果存储默认地址redis://127.0.0.1:6379/0可用环境变量CELERY_BROKER、CELERY_RESULT改指向pip install pdf2zh[backend] sudo apt-get install redis-server # 已有 Redis 可跳过第二步开两个进程Flask 接口固定监听 11008 端口pdf2zh --flask # HTTP API pdf2zh --celery worker # 异步任务 worker提交翻译任务拿任务 IDcurl http://127.0.0.1:11008/v1/translate \ -F filepaper1.pdf \ -F data{lang_in:en,lang_out:zh,service:google,thread:4} # {id:d9894125-2f4e-45ea-9d93-1a9068d2045a}data就是与 Python 路线同构的参数 JSON字段见下方速查表。批量提交就是循环发 N 次收集 N 个 id。轮询进度直到 SUCCESScurl http://127.0.0.1:11008/v1/translate/d9894125-2f4e-45ea-9d93-1a9068d2045a # 进行中: {info:{n:13,total:506},state:PROGRESS} # 已完成: {state:SUCCESS}info.n/info.total是已处理/总页数前端直接当进度条用。轮询可以套一个while循环每 5 秒取一次state为SUCCESS就退出。拉取单语、双语 PDF 结果curl http://127.0.0.1:11008/v1/translate/$ID/mono --output paper1-mono.pdf curl http://127.0.0.1:11008/v1/translate/$ID/dual --output paper1-dual.pdf注意任务未完成或失败时这两个端点直接返回 400{error:task not finished}/{error:task failed}别把它当接口故障处理。取消运行中的任务curl http://127.0.0.1:11008/v1/translate/$ID -X DELETE # 任务被 revokestate 变为 REVOKEDworker 进程会被直接终止内部走revoke(terminateTrue)适合误提交或参数写错的场景。批量翻译 API 接口与参数速查表方法路径动作返回POST/v1/translate提交任务表单字段filedataJSON{id: ...}GET/v1/translate/{id}查状态PROGRESS时附带info{n,total}完成后为SUCCESSGET/v1/translate/{id}/mono取纯译文 PDFapplication/pdf未完成返回 400GET/v1/translate/{id}/dual取双语对照 PDFapplication/pdf未完成返回 400DELETE/v1/translate/{id}终止并删除任务{state: REVOKED}data里可用的主要参数HTTP 与 Python 路线通用参数说明示例lang_in/lang_out源 / 目标语言代码en/zhservice翻译后端支持 google、deepl、openai、ollama 等googlethread并行线程数4pages只译指定页从 0 计数[0, 3, 4]prompt自定义提示词后端按 Template 渲染模板字符串ignore_cache强制绕过翻译缓存重译true常见坑与进阶方向⚠️ 别提前取结果结果端点 400 不代表服务坏了先 GET 确认SUCCESS。HTTP 路线会把整个 PDF 以 bytes 塞进 Celery 任务大文件会占用 broker 与 worker 内存大批量巨型文件走进程内translate()逐文件读盘落盘更省内存或在服务侧控制并发。翻译缓存是本地 sqlite见 pdf2zh/cache.py引擎与参数不变时已译过的句子直接命中同一批文档重跑几乎零成本需要重译时用ignore_cache。接口的实现在 pdf2zh/backend.py更细的文档见 docs/APIS.mdPython 入口封装在 pdf2zh/high_level.py。进阶方向--mode precise切到 v2 翻译内核--onnx指定自定义版面分析模型pdf2zh --mcp以 MCP 协议接入大模型客户端。研究场景的批量文献处理进程内路线足够轻量当多个客户端要共用一份翻译能力、需要远程提交与进度追踪时再把 FlaskCelery 这套常驻服务拉起来。【免费下载链接】PDFMathTranslate[EMNLP 2025 Demo] PDF scientific paper translation with preserved formats - 基于 AI 完整保留排版的 PDF 文档全文双语翻译支持 Google/DeepL/Ollama/OpenAI 等服务提供 CLI/GUI/MCP/Docker/Zotero项目地址: https://gitcode.com/GitHub_Trending/pd/PDFMathTranslate创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表