# /pf-ocr ## Purpose 处理正式笔记 frontmatter 中 `do_ocr: true` 的 PDF OCR 队列。 `paperforge ocr` 会自动读取 `paperforge.json` 定位 ocr 目录和 worker 脚本,运行 OCR 并自动诊断结果。 ## CLI Equivalent ```bash paperforge ocr ``` 如需使用 Python 直接调用(备选方式): ```bash python -m paperforge ocr --vault . ``` ## Prerequisites - [ ] formal note frontmatter 中 `do_ocr: true` 已设置 - [ ] PDF 附件存在(`has_pdf: true`) - [ ] PaddleOCR API Key 已配置(`.env` 中 `PADDLEOCR_API_TOKEN`) - [ ] 网络连接正常(可访问 PaddleOCR 服务) - [ ] `paperforge.json` 配置正确(路径解析无误) ## Arguments | 参数 | 必需 | 说明 | |------|------|------| | `--diagnose` | 否 | 仅诊断配置,不上传 PDF | | `--key ` | 否 | 仅处理指定 Zotero key 的文献 | | `--vault ` | 否 | 指定 Vault 根目录(默认当前目录) | | `--live` | 否 | 与 `--diagnose` 联用,执行实时 PDF 测试 | ### 诊断模式 验证 OCR 配置 before queueing jobs: ```bash paperforge ocr --diagnose ``` 执行完整诊断(含实时 PDF 测试): ```bash paperforge ocr --diagnose --live ``` ### 诊断等级 | 等级 | 检查项 | 失败含义 | |------|--------|---------| | L1 | API token 存在性 | `PADDLEOCR_API_TOKEN` 缺失或为空 | | L2 | URL 可达性 | 无法连接 PaddleOCR 服务 | | L3 | API 格式验证 | 服务可达但响应格式异常 | | L4 | 实时 PDF 往返 | 完整提交和结果获取失败 | > Exit code `0` = 所有检查通过。Exit code `1` = 至少一项检查失败。 ## Example ```bash # 处理所有标记 do_ocr: true 的文献 paperforge ocr # 仅处理指定文献 paperforge ocr --key ABCDEFG # 诊断模式(不实际运行) paperforge ocr --diagnose # 完整诊断(含实时测试) paperforge ocr --diagnose --live # 指定 Vault 目录 paperforge ocr --vault /path/to/vault ``` ## Output OCR 完成后,每个文献生成以下文件: ``` /PaperForge/ocr// ├── fulltext.md # 提取的全文(含 `` 分页标记) ├── images/ # 自动切割的图表图片 ├── meta.json # OCR 元数据(含 ocr_status) └── figure-map.json # 图表索引(自动生成) ``` `meta.json` 中的 `ocr_status` 字段: - `pending` — 等待处理 - `processing` — 正在处理 - `done` — 完成 - `failed` — 失败 ## Error Handling ### API Token 缺失(L1 失败) - **表现**:`PADDLEOCR_API_TOKEN` 未设置或为空 - **解决**:在 `.env` 文件中添加 `PADDLEOCR_API_TOKEN=your_token_here` ### 服务不可达(L2 失败) - **表现**:无法连接 PaddleOCR 服务 - **解决**:检查网络连接,确认服务 URL 配置正确 ### PDF 上传失败(L4 失败) - **表现**:PDF 提交后未返回结果 - **解决**:检查 PDF 文件是否损坏,确认文件大小未超过限制 ### OCR 状态卡住 - **表现**:`ocr_status` 长期显示 `processing` - **解决**:检查 `/PaperForge/ocr//meta.json` 中的错误信息,重新设置 `do_ocr: true` 后再次运行 ## Platform Notes ### OpenCode > `/pf-ocr` 是 **CLI 命令**,Agent 层不直接提供 `/pf-ocr` 聊天命令。 > > 用户需要: > 1. 在 Obsidian 中将正式笔记的 `do_ocr` 设为 `true` > 2. 在终端运行 `paperforge ocr` > 3. 或在 Agent 对话中要求 Agent 执行上述步骤 ### Codex > **Future**:计划支持。预计通过 API 调用实现类似功能。 ### Claude Code > **Future**:计划支持。预计通过工具调用实现类似功能。 ## See Also - [pf-sync](pf-sync.md) — 文献同步(生成正式笔记) - [pf-deep](pf-deep.md) — 深度精读(依赖 OCR 结果) - [AGENTS.md](../AGENTS.md) — 完整使用指南、架构说明、常见问题 - [docs/COMMANDS.md](../docs/COMMANDS.md) — 命令总览与矩阵