ARTICLE · 1050121
Zotero + PDF2zh 实战:Windows 环境下配置双语 PDF 翻译
但在实际阅读论文的过程中,一个非常现实的问题是:
❝如何在 Zotero 中直接完成英文 PDF 的翻译,并生成可以进行原文与译文对照阅读的双语 PDF?
这篇文章将以 Windows 为例,从零开始搭建一套:
Zotero + PDF2zh + AI 翻译模型
的论文双语翻译环境。
整个过程会涉及:
Windows ↓Python ↓uv / Python 翻译环境 ↓PDF2zh Server ↓Zotero PDF2zh 插件 ↓AI 翻译 API ↓双语 PDF本文使用的是 PDF2zh 当前新版安装架构。项目目前将 Server、Zotero 插件和 Python 翻译环境分开维护,普通用户不需要手工指定 pdf2zh_next、BabelDOC、PyMuPDF 等底层组件的版本。
一、最终能够实现什么?
配置完成以后,我们可以直接在 Zotero 中选择一篇英文论文,然后调用 PDF2zh 进行翻译。
整体效果类似:
英文论文 PDF ↓ Zotero ↓ PDF2zh ↓ AI 翻译模型 ↓生成翻译后的 PDF ↓返回 Zotero根据具体翻译模式,可以生成不同的阅读形式,例如:
英文原文+中文译文也可以根据 PDF2zh 支持的布局模式进行双语排版。
新版配置文档中已经支持 LR 左右对照、TB 上下交替等双语布局方式。
二、开始之前需要准备什么?
在 Windows 上配置之前,建议准备以下环境:
1. Windows 电脑
Windows 10 / Windows 11 均可以作为基础环境。
2. Zotero
当前 PDF2zh 项目文档列出的支持范围包括:
Zotero 7 Zotero 8 Zotero 9 Zotero 10
具体版本兼容性建议以项目当前 Release 和文档为准。
3. Python
当前项目安装文档推荐:
Python 3.12如果电脑中已经安装其他 Python 版本,也建议不要随意删除现有环境。
后续可以让 PDF2zh 自己管理翻译环境。
4. AI 翻译服务
还需要准备一个能够提供翻译能力的服务。
例如:
DeepSeekOpenAIOpenAI-compatible API智谱阿里云等当前 PDF2zh 文档明确列出了多种翻译服务,并支持 OpenAI 兼容格式。
三、为什么新版 PDF2zh 不建议手动安装一大堆依赖?
这是很多 Windows 用户第一次安装时最容易踩坑的地方。
旧教程经常会看到:
pip install pdf2zhpip install BabelDOCpip install PyMuPDF甚至还需要自己创建多个虚拟环境。
但当前 PDF2zh 的新版 Server 已经对翻译环境进行了重新设计。
普通用户主要需要:
Python+Server+uv / conda第一次真正执行翻译时,Server 会负责创建或使用对应的 Python 翻译环境,并安装兼容版本的 pdf2zh_next 及相关依赖。
所以:
❝不要看到网上旧教程就照着手动安装所有底层组件。
否则很容易出现版本冲突。
四、第一步:检查 Windows 的 Python
首先打开 Windows 命令提示符。
推荐使用:
Win + R输入:
cmd然后回车。
也可以直接在开始菜单搜索:
命令提示符检查 Python
输入:
python --version如果看到类似:
Python 3.12.x说明 Python 已经可以使用。
也可以进一步执行:
where python查看 Python 的实际位置。
例如:
C:\Users\xxx\AppData\Local\Programs\Python\Python312\python.exe五、第二步:安装 uv
新版 PDF2zh 推荐使用 uv 管理 Python 翻译环境。
在 Windows PowerShell 中可以使用项目文档提供的安装命令:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"安装完成以后,重新打开命令行。
执行:
uv --version如果能够正常显示版本号:
uv x.x.x说明 uv 已经安装成功。
六、为什么推荐 uv?
因为 PDF2zh 的翻译环境并不是简单的:
一个 Python 文件而是包含多个依赖组件。
如果全部安装到系统 Python 中,很容易出现:
A项目需要版本1B项目需要版本2C项目需要版本3最后形成依赖冲突。
而使用虚拟环境以后,可以形成:
系统 Python │ ├── 其他项目环境 │ ├── Zotero PDF2zh 环境 │ └── 其他 Python 项目互相隔离。
这也是为什么 PDF2zh 新版推荐使用 uv 或已有的 conda 环境。
七、第三步:下载 PDF2zh Server
接下来下载 PDF2zh 的 Server。
建议直接从项目最新 Release 获取 server.zip,而不是直接下载 GitHub main 分支中的源码压缩包。
项目当前文档提供的下载方式是:
https://github.com/guaguastandup/zotero-pdf2zh/releases/latest/download/server.zip下载后解压。
推荐建立一个比较容易管理的目录,例如:
D:\ZoteroExt\zotero-pdf2zh\解压以后形成:
D:\ZoteroExt\zotero-pdf2zh\└── server\ ├── server.py ├── requirements.txt ├── update_packages.py ├── config\ └── utils\这是当前 Server 的基本目录结构。
八、第四步:安装 Server 运行依赖
进入 Server 目录:
cd /d D:\ZoteroExt\zotero-pdf2zh\server然后执行:
python -m pip install -r requirements.txt这里需要注意:
❝这一阶段主要安装的是 Server 本身运行所需要的依赖。
不要看到没有安装 pdf2zh_next 就手动执行:
pip install pdf2zh_next新版 Server 会管理真正的翻译环境。
九、第五步:启动 PDF2zh Server
进入:
server目录后执行:
python server.py正常情况下,Server 会启动本地服务。
默认地址:
http://127.0.0.1:8890其中:
127.0.0.1代表:
❝当前这台电脑。
而:
8890则是 PDF2zh Server 默认使用的端口。
当前版本默认只监听本机 localhost。
十、为什么必须保持 Server 运行?
这里是很多新用户容易忽略的问题。
Zotero 插件本身并不是完整的 PDF 翻译引擎。
可以简单理解成:
Zotero ↓插件 ↓本地 Server ↓翻译环境 ↓AI API所以:
❝如果 Server 没有启动,Zotero 插件就无法正常提交翻译任务。
因此在使用 PDF2zh 翻译时,需要保持:
python server.py对应的服务持续运行。
官方文档也明确提醒,翻译期间需要保持 server.py 运行。
十一、第六步:安装 Zotero PDF2zh 插件
接下来打开 Zotero。
进入:
工具 → 插件然后将下载的:
zotero-pdf-2-zh.xpi直接拖进插件窗口。
安装完成以后重新启动 Zotero。
当前项目文档提供的最新 XPI 下载地址为:
https://github.com/guaguastandup/zotero-pdf2zh/releases/latest/download/zotero-pdf-2-zh.xpi安装步骤就是:
下载 XPI ↓Zotero → 工具 → 插件 ↓拖入 XPI ↓安装 ↓重启 Zotero十二、第七步:检查 Zotero 与 Server 是否连接成功
重新打开 Zotero。
进入:
工具 ↓PDF2zh 首选项找到:
Python Server IP默认填写:
http://127.0.0.1:8890如果你没有修改 Server 端口,就不需要修改这里。
然后使用插件提供的连接检查功能。
如果连接正常,就说明:
Zotero ↓PDF2zh 插件 ↓本地 Server已经打通。
当前配置文档也明确将 http://127.0.0.1:8890 作为默认 Server 地址。
十三、第八步:配置 AI 翻译模型
完成本地环境以后,下一步就是配置翻译服务。
这一步决定了:
❝PDF2zh 使用哪个 AI 模型进行翻译。
通常需要配置:
API 地址API Key模型名称例如:
API Base URLAPI KeyModel不同服务的配置方式可能不同。
当前 PDF2zh 支持:
DeepSeekOpenAIOpenAI Compatible智谱阿里云等服务。
十四、以 OpenAI-Compatible API 为例
很多第三方 AI 服务会提供:
❝OpenAI API 兼容接口
这种情况下,一般可以配置:
Base URLAPI KeyModel例如逻辑结构:
PDF2zh │ ├── Base URL │ ├── API Key │ └── Model ↓ AI 服务需要注意:
❝“兼容 OpenAI API”并不意味着所有参数都 100% 一致。
部分服务可能只兼容:
/chat/completions而不支持其他接口或参数。
因此,如果出现:
401404400429需要结合服务商 API 文档进行排查。
十五、以 DeepSeek 为例
如果使用 DeepSeek,需要重点确认:
API KeyModelEndpoint是否正确。
PDF2zh 当前版本已经针对 DeepSeek V4 提供了相关支持,包括:
deepseek-v4-prodeepseek-v4-flash并且支持 Thinking 模式配置。项目文档指出,PDF 翻译默认关闭 DeepSeek Thinking。
对于普通论文翻译来说,可以先使用默认配置。
等基础环境稳定以后,再根据实际翻译质量和成本调整高级参数。
十六、API Key 一定不要泄露
这是配置 AI API 时必须强调的问题。
例如:
sk-xxxxxxxxxxxxxxxx这样的内容属于 API 凭证。
不要:
❌ 发到微信群❌ 发到 QQ 群❌ 发到公众号截图❌ 发到 GitHub❌ 直接放进教程图片如果制作教程截图:
sk-xxxxxxxxxxxx建议处理成:
sk-****************当前 PDF2zh 新版本也加强了 API Key / token 日志脱敏,并默认让 Server 只监听 localhost。
十七、第九步:第一次翻译论文
环境配置完成后,就可以进行第一次测试。
建议:
❝第一次不要直接选择一篇 100 页的论文。
最好选择:
5~10页左右的普通英文论文。
原因很简单:
如果第一次翻译失败,我们可以快速判断问题到底出在哪里。
操作流程
在 Zotero 中:
选择论文 ↓找到 PDF ↓右键 ↓PDF2zh ↓选择翻译根据当前插件支持情况,也可以对多个条目进行批量 PDF 翻译。
十八、第一次翻译为什么可能特别慢?
第一次翻译和第二次翻译的情况可能不同。
新版 Server 在首次真正调用翻译环境时,可能需要:
创建环境 ↓下载依赖 ↓安装 pdf2zh_next ↓检查运行环境 ↓启动翻译因此第一次可能明显比较慢。
这并不一定意味着程序卡死。
如果终端正在持续输出:
Downloading...Installing...Checking...通常应该先耐心等待。
十九、翻译完成后会发生什么?
正常情况下,PDF2zh 会生成翻译后的 PDF。
最终可以形成类似:
原论文.pdf以及:
原论文_zh.pdf具体文件命名和保存位置取决于当前版本及翻译配置。
然后可以继续在 Zotero 中阅读。
整个流程就完成了:
英文论文 ↓Zotero ↓PDF2zh ↓AI 翻译 ↓中文/双语 PDF ↓Zotero 阅读二十、双语布局怎么选择?
PDF2zh 新版提供了不同的双语布局能力。
例如:
LR可以理解为左右布局。
也可以使用:
TB进行上下交替布局。
具体效果取决于原 PDF 的结构以及当前翻译引擎处理结果。
二十一、为什么有些论文翻译后排版很好,有些却比较奇怪?
因为 PDF 本身并不是纯文本。
例如一篇论文可能是:
┌──────────┬──────────┐│ │ ││ Text │ Text ││ │ ││ Figure │ Table ││ │ │└──────────┴──────────┘PDF2zh 需要先识别:
文字图片表格公式栏位阅读顺序然后重新进行排版。
所以:
❝PDF 翻译质量 = 文本翻译质量 + PDF 解析质量 + 排版质量。
其中任何一个环节出现问题,都可能影响最终效果。
二十二、扫描版 PDF 为什么经常翻译失败?
普通论文 PDF 通常有文本层。
例如:
PDF ↓直接读取文字但是扫描 PDF 本质上可能是:
PDF ↓图片 ↓OCR ↓文字 ↓翻译因此扫描版论文需要额外考虑 OCR。
如果 PDF 本身:
分辨率低 页面倾斜 字体模糊 表格复杂 双栏结构严重
OCR 和后续排版难度都会增加。
所以:
❝第一次测试 PDF2zh 时,建议使用标准文本型 PDF。
二十三、常见问题一:uv 命令找不到
如果执行:
uv --version出现类似:
'uv' 不是内部或外部命令通常意味着:
uv 没有正确安装或者:
PATH 环境变量没有刷新可以尝试:
关闭当前 CMD; 重新打开 CMD; 再执行:
uv --version如果仍然失败,再检查 uv 的安装路径是否加入 PATH。
二十四、常见问题二:python 找不到
如果:
python --version无法执行。
首先检查:
where python如果没有结果,则说明当前命令行无法找到 Python。
Windows 用户尤其需要注意:
❝不要同时安装大量不同来源的 Python,并让 PATH 变得非常混乱。
建议保留一个清晰的 Python 3.12 环境供 PDF2zh 使用。
二十五、常见问题三:Zotero 显示 Server 无法连接
例如:
Connection refused或者:
Cannot connect to server优先检查:
第一项
Server 是否正在运行?
python server.py第二项
端口是否正确?
默认:
8890第三项
Zotero 插件中的地址是否正确?
默认:
http://127.0.0.1:8890第四项
是否修改过 Server 端口?
例如启动:
python server.py --port 9999那么 Zotero 中就必须改成:
http://127.0.0.1:9999官方配置文档也明确说明,修改 Server 端口后,需要同步修改插件中的 Server URL。
二十六、常见问题四:API 返回 401
如果出现:
401 Unauthorized重点检查:
API Key包括:
是否填写正确; 是否复制了多余空格; Key 是否已经失效; 当前模型服务是否允许该 Key 使用。
二十七、常见问题五:API 返回 404
如果出现:
404 Not Found需要重点检查:
Base URL例如:
https://example.com/v1与:
https://example.com并不一定等价。
不同服务的 API 路径可能不同。
所以不要看到一个服务“兼容 OpenAI API”,就直接复制另一个服务的 Endpoint。
二十八、常见问题六:HTTP 429
如果出现:
HTTP 429通常意味着服务端对请求进行了限制。
可能涉及:
请求过于频繁API额度不足账户余额不足并发限制这类问题通常不属于 Zotero 本身故障。
应该首先检查 AI 服务商后台的:
余额额度Rate LimitQPS等信息。
二十九、常见问题七:翻译过程中报 Python 环境错误
如果终端出现:
ModuleNotFoundError或者:
PackageNotFoundError不要立即执行:
pip install xxx因为新版 PDF2zh 的翻译环境由 Server 进行管理。
更推荐:
python update_packages.py让项目按照当前环境进行依赖更新。
项目文档也明确建议使用 update_packages.py 管理翻译环境,而不是手动强行组合 BabelDOC、PyMuPDF 等版本。
三十、Windows 用户特别容易遇到的路径问题
Windows 路径经常类似:
D:\ProgramData\ZoteroExt\zotero-pdf2zh\server如果使用 CMD:
cd /d D:\ProgramData\ZoteroExt\zotero-pdf2zh\server注意:
/d可以让 CMD 同时切换盘符。
如果从:
C:切换到:
D:这一点尤其重要。
三十一、不要把 Server 放在过于复杂的路径
例如:
D:\ZoteroExt\zotero-pdf2zh\server通常比较清晰。
不太建议:
D:\我的软件\论文工具\2026新版\测试环境\PDF翻译最终版\server复杂路径容易增加:
空格 中文字符 特殊符号 路径过长
带来的兼容性问题。
尤其是在 Python、虚拟环境和第三方工具组合使用时,保持路径简单通常更容易排查问题。
三十二、不要随便把 Server 暴露到公网
默认配置:
127.0.0.1意味着:
❝只允许本机访问。
如果使用:
python server.py --host 0.0.0.0则意味着允许其他网络设备访问这个服务。
项目文档也明确提醒,只有在明确需要远程访问并理解防火墙及网络配置时才建议这么做。
对于普通用户:
❝保持 127.0.0.1 即可。
三十三、如何判断整个环境已经配置成功?
可以按照下面的检查表逐项确认:
□ Python 可以运行□ uv 可以运行□ server.zip 已正确解压□ requirements.txt 安装完成□ python server.py 可以启动□ 8890 端口正常监听□ Zotero PDF2zh 插件安装成功□ Zotero 能连接 127.0.0.1:8890□ AI API Key 配置正确□ 模型名称正确□ 测试论文可以提交□ 翻译任务能够完成□ 双语 PDF 可以正常打开如果以上项目全部通过,那么基本就完成了 Windows 下的 PDF2zh 环境搭建。
三十四、最终的完整架构
现在回过头来看整个系统:
┌───────────────┐ │ Zotero │ │ 文献管理/阅读 │ └───────┬───────┘ │ ▼ ┌───────────────┐ │ PDF2zh 插件 │ └───────┬───────┘ │ ▼ ┌───────────────┐ │ PDF2zh Server │ │ 127.0.0.1:8890│ └───────┬───────┘ │ ▼ ┌───────────────┐ │ Python 翻译环境 │ │ uv / conda │ └───────┬───────┘ │ ▼ ┌───────────────┐ │ AI 翻译 API │ └───────┬───────┘ │ ┌──────────────┼──────────────┐ ▼ ▼ ▼ DeepSeek OpenAI 其他兼容服务 │ │ │ └──────────────┼──────────────┘ ▼ ┌───────────────┐ │ 双语 PDF │ └───────┬───────┘ ▼ ┌───────────────┐ │ Zotero 阅读/标注│ └───────────────┘这套架构的最大特点是:
❝Zotero 负责管理文献,PDF2zh 负责 PDF 翻译,AI 模型负责语言理解。
三者各司其职。
三十五、写在最后
对于科研人员来说,PDF2zh 最值得关注的并不是“能不能把英文翻译成中文”。
真正有价值的是:
❝它可以把 AI 翻译能力融入 Zotero 的论文阅读工作流。
传统方式可能是:
下载论文 ↓打开浏览器 ↓上传 PDF ↓等待翻译 ↓下载译文 ↓重新导入而 Zotero + PDF2zh 可以逐渐形成:
论文 ↓Zotero ↓PDF2zh ↓AI 翻译 ↓双语阅读 ↓标注 ↓笔记 ↓知识库这也是为什么对于长期阅读英文论文的人来说,“翻译”只是整个工作流中的一个环节。
真正高效的科研阅读体系应该是:
文献管理 + AI 翻译 + PDF 阅读 + 标注 + 笔记 + 知识沉淀。
如果你已经在使用 Zotero,那么不妨从一篇 5~10 页的英文论文开始测试。
先把:
Python → uv → PDF2zh Server → Zotero 插件 → AI API → 双语 PDF
这一整条链路跑通,再逐步扩展到批量翻译、AI 文献分析和结构化笔记。
这样建立起来的,才是一套真正属于自己的 AI + Zotero 科研文献阅读工作流。
参考资料
PDF2zh 项目官方 GitHub:
Zotero PDF2zh 官方项目
安装文档:
PDF2zh Windows / 安装指南
配置文档:
PDF2zh 配置说明

❝本公众号发布的内容除特别标明外版权归原作者所有。若涉及版权问题,请联系我们。所有信息及评论区内容仅供参考,请读者自行判断信息真伪,不构成任何投资建议。据此产生的任何损失,本公众号概不负责,亦不负任何法律责任。