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,含可編輯文字