Install
openclaw skills install @vincent-chao-lang/tax-invoice-skillopenclaw skills install @vincent-chao-lang/tax-invoice-skill核心原则:本地 OCR 为主,本地 VLM 辅助。
| 环节 | 负责方 | 说明 |
|---|---|---|
| 取字(字符级) | 本地 OCR(PaddleOCR) | 逐字识别发票号码、税号、价税合计等长数字串,确定性强、不幻觉 |
| 字段定位/归类 | OCR规则优先;本地 VLM 辅助兜底 | 标准票用关键词+正则直接定位;版式异常/缺字段时调本地多模态模型从图定位字段 |
| 校验 | 脚本(validate) | 价税合计≈不含税+税额、发票号码正则、必填项、分类 |
| 出表 | 脚本(ledger_builder) | openpyxl 生成「月度财税台账.xlsx」+「异常票据清单」 |
⚠️ VLM 仅作为辅助:只负责"这段OCR文字归到哪个字段",不负责从零读数字;数字以 OCR 结果为基准。 ⚠️ 所有模型必须本地运行(Ollama 加载多模态模型),严禁把发票图片/金额发往任何云端接口。
python scripts/run_pipeline.py "<文件夹路径>" 在本地执行整套流程:
a. 遍历目录内 PDF / JPG / JPEG / PNG(上限 file_limit 个,超出提示分批)。
b. 本地 OCR 逐张取字(PDF 先渲染首页为图像)。
c. 字段抽取:先用关键词+正则从 OCR 文本定位字段;若关键数字字段缺失或置信度低,调本地 VLM 辅助定位(仍以南向 OCR 数字为准)。
d. 校验:勾稽关系 + 格式校验 + 分类,生成「风险备注」,不可读/对不上的标记为「异常」。
e. 按月分组统计总收入、总税额、各类票据数量。
f. 在票据目录生成「月度财税台账.xlsx」(固定表头)+ 独立「异常票据清单」页。运行脚本前确认依赖已装:pip install -r scripts/requirements.txt,且 Ollama 已加载本地多模态模型(默认 qwen2.5vl:7b,可用环境变量 VLM_MODEL / OLLAMA_API 覆盖)。
开票日期 | 发票类型 | 销售方 | 不含税金额 | 税额 | 价税合计 | 发票号码 | 票据状态 | 所属月份 | 风险备注