一个免费的PDF文献阅读器,支持将各语言的PDF文献转成中文,并支持接入大模型基于文献内容进行问答。
请根据操作系统和预览方式选择下方版本。
| 安装包 | 预览方式 | 适用情况 |
|---|---|---|
| Windows 标准版(release) Windows 标准版(夸克网盘) |
PDF.js,默认版本 | 通常选择此版本,保留 PDF.js 的阅读工具 |
| Windows 原生预览特别版(release) Windows 原生预览特别版(夸克网盘) |
内置 Qt PDF,不包含 WebEngine | 遇到 Qt6WebEngineCore.dll 缺失、浏览器渲染失败或空白预览时,可直接安装此版本 |
| macOS ARM64 标准版(release) macOS ARM64 标准版(夸克网盘) |
PDF.js | Apple Silicon Mac;使用 Developer ID 签名并通过 Apple 公证 |
两个 Windows 安装包均提供翻译、问答、导出和日志功能。原生版会安装为 FreePDF Native,可与标准版共存;它的阅读工具以翻页、缩放和适宽为主。标准版预览异常时也会尝试自动切换至原生阅读器。原生版源码位于 codex/windows-native-v6.0.2 分支;主分支默认 PDF.js。“关于软件”显示当前安装包类型。GitHub Release 提供这三个安装包及 SHA256 校验文件。
点击左下角状态文字、翻译进度条或百分比,可打开小型进度详情窗口,查看当前步骤、当前页、已保存页数、段落处理情况和等待时间。进度只按实际保存的页面增长。 详情窗口采用更紧凑的宽度,长文件名和错误信息会自动换行。翻译失败时,点击详情中的“引擎配置”,切换引擎并使用“测试连接”确认可用后重试。
翻译每完成一页,就保存并更新右侧预览。翻译服务长时间没有返回结果、出错或点击“停止并保留”后,已经完成的页面仍可阅读和导出。文件名-partial-mono.pdf 保持原文页数和顺序,未完成的页面暂时保留原文;旁边的 文件名-partial.freepdf.json 保存断点信息。点击进度窗口的“继续翻译”,或重新导入同一 PDF,即可在原文件和翻译配置未改变时继续。不要删除断点文件,直到翻译完成。
完成后生成 文件名-mono.pdf,并清理对应的部分译文和断点;启用左右对照保存时还会生成 文件名-dual.pdf。工具栏“导出 PDF”也可导出左右对照或仅译文版本。“关于软件”底部的“导出日志”可保存脱敏 ZIP,供开发者分析。
配置环境:
uv sync启动应用:
python main.py配置文件(pdf2zh_config.json)示例:
{
"models": {
"doclayout_path": "./models/doclayout_yolo_docstructbench_imgsz1024.onnx"
},
"fonts": {
"zh": "./fonts/SourceHanSerifCN-Regular.ttf",
"ja": "./fonts/SourceHanSerifJP-Regular.ttf",
"ko": "./fonts/SourceHanSerifKR-Regular.ttf",
"zh-TW": "./fonts/SourceHanSerifTW-Regular.ttf",
"default": "./fonts/GoNotoKurrent-Regular.ttf"
},
"translation": {
"service": "bing", // 翻译引擎,可选:bing、google、silicon、ollama、自定义
"lang_in": "en", // 源语言,可选:en、zh、ja、ko、zh-TW
"lang_out": "zh", // 目标语言,同上
"envs": {
// bing/google无需配置
// silicon示例:
// "SILICON_API_KEY": "你的API Key",
// "SILICON_MODEL": "Qwen/Qwen2.5-7B-Instruct"
// ollama示例:
// "OLLAMA_HOST": "http://127.0.0.1:11434",
// "OLLAMA_MODEL": "deepseek-r1:1.5b"
// 自定义示例:
// "CUSTOM_HOST": "https://api.xxx.com",
// "CUSTOM_KEY": "你的Key",
// "CUSTOM_MODEL": "模型名"
}
},
"qa_engine": {
"service": "关闭", // 问答引擎,可选:关闭、silicon、ollama、自定义
"envs": {
// 配置方式同上
}
},
"qa_settings": {
"pages": "", // 限定问答分析的PDF页面范围,格式如"1-5,8,10-15",留空为全部页面
"system_prompt": "你是一个专业的PDF文档分析助手。用户上传了一个PDF文档,你需要基于文档内容回答用户的问题。\n\nPDF文档内容如下:\n{pdf_content}\n\n请注意:\n1. 请仅基于上述PDF文档内容回答问题\n2. 如果问题与文档内容无关,请明确说明\n3. 回答要准确、详细,并引用相关页面信息\n4. 使用中文回答\n"
},
"translation_enabled": true, // 是否启用翻译
"NOTO_FONT_PATH": "./fonts/SourceHanSerifCN-Regular.ttf", // 全局字体路径(
"pages": "" // 全局页面范围
}models.doclayout_path:DocLayout-YOLO ONNX模型路径。fonts:各语言PDF渲染字体路径。translation.service:翻译引擎,支持bing、google、silicon、ollama、自定义。translation.lang_in/lang_out:源/目标语言,支持en(英文)、zh(中文)、ja(日语)、ko(韩语)、zh-TW(繁体中文)。translation.envs:不同翻译引擎的API参数,配置方式与下方qa_engine.envs完全一致,详见下方典型配置示例。qa_engine.service:问答引擎,支持关闭、silicon、ollama、自定义。qa_engine.envs:不同问答引擎的API参数,配置方式与上方translation.envs完全一致,详见下方典型配置示例。qa_settings.pages:问答时分析的PDF页面范围,格式如"1-5,8,10-15"。qa_settings.system_prompt:问答系统提示词,{pdf_content}占位符表示具体的文档内容。translation_enabled:是否启用翻译(true/false)。NOTO_FONT_PATH:全局字体路径。pages:全局页面范围。
- 硅基流动翻译/问答:
"service": "silicon", "envs": { "SILICON_API_KEY": "你的API Key", "SILICON_MODEL": "Qwen/Qwen2.5-7B-Instruct" }
- Ollama本地大模型:
"service": "ollama", "envs": { "OLLAMA_HOST": "http://127.0.0.1:11434", "OLLAMA_MODEL": "deepseek-r1:1.5b" }
- 自定义OpenAI兼容API:
"service": "自定义", "envs": { "CUSTOM_HOST": "https://api.xxx.com", "CUSTOM_KEY": "你的Key", "CUSTOM_MODEL": "模型名" }
无论是翻译还是问答,envs字段的填写方式完全一致,仅需根据所选引擎填写对应参数。 配置文件建议用记事本/VSCode等编辑,注意JSON格式不能有注释,所有注释仅供参考。
可选翻译引擎:
-
必应翻译(默认)
选择翻译引擎为bing,无需额外参数
-
谷歌翻译
选择翻译引擎为google,无需额外参数
-
硅基翻译
选择翻译引擎为silicon,需额外配置硅基流动API Key和具体聊天模型。
-
Ollama翻译
选择翻译引擎为ollama,先通过ollama部署本地chat模型,并配置ollama地址和具体聊天模型。
-
自定义翻译
其它符合
OpenAi API的自定义模型引擎,如火山引擎。
支持五种语言互相翻译:中文、英文、日文、韩文、繁体中文。
问答引擎支持硅基流动(在线)、ollama(本地)和其它符合OpenAi API的自定义方式。
-
支持图片型PDF吗,比如扫描件?
回答: 不支持,本质上是借助pdf2zh检测文本块内容,再进行翻译替换,图片型无法直接替换,会导致内容重合叠加。 -
使用大模型翻译时,有些内容没有翻译?
回答: 低参数量的大模型本身的指令遵循能力很差,让它翻译,它可能不会完全听话,就会造成此现象。因此,本地用大模型翻译,必须保证大模型本身具备一定参数规模,建议7B以上。 -
表格中的内容没有翻译?
回答: pdf2zh暂不支持表格内容翻译,如需翻译表格,可查看本仓库的dev分支,采用pdf2zh_next进行翻译,但由于速度较慢,未合并进主分支。 -
win版报错:无法打开要写入的文件
C:\Program Files\FreePDF\internal\ucrtbase.dll回答: 关闭杀毒软件,右键用管理员身份运行软件。
如有其它问题,欢迎提交 issue 或 直接联系我的微信 zstar1003 反馈问题。
- Fork本GitHub仓库
- 将fork克隆到本地:
git clone git@github.com:<你的用户名>/FreePDF.git - 创建本地分支:
git checkout -b my-branch - 提交信息需包含充分说明:
git commit -m '提交信息需包含充分说明' - 推送更改到GitHub(含必要提交信息):
git push origin my-branch - 提交PR等待审核
本项目基于以下开源项目开发:

