☰
PDFMathTranslate 网页部署实战:从本机到团队公网访问
2026/10/14 22:18:06 网站建设 项目流程

PDFMathTranslate 网页部署实战:从本机到团队公网访问

【免费下载链接】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

PDFMathTranslate 用 AI 对 PDF 论文做双语翻译并保留公式排版。本文讲 PDFMathTranslate 网页部署:本机跑通界面、局域网共享、账号限制、反向代理加 HTTPS 公网访问。不含模型调优与集群部署。

选部署方式:Python、Docker 还是 Windows 绿色版

三种安装路径最终启动的都是同一个 Gradio 网页服务,差别只在环境管理方式:

你的情况选哪种一句话差异
服务器长期给团队跑Docker依赖打进一个镜像,Dockerfile 里已包含 LibreOffice 等系统库
自己机器上做开发测试Python 直装改代码即时生效,但要自己维护 Python 3.10 以上环境
Windows 个人使用绿色版压缩包解压即运行,不装任何东西

服务器场景建议从源码构建:仓库里的 script/Dockerfile.China 针对国内网络调整了依赖源,构建慢时可以换它。

把 PDFMathTranslate 跑起来并完成首次翻译

以团队最常用的 Docker 路径为例:

git clone https://gitcode.com/GitHub_Trending/pd/PDFMathTranslate.git cd PDFMathTranslate docker compose up -d --build

这条命令按 docker-compose.yml 构建镜像并后台启动容器,端口 7860 已映射到宿主机。想换端口只需修改 compose 文件里的ports行。

验证服务是否就绪:

curl -I http://127.0.0.1:7860

看到HTTP/1.1 200即说明服务在监听。浏览器打开http://localhost:7860,Gradio 页面会自动弹出(启动逻辑在 pdf2zh/gui.py 中)。

Python 直装路径只有两步:

pip install pdf2zh pdf2zh -i

-i即启动图形界面,默认监听 7860 端口。端口被占用时加--serverport 7861换一个。

Windows 绿色版从项目 Releases 页下载pdf2zh-version-win64.zip,解压后双击pdf2zh.exe,浏览器会自动打开本地服务;启动失败一般补装 VC++ 运行库即可。

界面上传一篇论文,选择源语言、目标语言和翻译服务,点击开始翻译,等待输出文件出现即为完成。下面的预览动画展示了翻译过程与双语版面的对应关系:

一行命令开放局域网访问 🔌

先说结论:通常不需要额外参数。setup_gui会依次尝试绑定::、0.0.0.0、127.0.0.1,绑到0.0.0.0即对局域网开放;Docker 路径下 compose 已映射 7860 端口。团队成员直接用http://服务器IP:7860访问。

在任一台办公电脑上验证连通性:

curl -I http://服务器IP:7860

同样返回 200 即通。这一层的风险是服务完全无鉴权,局域网内任何人都能调用翻译、消耗你的 API 额度,上传内容也只有服务端口一个访问控制点,适合先小范围试用。

加账号密码,避免服务被滥用

给服务加上登录门禁,格式为每行一个用户、逗号分隔:

printf 'alice,pw-alice\nbob,pw-bob\n' > users.txt pdf2zh -i --authorized users.txt

--authorized第一个参数是用户文件,可选第二个参数传入自定义登录页 HTML(解析逻辑见 pdf2zh/gui.py 的parse_user_passwd)。Docker 部署时把users.txt挂进容器并修改 compose 的command即可。注意密码在文件中和 HTTP 传输中都是明文,这一层只解决"谁来用",不解决"怎么传得安全",公网场景必须再叠一层 HTTPS。

反向代理加 HTTPS 的公网访问配置

用 Nginx 终结 TLS,把流量转给本机 7860:

server { listen 443 ssl; server_name translate.example.com; ssl_certificate /etc/nginx/cert.pem; ssl_certificate_key /etc/nginx/key.pem; client_max_body_size 200m; location / { proxy_pass http://127.0.0.1:7860; } }

server_name与证书路径按实际域名替换,client_max_body_size决定能上传多大的 PDF。防火墙只放行 80/443,不再暴露 7860:

ufw allow 443/tcp

公网开放意味着服务对互联网全量可见,账号密码(见上一节)与 HTTPS 两项缺一不可;对敏感团队还可以再加 IP 白名单。

长期稳定运行:可选调整清单

以下都不是必做项,按实际遇到的问题取用,完整说明见 docs/ADVANCED.md:

调整项做法何时用
换翻译引擎页面下拉框直接切换;或启动时-s deepl并提前export DEEPL_AUTH_KEY=...默认 Google 服务不稳定或想换供应商
调并发-t 8(默认 4)大文档翻译排队久
自定义提示词--prompt prompt.txt团队术语、语气需要统一
跳过字体子集化--skip-subset-fonts个别 PDF 输出字体渲染异常
健康检查cron 里执行curl -sf http://127.0.0.1:7860/ || docker restart pdf2zh无人值守长期运行

配合docker stats观察容器 CPU 与内存占用,翻译高峰时若资源紧张,优先降-t而不是加机器。

出问题如何自查:先跑一遍可用性检查 ⚠️

先做一轮基础检查,排除"服务本身挂了"这类最常见情况:

docker ps # 容器是否还在运行 curl -I http://127.0.0.1:7860 # 端口是否响应 docker logs --tail 50 pdf2zh # 最近的报错 df -h . # 磁盘是否写满

再对照症状定位:

症状常见原因处理
本机通、局域网不通防火墙未放行 7860ufw allow 7860/tcp,并确认进程监听的是 0.0.0.0 而非 127.0.0.1
公网页面能开,点翻译没反应Gradio 依赖 WebSocket,Nginx 未透传升级头在location内补proxy_set_header Upgrade $connection_upgrade等两行
上传大 PDF 报 413client_max_body_size过小调大该值后nginx -s reload
翻译报网络错误或超时所选翻译服务网络不稳或额度耗尽换一个服务重试;重复内容可依赖内置缓存避免重复请求
--share临时链接突然失效Gradio 分享链接有效期约 72 小时团队场景固定使用端口或反向代理,不依赖 share 链接

收尾:把服务接进团队工作流

服务跑稳后,下一步建议给每个成员发放独立账号(--authorized),并把"提交 PDF → 取回译文"固化进团队的文献处理流程。若后续需要程序化批量翻译或对接其他工具,参考 docs/APIS.md 的接口说明即可在现有部署上直接扩展。

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询