[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81699":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":18,"rankGlobal":9,"rankLanguage":9,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":9,"pushedAt":9,"updatedAt":24,"readmeContent":25,"aiSummary":26,"trendingCount":15,"starSnapshotCount":15,"syncStatus":27,"lastSyncTime":28,"discoverSource":29},81699,"pdf2md","ninehills\u002Fpdf2md","ninehills","PDF to Markdown OCR tools",null,"Go",51,4,48,7,0,1,3,42.9,"MIT License",false,"master",true,[],"2026-06-12 04:01:34","# pdf2md\n\n将 PDF 文档转换为 Markdown 的命令行工具，支持三种视觉语言模型（VLM），通过本地 Docker 推理服务完成端到端转换。\n\n**纯 Go 单二进制**，零系统依赖（Docker + GPU 除外）。\n\n[![Release](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Fninehills\u002Fpdf2md)](https:\u002F\u002Fgithub.com\u002Fninehills\u002Fpdf2md\u002Freleases)\n\n## 支持的模型\n\n| 模型 | 后端 | 说明 |\n|------|------|------|\n| `dots-ocr`（默认） | vLLM | RedNote dots.mocr，布局感知 OCR |\n| `logics-parsing-v2` | vLLM | 阿里巴巴 Logics-Parsing-v2，HTML 结构化解析 |\n| `paddleocr-vl-1.5-gguf` | llama.cpp + ONNX | PaddleOCR-VL-1.5 GGUF，两阶段 pipeline（布局检测 + 块识别） |\n\n## 前置条件\n\n- **Docker** + `nvidia-container-toolkit`（GPU 推理）\n- 无需安装 Python、onnxruntime、CUDA 等\n\n```bash\ndocker --version && nvidia-smi\n```\n\n## 安装\n\n### 预编译二进制（推荐）\n\n从 [Releases](https:\u002F\u002Fgithub.com\u002Fninehills\u002Fpdf2md\u002Freleases) 下载对应平台：\n\n```bash\ncurl -sL https:\u002F\u002Fgithub.com\u002Fninehills\u002Fpdf2md\u002Freleases\u002Fdownload\u002Fv0.1\u002Fpdf2md_0.1_linux_amd64.tar.gz | tar xz\n.\u002Fpdf2md --help\n```\n\n支持 `linux\u002Fmacos\u002Fwindows × amd64\u002Farm64` 共 6 个平台。\n\n### 从源码编译\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fninehills\u002Fpdf2md && cd pdf2md\ngo build -o pdf2md .\n```\n\n## 使用\n\n```bash\n# 默认模型 dots-ocr\n.\u002Fpdf2md paper.pdf\n\n# 指定模型\n.\u002Fpdf2md --model logics-parsing-v2 paper.pdf\n.\u002Fpdf2md --model paddleocr-vl-1.5-gguf paper.pdf\n\n# 指定输出目录\n.\u002Fpdf2md -o .\u002Foutput paper.pdf\n```\n\n### 命令行参数\n\n| 参数 | 默认值 | 说明 |\n|------|--------|------|\n| `--model` | `dots-ocr` | 模型选择 |\n| `--output`, `-o` | 当前目录 | 输出目录 |\n| `--dpi` | `200` | PDF 渲染 DPI |\n| `--port` | `8000` | 推理端口 |\n| `--concurrency`, `-c` | `16` | 最大并发 |\n| `--timeout` | `30m` | 服务启动超时 |\n| `--vllm-image` | `vllm\u002Fvllm-openai:latest` | vLLM 镜像 |\n| `--llamacpp-image` | `ghcr.io\u002Fggml-org\u002Fllama.cpp:full-cuda13` | llama.cpp 镜像 |\n| `--onnx-image` | `ghcr.io\u002Fninehills\u002Fpdf2md-onnx:latest` | ONNX 布局检测镜像 |\n| `--onnx-port` | `5001` | ONNX 服务端口 |\n| `--model-dir` | `.\u002Fweights\u002F\u003Cmodel>\u002F` | 本地模型目录 |\n\n### PaddleOCR-VL（两阶段）\n\n`paddleocr-vl-1.5-gguf` 使用独立的 ONNX 布局检测 Docker 容器，**无需本机安装 onnxruntime**：\n\n```\nPDF → 渲染页面\n  → [ONNX 容器] PP-DocLayoutV3 布局检测 → bboxes + labels\n  → 按 bbox 裁子图\n  → [llama.cpp 容器] PaddleOCR-VL VLM 按块识别\n  → 合并 → Markdown + JSON\n```\n\n```bash\n.\u002Fpdf2md --model paddleocr-vl-1.5-gguf paper.pdf\n```\n\n## 项目结构\n\n```\npdf2md\u002F\n├── cmd\u002Froot\u002F          # CLI 入口 + pipeline 编排\n├── pkg\u002F\n│   ├── base64util\u002F    # Base64 编解码\n│   ├── docker\u002F        # Docker 容器管理\n│   ├── htmlmd\u002F        # HTML → Markdown 转换\n│   ├── inference\u002F     # VLM HTTP 推理客户端\n│   ├── layout\u002F        # Label→Prompt 映射表\n│   ├── layoutclient\u002F  # ONNX Docker HTTP 客户端\n│   ├── markdown\u002F      # Markdown 合成\u002F合并\n│   ├── model\u002F         # HF 模型下载\n│   ├── models\u002F        # 模型注册表\n│   ├── paddlelayout\u002F  # PaddleOCR layout 解析\u002F裁图\n│   └── pdf\u002F           # PDF 页面渲染\n├── docker\u002Fonnx\u002F       # ONNX 容器镜像定义\n├── docs\u002F              # 设计文档\n├── examples\u002F          # 测试用 PDF\n└── .github\u002Fworkflows\u002F # CI\u002FCD\n```\n\n## 开发\n\n```bash\ngo test .\u002F... -count=1    # 78 tests, 13 packages\ngo vet .\u002F...              # 静态检查\n```\n\n## 致谢\n\n- [go-fitz](https:\u002F\u002Fgithub.com\u002Fgen2brain\u002Fgo-fitz) — Go MuPDF 绑定\n- [onnxruntime](https:\u002F\u002Fonnxruntime.ai) — ONNX 运行时\n- [vLLM](https:\u002F\u002Fgithub.com\u002Fvllm-project\u002Fvllm) — VLM 推理引擎\n- [llama.cpp](https:\u002F\u002Fgithub.com\u002Fggml-org\u002Fllama.cpp) — llama.cpp 推理引擎\n","ninehills\u002Fpdf2md 是一个将 PDF 文档转换为 Markdown 的命令行工具，支持三种视觉语言模型（VLM），通过本地 Docker 推理服务实现端到端的转换。项目采用纯 Go 语言编写，生成单一二进制文件，除了 Docker 和 GPU 外无其他系统依赖，易于部署和使用。它支持多种 OCR 模型，包括布局感知的 dots-ocr、阿里巴巴的 Logics-Parsing-v2 以及 PaddleOCR-VL-1.5 GGUF，并允许用户根据需求选择不同的模型进行转换。适用于需要将学术论文、技术文档等 PDF 格式的文件转换为更易于编辑和分享的 Markdown 格式的场景。",2,"2026-06-11 04:06:01","CREATED_QUERY"]