# DeepSeek-OCR 主链路与非交互 session 取 key 规则(2026-07-13) ## 适用场景 - 批量扫描件合同梳理 - 需要把 PDF / 图片先转成 Markdown 再审查/比对/回填汇总表 - 当前环境已把 `SILICONFLOW_API_KEY` 写在 `~/.bashrc`,但 agent 所在 session 不是交互式 shell ## 本次会话固化结论 1. **默认 OCR 主链路改为 DeepSeek-OCR**,脚本:`~/.hermes/scripts/deepseek_ocr.py` 2. **不要默认回到 marker-pdf / surya 本地链路**;本地 OCR 只作显式要求下的备选/对照,不是默认方案。 3. 批量扫描件建议流程: - 先批量跑 `deepseek_ocr.py` 生成 md - 再做 grep / 规则扫描,筛出乱码、过短、金额大小写冲突、主体名称异常、日期异常 - 最后只对异常页做 vision 定点校对 4. `deepseek_ocr.py` 已修成: - 先读当前进程环境变量 `SILICONFLOW_API_KEY` - 若当前 session 没带 key,则回退到 `bash -ic` 从 `~/.bashrc` 读取 - 读取成功后回填到当前进程环境 - 两边都没有才报错:`Missing SILICONFLOW_API_KEY in environment or ~/.bashrc` ## 为什么要这样做 非交互 shell 默认不加载 `~/.bashrc`。如果只在脚本里 `os.environ.get("SILICONFLOW_API_KEY")`,则新 session/批量 terminal 调用会误报“缺 key”,但实际上 `.bashrc` 里已经有 key。 ## 执行口径 - 单文件: ```bash python3 ~/.hermes/scripts/deepseek_ocr.py /path/to/file.pdf -o /path/to/file.md ``` - 批量:按合同目录遍历 `.pdf`,逐个输出同名 `.md` - 批量产物出来后,优先筛这几类异常: - 结果过短(只剩标题/前几行) - 金额小写与大写不一致 - 主体名称错字/缺字 - 日期区间逻辑不通 - 银行账户等长数字串 ## 已验证案例 - 北翼玖玖 17 份 PDF:已全量跑完 DeepSeek-OCR 输出 md - 发现的典型异常: - 某些物业合同只识别出标题,正文漏识别 - 押金小写金额与大写金额明显冲突 - 主体名称 OCR 错字(如“崇区川”) ## 给后续 agent 的一句话 **扫描件合同默认先跑 DeepSeek-OCR,再筛异常,再 vision 定点校对;不要一上来就切回本地 OCR。**