OmniGet - 最新版
OmniGet 是一款免费、开源的桌面应用,它不仅是一个强大的资源下载器,更是一个集视频播放、书籍阅读、笔记管理和进度追踪于一体的一站式学习中心。 你只需粘贴链接,OmniGet 即可识别并下载内容。随后,你可以在应用内直接观看课程、阅读书籍、做笔记、制作抽认卡,所有数据均保存在本地,无需依赖任何云端服务。
在阅读外文论文、技术文档或教材时,我们常面临两难选择:要么忍受晦涩原文,要么使用翻译工具却得到排版崩乱、公式丢失的“纯文本”。
RetainPDF 是一个开源的全栈项目,旨在解决各类 PDF(尤其是图片型/扫描版及含复杂行内公式文档)的保留排版翻译问题。它不仅在效果上正面硬刚闭源商业模型,更在翻译后 PDF 体积、处理速度和字体控制上实现了优化。

市面上的开源方案多聚焦于可编辑、低复杂度的 PDF,而 RetainPDF 从一开始就瞄准了“硬骨头”:

| 特性 | PDFMathTranslate | PolyglotPDF | Doc2X (闭源) | RetainPDF |
|---|---|---|---|---|
| 扫描型 PDF 支持 | ❌ | ❌ | ✅ | ✅ |
| 复杂行内公式 | ❌ | ❌ | ✅ | ✅ |
| 代码不误翻 | ❌ | ❌ | ❌ | ✅ |
| 表格控制 | 弱 | 弱 | 中 | ✅ (可开关) |
| 自定义翻译策略 | 弱 | 弱 | 弱 | ✅ (可按规则配置) |
| 排版保留效果 | 一般 | 一般 | 强 | 强 |
| PDF 压缩优化 | 一般 | 一般 | 弱 | ✅ (持续优化) |
| API 自动化 | ✅ | ✅ | ❌ | ✅ |
实测结论:相比 PDFMathTranslate,RetainPDF 补足了扫描件处理的短板,公式与正文衔接更自然;相比 Doc2X 等闭源方案,它提供了自主部署的能力,数据完全掌控在本地,且实测整体效果更优。
如果你只想快速体验,无需关心底层细节,请按以下步骤操作。
RetainPDF 主要依赖 CPU、内存和网络,无需独立显卡。
x86_64/amd64 构建。Mac M 系列或 ARM 服务器需确认兼容环境。确保已安装 Docker 和 Docker Compose:
docker --version
docker compose version
# 克隆项目
git clone https://github.com/wxyhgk/retain-pdf.git
cd retain-pdf
# 启动服务
docker compose up -d
启动完成后,访问 http://127.0.0.1:40001 即可使用 Web 界面。
cd retain-pdf/docker/delivery
docker compose pull
docker compose up -d
RetainPDF 采用前后端分离架构,通过 docker-compose.yml 编排。你可以通过修改环境变量文件来定制服务行为。
docker/auth.local.json:API 鉴权白名单。api_keys:前端和 CLI 请求时必须携带的 X-API-Key。max_running_jobs:后端允许同时运行的最大任务数。docker/web.env:前端运行参数。FRONT_X_API_KEY:前端自动附加的后端密钥,需与 auth.local.json 一致。FRONT_OCR_PROVIDER:默认 OCR 引擎,推荐 paddle,也可选 mineru。FRONT_MODEL / FRONT_BASE_URL:默认大模型名称及服务地址(如 DeepSeek)。docker/app.env:后端运行参数。RUST_API_PORT:完整 API 端口(默认 41000)。RUST_API_SIMPLE_PORT:简便同步接口端口(默认 42000)。RETAIN_PDF_FONT_PATH:默认中文字体路径,影响最终排版效果。若希望团队成员无需每次手动填写 API Key,可在 docker/web.env 中预填以下字段:
FRONT_PADDLE_TOKEN / FRONT_MINERU_TOKENFRONT_MODEL_API_KEYFRONT_MODEL / FRONT_BASE_URL留空则用户在网页右上角“API 配置”中自行填写。