[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-74226":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":35,"readmeContent":36,"aiSummary":37,"trendingCount":16,"starSnapshotCount":16,"syncStatus":38,"lastSyncTime":39,"discoverSource":40},74226,"retain-pdf","wxyhgk\u002Fretain-pdf","wxyhgk","在保留版面、公式与结构的前提下进行 PDF 翻译，适用于科研与技术文档","",null,"Python",1898,222,9,4,0,26,70,324,78,20.04,"MIT License",false,"main",true,[27,28,29,30,31,32,33,34],"document-ai","document-processing","layout-preserving","ocr","pdf","scientific-papers","translation","typst","2026-06-12 02:03:24","# RetainPDF：PDF 保留排版翻译工具\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"resources\u002Fbrand\u002FRetainPDF-github.svg\" alt=\"RetainPDF\" width=\"320\" \u002F>\n\u003C\u002Fp>\n\n\n开源社区做保留排版的项目不少，但是都围绕可复制，可编辑的 PDF，以及行内公式不复杂的场景.\n\nRetainPDF 从一开始就是要解决各类 PDF 的保留排版翻译问题，尤其是图片型\u002F扫描版 PDF，以及行内公式的渲染问题.\n\n在保留排版翻译这个领域，正面硬刚闭源模型,并且在一些场景下做得更好，比如翻译后的 PDF 体积、整体速度和字体大小控制。\n\n此外本项目是前后端分离、OCR、翻译、排版与交付打通的全栈项目，整体结构尽量解耦，既能直接使用，也方便后续开发者继续扩展、替换模块和二次开发。\n\n\n简单对比：\n\n| 项目 | 扫描型 PDF | 复杂行内公式 | 代码不误翻 | 表格控制 | 自定义翻译策略 | 排版保留 | PDF 压缩优化 | API 自动化 |\n| --- | --- | --- | --- | --- | --- | --- | --- | --- |\n| PDFMathTranslate | ❌ | ❌ | ❌ | 弱 | 弱 | 一般 | 一般 | ✅ |\n| PolyglotPDF | ❌ | ❌ | ❌ | 弱 | 弱 | 一般 | 一般 | ✅ |\n| Doc2X | ✅ | ✅ | ❌ | 中 | 弱 | 强 | 弱 | ❌ 不开放 |\n| RetainPDF | ✅ | ✅ | ✅ | ✅ 可开关 | ✅ 可按规则配置 | 强 | ✅ 持续优化 | ✅ |\n\n## 效果图\n\n### SCI 论文\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"resources\u002Fbrand\u002Freadme-gallery\u002Fimage%201.png\" alt=\"SCI 示例 1\" width=\"860\" \u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"resources\u002Fbrand\u002Freadme-gallery\u002Fimage%202.png\" alt=\"SCI 示例 2\" width=\"860\" \u002F>\n\u003C\u002Fp>\n\n### 图片型 \u002F 扫描版 PDF\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"resources\u002Fbrand\u002Freadme-gallery\u002Fimage%203.png\" alt=\"扫描版示例 1\" width=\"860\" \u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"resources\u002Fbrand\u002Freadme-gallery\u002Fimage%207.png\" alt=\"扫描版示例 2\" width=\"860\" \u002F>\n\u003C\u002Fp>\n\n### 图书类\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"resources\u002Fbrand\u002Freadme-gallery\u002Fimage%204.png\" alt=\"图书示例 1\" width=\"860\" \u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"resources\u002Fbrand\u002Freadme-gallery\u002Fimage%205.png\" alt=\"图书示例 2\" width=\"860\" \u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"resources\u002Fbrand\u002Freadme-gallery\u002Fimage%206.png\" alt=\"图书示例 3\" width=\"860\" \u002F>\n\u003C\u002Fp>\n\n## 快速开始\n\n如果你只是想直接使用，先去 [GitHub Releases](https:\u002F\u002Fgithub.com\u002Fwxyhgk\u002Fretain-pdf\u002Freleases) 下载对应平台的发布包：\n\n- Windows：优先下载 `Setup.exe`\n- macOS：下载 `.dmg`\n- Linux：下载 `.deb`\n\n如果你想给局域网、团队或多台设备一起用，优先选 Docker 部署。\n\n### Windows 桌面端\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"resources\u002Fbrand\u002FRetainPDF-desktop.png\" alt=\"RetainPDF Windows 桌面端\" width=\"860\" \u002F>\n\u003C\u002Fp>\n\n### macOS 提示\n\n由于当前没有 Apple 开发者账号，macOS 版本第一次打开时可能会提示应用“已损坏”。这不是文件真的损坏，而是系统的签名校验导致的。把应用拖到 `\u002FApplications` 后，执行：\n\n```bash\nsudo xattr -r -d com.apple.quarantine \u002FApplications\u002FRetainPDF.app\n```\n\n然后再重新打开应用即可。\n\n### Docker 部署\n\n当前仓库提供了 Docker 交付目录：\n\n- [docker\u002Fdelivery\u002FREADME.md](docker\u002Fdelivery\u002FREADME.md)\n- [docker\u002Fdelivery\u002Fdocker-compose.yml](docker\u002Fdelivery\u002Fdocker-compose.yml)\n\n基本步骤：\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fwxyhgk\u002Fretain-pdf.git\ncd retain-pdf\u002Fdocker\u002Fdelivery\ndocker compose up -d\n```\n\n启动后默认访问：\n\n```text\nhttp:\u002F\u002F127.0.0.1:40001\n```\n\n默认端口：\n\n- `40001`：前端页面\n- `41000`：Rust API\n- `42000`：multipart 异步提交接口\n\n### Docker 更新\n\n如果只是更新到最新镜像版本：\n\n```bash\ncd retain-pdf\u002Fdocker\u002Fdelivery\ndocker compose pull\ndocker compose up -d\n```\n\n如果你要切换到指定镜像版本，也可以这样：\n\n```bash\ncd retain-pdf\u002Fdocker\u002Fdelivery\nAPP_IMAGE=wxyhgk\u002Fretainpdf-app:latest \\\nWEB_IMAGE=wxyhgk\u002Fretainpdf-web:latest \\\ndocker compose up -d\n```\n\n更新后建议执行一次状态检查：\n\n```bash\ndocker compose ps\n```\n\n当前镜像地址：\n\n- [wxyhgk\u002Fretainpdf-app](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fwxyhgk\u002Fretainpdf-app)\n- [wxyhgk\u002Fretainpdf-web](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fwxyhgk\u002Fretainpdf-web)\n\n## 交流群\n\n如果你在使用、部署或二次开发 RetainPDF 时遇到问题，欢迎加入 QQ 交流群一起讨论。\n\n- QQ 群号：`1101779791`\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"resources\u002Fbrand\u002FQQ_Group.JPG\" alt=\"RetainPDF QQ 交流群二维码\" width=\"280\" \u002F>\n\u003C\u002Fp>\n\n## 开发者\n\n\n### 文档入口\n\n建议按下面顺序阅读。\n\n- [文档目录](doc\u002FREADME.md)\n- [主线文档](doc\u002Fcore\u002FREADME.md)\n- [参考资料](doc\u002Freference\u002FREADME.md)\n- [运维与过程记录](doc\u002Fops\u002FREADME.md)\n- [Pipeline 阶段契约](backend\u002Fscripts\u002Fruntime\u002Fpipeline\u002FREADME.md)\n\n### 代码与子模块说明\n\n- [后端脚本说明](backend\u002Fscripts\u002FREADME.md)\n- `frontend\u002F`：当前浏览器前端静态资源与桌面端打包输入目录\n\n### 当前目录结构\n\n- `frontend\u002F`\n  浏览器前端、桌面壳、预览实验页面。\n- `backend\u002F`\n  Rust API、Python 脚本、嵌入式 Python、历史工作区。\n- `docker\u002F`\n  Dockerfile、发布脚本、交付用 compose 配置。\n- `data\u002F`\n  本地运行输出、任务目录、历史样本数据。\n- `resources\u002F`\n  仓库级品牌图、README 展示图、动画、示例文件和后续本地 runtime 归档入口。\n\n### 当前工程判断\n\nRetainPDF 目前已经可以完成从 PDF 上传、OCR、翻译、排版重建到产物下载的完整链路。\n\n接下来我的重点不是盲目堆功能，而是继续把下面几件事做稳：\n\n- 工程一致性\n- API 与产物契约稳定性\n- 构建可复现性\n- 长文块与公式场景下的翻译稳定性\n\n如果你想了解我接下来准备怎么推进，可以看：\n\n- [工程评价与后续执行计划](doc\u002Fops\u002Fplanning\u002F工程评价与后续执行计划.md)\n\n### 欢迎一起参与\n\n如果你也对下面这些方向感兴趣，欢迎一起把这个项目继续往前做：\n\n- 高精度 OCR \u002F 疑难版面解析\n- 长文块与公式场景下的翻译稳定性\n- 排版回填、字体自适应与 PDF 渲染\n- 桌面端、Docker 交付与工程化完善\n\n不管你更擅长算法、前端、后端还是部署，只要你也想把“真正能用的 PDF 保留排版翻译”这件事做深，欢迎进来一起搞。\n\n## License\n\nThis project is distributed under the MIT License. See [LICENSE](LICENSE) for the full text.\n","RetainPDF 是一个用于在保留版面、公式与结构的前提下进行 PDF 翻译的工具，特别适用于科研和技术文档。该项目采用 Python 语言开发，支持图片型\u002F扫描版 PDF 以及复杂行内公式的翻译和渲染，同时具备代码不误翻、表格控制和自定义翻译策略等功能。其核心优势在于能够保持原文档的排版布局，并对翻译后的 PDF 进行压缩优化，提高整体处理速度。此外，RetainPDF 采用了前后端分离的设计，便于扩展和二次开发。该工具非常适合需要高质量翻译且保留原始格式的学术论文、技术手册及图书等场景使用。",2,"2026-06-11 03:49:34","high_star"]