Doc-OCR 文档识别 + 结构化
PDF / 扫描件 / 图片 → 可编辑文字 → 结构化数据。有文字层的 PDF 直接提取,扫描件自动 OCR(macOS Vision 自带,中英文),版面还原(多栏/复杂排版按阅读顺序重排,不是裸行输出),OCR 后可用 LLM 抽取发票/合同字段、转表格。
📁 安装:
hermes skills install jiawood2006/hermes-skills/skills/doc-ocr或按 README 方式二复制 → 默认在~/.hermes/skills/utilities/doc-ocr/。以下命令基于该路径。
触发条件
用户提供 PDF/图片文件,要求:
- "提取文字""转文字""OCR"
- 处理扫描件、合同、发票、书页、截图
- "提取发票信息""合同要点""转成表格"(结构化)
使用步骤
1. 单个文件 → 文字
python3 ~/.hermes/skills/utilities/doc-ocr/scripts/dococr.py 合同.pdf
python3 ~/.hermes/skills/utilities/doc-ocr/scripts/dococr.py 发票.jpg
输出保存为 <输入名>_ocr.txt。
2. 批量目录(逐文件容错,坏文件不中断)
python3 ~/.hermes/skills/utilities/doc-ocr/scripts/dococr.py ./扫描件/ -o 全部.txt
# 批量完成输出汇总:成功 N/M + 失败清单(坏文件单独记录不中断整批)
3. Markdown 输出 / 多栏 PDF 强制版面还原
python3 ~/.hermes/skills/utilities/doc-ocr/scripts/dococr.py 书.pdf --md
# 多栏 PDF 文字层乱序时,强制走 Vision OCR 版面还原:
python3 ~/.hermes/skills/utilities/doc-ocr/scripts/dococr.py 双栏论文.pdf --md --force-ocr
4. 结构化抽取(发票/合同/表格,需 LLM key)
# 先 OCR,再抽取字段
python3 ~/.hermes/skills/utilities/doc-ocr/scripts/dococr.py 发票.jpg
python3 ~/.hermes/skills/utilities/doc-ocr/scripts/docstruct.py 发票_ocr.txt --type invoice
# 合同字段(甲方/乙方/金额/工期/违约条款)
python3 ~/.hermes/skills/utilities/doc-ocr/scripts/docstruct.py 合同_ocr.txt --type contract
# 表格 → CSV
python3 ~/.hermes/skills/utilities/doc-ocr/scripts/docstruct.py 表格_ocr.txt --type table -o 表格.csv
--type invoice:发票号码/日期/金额/税额/价税合计/购买方/销售方/税号--type contract:合同名称/甲乙双方/签订日期/金额/付款方式/工期/违约条款--type table:自动识别行列结构 → CSV- 输出友好显示 + 可保存 JSON/CSV(
-o)
依赖(首次使用时安装)
pip3 install pymupdf pyobjc-framework-Vision
# 结构化抽取需 LLM key(环境变量 LLM_API_KEY 或 ~/.deai_writer.conf)
注意:OCR 依赖 macOS Vision(仅 macOS 可用)。Linux 需另装 tesseract 等引擎。
已知陷阱
- 扫描件判定:PDF 文字层 <20 字自动走 OCR,正常 PDF 直接提取。
- 版面还原:Vision OCR 按文字框坐标重排(从上到下、同行从左到右);双栏印刷体会被当成"先左栏再右栏"处理,适合论文/报告,杂志花式排版可能仍乱序——用
--force-ocr+ 目测。 - 手写体:Vision 对印刷体/清晰手写效果好,潦草手写不保证。
- 隐私卖点:文件在本机处理,不上传第三方(结构化抽取会调 LLM API,注意敏感文件)。
- 字段缺失:docstruct 对缺失字段填 null 不编造,OCR 质量差时字段会少。
- 批量容错:目录模式单文件失败会记录进汇总,不会中断整批。
快速验证 / Smoke Test
# 安装验证(无文档在手也能跑)
python3 ~/.hermes/skills/utilities/doc-ocr/scripts/dococr.py --help
# 有任意 PDF/图片时的真实验证
python3 ~/.hermes/skills/utilities/doc-ocr/scripts/dococr.py 任意文档.pdf --md
# 期望:输出 *_ocr.md,含可编辑文字