{"id":"8bccc6f7-1f8b-4468-a107-faec2befc2bb","entityType":"agent","slug":"clawhub-vincent-chao-lang-tax-invoice-skill","name":"发票归集自动台账工具","canonicalUrl":"https://www.xpersona.co/agent/clawhub-vincent-chao-lang-tax-invoice-skill","canonicalPath":"/agent/clawhub-vincent-chao-lang-tax-invoice-skill","generatedAt":"2026-10-10T23:48:15.164Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T20:10:19.036Z","emptyReason":null},"description":"本地离线OCR识别图片/PDF发票，自动分类专票/普票/电子普票，生成月度报销台账，断网可用，财务数据不向外传输。采用「本地OCR取字为主 + 本地多模态大模型(VLM)辅助字段定位」的混合路线，兼顾数字准确率与版式适应性。 Skill: 发票归集自动台账工具 Owner: vincent-chao-lang Summary: 本地离线OCR识别图片/PDF发票，自动分类专票/普票/电子普票，生成月度报销台账，断网可用，财务数据不向外传输。采用「本地OCR取字为主 + 本地多模态大模型(VLM)辅助字段定位」的混合路线，兼顾数字准确率与版式适应性。 Tags: latest:2.0.1 Version history: v2.0.1 | 2026-07-09T01:29:59.897Z | user 优化跨平台说明：SKILL.md 第3步（自动唤醒专家 Agent）标注为「可选·仅 WorkBuddy 环境」，OpenClaw 等非 WorkBuddy 平台跳过此步即可，台账与异常清单已完整生成，不影响主流程。 v2.0.0 | 2026-07-09T01:16:35.463Z | user 本地离线发票归集与台账生成：本地OCR(PaddleOC","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.3K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s177hp4y3h42aryk6e9yprkbwh8a45ts:tax-invoice-skill","sourceUrl":"https://clawhub.ai/vincent-chao-lang/tax-invoice-skill","homepage":"https://clawhub.ai/vincent-chao-lang/skills/tax-invoice-skill","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/vincent-chao-lang/tax-invoice-skill","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/vincent-chao-lang/skills/tax-invoice-skill","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":62,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"本地离线OCR识别图片/PDF发票，自动分类专票/普票/电子普票，生成月度报销台账，断网可用，财务数据不向外传输。采用「本地OCR取字为主 + 本地多模态大模型(VLM)辅助字段定位」的混合路线，兼顾数字准确率与版式适应性。 Skill: 发票归集自动台账工具 Owner: vincent-chao-lang Summ"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T20:10:19.036Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T20:10:19.036Z","emptyReason":null},"stars":null,"forks":null,"downloads":1270,"packageName":null,"latestVersion":"2.0.1","tractionLabel":"1.3K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T20:10:19.035Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T20:10:19.036Z","lastCrawledAt":"2026-10-10T20:10:19.035Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T20:10:19.035Z","lastVerifiedAt":null,"highlights":[{"version":"2.0.1","createdAt":"2026-07-09T01:29:59.897Z","changelog":"优化跨平台说明：SKILL.md 第3步（自动唤醒专家 Agent）标注为「可选·仅 WorkBuddy 环境」，OpenClaw 等非 WorkBuddy 平台跳过此步即可，台账与异常清单已完整生成，不影响主流程。","fileCount":13,"zipByteSize":18666},{"version":"2.0.0","createdAt":"2026-07-09T01:16:35.463Z","changelog":"本地离线发票归集与台账生成：本地OCR(PaddleOCR)逐字取字为主 + 本地多模态模型(VLM, Ollama)辅助字段定位，混合架构兼顾长数字串准确率与版式适应性；自动分类专票/普票/电子普票/定额，生成月度财税台账.xlsx（10列固定表头）与异常票据清单，全程数据不出本机。","fileCount":13,"zipByteSize":18596}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s177hp4y3h42aryk6e9yprkbwh8a45ts:tax-invoice-skill","setupComplexity":"medium","setupSteps":["Python environment detected. Create a strict virtual environment (`python -m venv .venv`) before installing dependencies to prevent system-level package conflicts.","Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-vincent-chao-lang-tax-invoice-skill/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-vincent-chao-lang-tax-invoice-skill/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-vincent-chao-lang-tax-invoice-skill/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-vincent-chao-lang-tax-invoice-skill/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-vincent-chao-lang-tax-invoice-skill/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-vincent-chao-lang-tax-invoice-skill/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T23:48:15.164Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-vincent-chao-lang-tax-invoice-skill/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-vincent-chao-lang-tax-invoice-skill/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-vincent-chao-lang-tax-invoice-skill/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-vincent-chao-lang-tax-invoice-skill/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T20:10:19.036Z","emptyReason":null},"readme":"Skill: 发票归集自动台账工具\n\nOwner: vincent-chao-lang\n\nSummary: 本地离线OCR识别图片/PDF发票，自动分类专票/普票/电子普票，生成月度报销台账，断网可用，财务数据不向外传输。采用「本地OCR取字为主 + 本地多模态大模型(VLM)辅助字段定位」的混合路线，兼顾数字准确率与版式适应性。\n\nTags: latest:2.0.1\n\nVersion history:\n\nv2.0.1 | 2026-07-09T01:29:59.897Z | user\n\n优化跨平台说明：SKILL.md 第3步（自动唤醒专家 Agent）标注为「可选·仅 WorkBuddy 环境」，OpenClaw 等非 WorkBuddy 平台跳过此步即可，台账与异常清单已完整生成，不影响主流程。\n\nv2.0.0 | 2026-07-09T01:16:35.463Z | user\n\n本地离线发票归集与台账生成：本地OCR(PaddleOCR)逐字取字为主 + 本地多模态模型(VLM, Ollama)辅助字段定位，混合架构兼顾长数字串准确率与版式适应性；自动分类专票/普票/电子普票/定额，生成月度财税台账.xlsx（10列固定表头）与异常票据清单，全程数据不出本机。\n\nArchive index:\n\nArchive v2.0.1: 13 files, 18666 bytes\n\nFiles: README.md (5474b), scripts/_selftest.py (4084b), scripts/config.py (792b), scripts/field_extractor.py (4370b), scripts/ledger_builder.py (1714b), scripts/ocr_engine.py (1726b), scripts/requirements.txt (107b), scripts/run_pipeline.py (6458b), scripts/utils.py (904b), scripts/validate.py (1730b), skill-card.md (2198b), SKILL.md (4748b), _meta.json (136b)\n\nFile v2.0.1:SKILL.md\n\n---\nname: 发票归集自动台账工具\nversion: 2.0.0\ndescription: 本地离线OCR识别图片/PDF发票，自动分类专票/普票/电子普票，生成月度报销台账，断网可用，财务数据不向外传输。采用「本地OCR取字为主 + 本地多模态大模型(VLM)辅助字段定位」的混合路线，兼顾数字准确率与版式适应性。\nagent_created: true\nbind_agent: 小微企业财税专家\ntriggers: [\"整理发票\", \"票据汇总\", \"生成报销台账\", \"统计进项票据\"]\ntools: [read_file, write_file, terminal]\nworking_mode: Craft\nonly_local_data: true\nallow_network_upload: false\nfile_limit: 100\ndepends:\n  python: \">=3.10\"\n  ocr_engine: \"PaddleOCR (本地)\"\n  vlm: \"本地多模态模型，通过 Ollama 提供 (如 qwen2.5vl:7b / minicpm-v / llava)\"\n  excel: \"openpyxl\"\nmetadata:\n  openclaw:\n    requires:\n      bins:\n        - python3\n        - ollama\n    envVars:\n      - name: OLLAMA_API\n        required: false\n        description: 本地 Ollama 多模态模型服务地址，默认 http://localhost:11434/api/chat\n      - name: VLM_MODEL\n        required: false\n        description: 本地多模态模型名，默认 qwen2.5vl:7b\n    emoji: \"🧾\"\n---\n\n# 一、设计路线（混合架构）\n\n**核心原则：本地 OCR 为主，本地 VLM 辅助。**\n\n| 环节 | 负责方 | 说明 |\n|------|--------|------|\n| 取字（字符级） | **本地 OCR（PaddleOCR）** | 逐字识别发票号码、税号、价税合计等长数字串，确定性强、不幻觉 |\n| 字段定位/归类 | OCR规则优先；**本地 VLM 辅助兜底** | 标准票用关键词+正则直接定位；版式异常/缺字段时调本地多模态模型从图定位字段 |\n| 校验 | 脚本（validate） | 价税合计≈不含税+税额、发票号码正则、必填项、分类 |\n| 出表 | 脚本（ledger_builder） | openpyxl 生成「月度财税台账.xlsx」+「异常票据清单」 |\n\n> ⚠️ VLM 仅作为**辅助**：只负责\"这段OCR文字归到哪个字段\"，不负责从零读数字；数字以 OCR 结果为基准。\n> ⚠️ 所有模型必须**本地运行**（Ollama 加载多模态模型），严禁把发票图片/金额发往任何云端接口。\n\n# 二、技能执行流程\n\n1. 仅当用户明确提供了票据存放文件夹路径时才继续；**若用户未提供目录，直接退出，不追问、不扫描电脑任何目录**。\n2. 用 `python scripts/run_pipeline.py \"<文件夹路径>\"` 在本地执行整套流程：\n   a. 遍历目录内 PDF / JPG / JPEG / PNG（上限 `file_limit` 个，超出提示分批）。\n   b. **本地 OCR** 逐张取字（PDF 先渲染首页为图像）。\n   c. **字段抽取**：先用关键词+正则从 OCR 文本定位字段；若关键数字字段缺失或置信度低，调**本地 VLM** 辅助定位（仍以南向 OCR 数字为准）。\n   d. **校验**：勾稽关系 + 格式校验 + 分类，生成「风险备注」，不可读/对不上的标记为「异常」。\n   e. **按月分组**统计总收入、总税额、各类票据数量。\n   f. 在票据目录生成「月度财税台账.xlsx」（固定表头）+ 独立「异常票据清单」页。\n3. （可选 · 仅 WorkBuddy 环境）输出完成后，自动唤醒【小微企业财税专家】Agent，同步台账数据做税务测算与风险分析。若运行环境不支持 Agent 绑定（如 OpenClaw 等非 WorkBuddy 平台），跳过此步即可——台账与异常清单已完整生成，不影响主流程。\n\n运行脚本前确认依赖已装：`pip install -r scripts/requirements.txt`，且 Ollama 已加载本地多模态模型（默认 `qwen2.5vl:7b`，可用环境变量 `VLM_MODEL` / `OLLAMA_API` 覆盖）。\n\n# 三、容错&安全规则\n\n1. 损坏、模糊无法识别的发票单独列入「异常票据清单」写入 Excel，不丢弃源文件。\n2. 全程禁止将发票原图、金额、企业信息上传任何云端接口；VLM 必须走本地 Ollama。\n3. 不修改、删除客户原始发票文件，仅读取解析。\n4. 含个人身份证、隐私抬头的票据信息仅本地缓存，任务结束自动清空内存数据。\n5. 中文路径、带空格文件夹自动兼容，无乱码。\n6. VLM 调用失败（本地模型未就绪等）时降级为「OCR+正则」，缺失字段进入异常清单，不中断整体流程。\n7. 运行前自动检测本地环境（PaddleOCR 是否安装、Ollama 服务是否运行且已拉取所需模型）；任一缺失则打印明确的安装命令提示后退出，**绝不静默联网安装或拉取模型**（坚持全本地离线）。\n\n# 四、Excel台账固定表头\n\n开票日期 | 发票类型 | 销售方 | 不含税金额 | 税额 | 价税合计 | 发票号码 | 票据状态 | 所属月份 | 风险备注\n\nFile v2.0.1:README.md\n\n# 小微企业财税套装 使用说明书\n\n套装包含：**小微企业财税专家 Agent** + **发票归集自动台账 Skill**\n\n核心优势：全本地离线运行，发票、收支数据全程不出本机，杜绝财务信息泄露。\n发票识别采用「本地 OCR 取字为主 + 本地多模态大模型(VLM)辅助字段定位」的混合路线，\n兼顾长数字串的识别准确率与各种版式的适应能力。\n\n---\n\n## 一、安装导入步骤\n\n1. 关闭 WorkBuddy，将整个 `tax-invoice-skill` 文件夹放入技能目录：\n   - Windows：`C:\\Users\\你的用户名\\.workbuddy\\skills\\`\n   - Mac：`~/.workbuddy/skills/`\n2. 重启 WorkBuddy，左侧技能栏会自动加载本套工具。\n3. 导入 `tax-expert.agent`：快捷键 `Ctrl+Shift+P` 打开代理面板 → 创建代理 → 粘贴文件全部内容保存。\n4. 按第二节「手动安装步骤」装好本机运行环境（Python 依赖 + Ollama 模型）。\n\n---\n\n## 二、本地运行依赖（离线必需）\n\n本技能自带 Python 实现（`scripts/` 目录），运行时不依赖任何云端接口，但本机需具备以下环境：\n\n1. **Python >= 3.10**\n2. **OCR 引擎（本地）**：`PaddleOCR`，用于逐字识别发票号码、税号、价税合计等长数字串（数字来源基准）。\n3. **本地多模态模型（VLM，辅助）**：通过 **Ollama** 提供，仅用于补 OCR 规则未能定位的字段。\n   必须使用支持图像输入的本地模型，例如 `qwen2.5vl:7b`（默认）/ `minicpm-v` / `llava` 等。\n   > 注意：必须是**本地多模态模型**，不能偷接任何云端 VLM（如 GPT-4V），否则「数据不上传」的承诺即被打破。\n4. **Excel 导出**：`openpyxl`\n\n> 运行前脚本会自动检测上述环境；若 PaddleOCR 未装、Ollama 未启动或模型未拉取，会**打印明确的安装命令提示后退出**，不会静默联网安装。因此请务必先按下方步骤手动装好。\n\n### 手动安装步骤\n\n**第 1 步：安装 Python 依赖（OCR 引擎 + Excel 导出）**\n```bash\n# 建议在项目内建虚拟环境（可选但推荐）\npython -m venv .venv\nsource .venv/bin/activate        # Windows: .venv\\Scripts\\activate\n\n# 安装全部 Python 依赖（含 paddleocr / paddlepaddle / PyMuPDF / opencv-python / openpyxl / requests）\npip install -r scripts/requirements.txt\n# 注：requests 已包含在 requirements.txt 中，无需单独安装；仅当环境异常缺失时才需 pip install requests\n```\n> 首次运行 `PaddleOCR` 会自动下载中文识别模型（约几百 MB），需联网一次；模型落本地后后续断网可用。\n\n**第 2 步：安装并启动 Ollama（本地 VLM 运行时）**\n```bash\n# 1) 下载安装 Ollama：https://ollama.com  （按系统指引安装，Windows/Mac 均为图形安装包）\n# 2) 启动 Ollama 服务（安装后通常开机自启；也可手动启动）\nollama serve          # 终端常驻，监听 http://localhost:11434\n```\n\n**第 3 步：拉取本地多模态模型**\n```bash\n# 拉取默认模型（约 4~6 GB，需联网一次，落本地后断网可用）\nollama pull qwen2.5vl:7b\n```\n> 验证模型已就位：`ollama list` 应能看到 `qwen2.5vl:7b`。\n\n**第 4 步（可选）：自定义模型或地址**\n```bash\n# 若使用其他本地多模态模型，或 Ollama 不在默认地址，用环境变量覆盖：\nexport VLM_MODEL=minicpm-v          # 模型名，需先 ollama pull 对应模型\nexport OLLAMA_API=http://localhost:11434/api/chat   # 默认地址，一般无需改\n```\n\n**完成上述 4 步后**，即可在 WorkBuddy 中触发技能整理发票（见第三节）。若某步缺失，运行时会立即得到对应的安装提示。\n\n---\n\n## 三、使用方法\n\n### 1. 自动批量整理发票（生成台账）\n聊天输入：`整理发票`，按提示选择存放票据的文件夹（仅读取该目录，PDF/JPG/JPEG/PNG）。\n技能会通过终端执行本地脚本完成全流程：\n```bash\npython scripts/run_pipeline.py \"<票据文件夹路径>\"\n# 可选参数：\n#   --out \"<输出xlsx路径>\"   指定台账保存位置（默认在票据目录生成「月度财税台账.xlsx」）\n#   --limit N                单批处理上限（默认 100）\n```\n执行后在该目录生成 `月度财税台账.xlsx`，含两个工作表：\n- **月度财税台账**：固定 10 列表头（开票日期、发票类型、销售方、不含税金额、税额、价税合计、发票号码、票据状态、所属月份、风险备注）+ 合计行。\n- **异常票据清单**：勾稽不符、字段缺失、格式异常或类型无法识别的票据，供人工复核。\n\n### 2. 财税风险 & 报税测算\n聊天输入：`财税咨询`，读取上一步生成的台账文件，专家自动做成本核算、季度算税、风险排查。\n\n---\n\n## 四、容错与安全\n\n- 损坏、模糊无法识别的发票单独列入「异常票据清单」，不丢弃源文件。\n- 全程禁止将发票原图、金额、企业信息上传任何云端接口；VLM 必须走本地 Ollama。\n- 不修改、删除客户原始发票文件，仅读取解析。\n- VLM 调用失败（本地模型未就绪等）时自动降级为「OCR + 正则」，缺失字段进入异常清单，整体流程不中断。\n\n---\n\n## 五、售后与更新\n\n购买享 1 年免费更新：财税新政更新、台账模板优化、新增票据识别兼容格式。\n如需企业定制：定制公司专属报表、对接内部进销存表格可单独付费开发。\n\nFile v2.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn77jyhe7q3wey5zz82edswxe98a5pnj\",\n  \"slug\": \"tax-invoice-skill\",\n  \"version\": \"2.0.1\",\n  \"publishedAt\": 1783560599897\n}\n\nFile v2.0.1:scripts/requirements.txt\n\npaddleocr>=2.7.0\npaddlepaddle>=2.6.0\nPyMuPDF>=1.23.0\nopencv-python>=4.8.0\nopenpyxl>=3.1.0\nrequests>=2.31.0\n\nFile v2.0.1:skill-card.md\n\n## Description:\n\n本技能在本地使用 OCR 和本地多模态模型辅助定位字段，从图片或 PDF 发票中抽取票面信息并生成月度报销台账。\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[vincent-chao-lang](https://clawhub.ai/user/vincent-chao-lang)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nSmall-business finance users and agent workflows use this skill to process user-selected invoice folders, extract invoice fields, classify invoice types, flag exceptions, and build a monthly tax ledger for reimbursement and review.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill processes sensitive financial documents and the local-only network boundary is not enforced by policy controls.\n\nMitigation: Run it only in an isolated virtual environment, keep OLLAMA_API fixed to a loopback Ollama endpoint, and avoid proxy inheritance.\n\nRisk: Spreadsheet output handling may allow unsafe formulas or cell content from invoice data.\n\nMitigation: Do not process invoices from untrusted sources until spreadsheet formula sanitization is added and reviewed.\n\nRisk: Runtime dependencies are not locked to exact versions.\n\nMitigation: Pin and review dependencies before deployment, then install from a controlled package source.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/vincent-chao-lang/skills/tax-invoice-skill)\n- [Publisher profile](https://clawhub.ai/user/vincent-chao-lang)\n- [Ollama](https://ollama.com)\n\n## Skill Output:\n\n**Output Type(s):** [text, shell commands, configuration, guidance, files]\n\n**Output Format:** [Text guidance with shell commands; generated Excel workbook files]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Writes a monthly ledger workbook and an exception sheet in the user-provided invoice directory.]\n\n## Skill Version(s):\n\n2.0.1 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v2.0.0: 13 files, 18596 bytes\n\nFiles: README.md (5474b), scripts/_selftest.py (4084b), scripts/config.py (792b), scripts/field_extractor.py (4370b), scripts/ledger_builder.py (1714b), scripts/ocr_engine.py (1726b), scripts/requirements.txt (107b), scripts/run_pipeline.py (6458b), scripts/utils.py (904b), scripts/validate.py (1730b), skill-card.md (2432b), SKILL.md (4546b), _meta.json (136b)\n\nFile v2.0.0:SKILL.md\n\n---\nname: 发票归集自动台账工具\nversion: 2.0.0\ndescription: 本地离线OCR识别图片/PDF发票，自动分类专票/普票/电子普票，生成月度报销台账，断网可用，财务数据不向外传输。采用「本地OCR取字为主 + 本地多模态大模型(VLM)辅助字段定位」的混合路线，兼顾数字准确率与版式适应性。\nagent_created: true\nbind_agent: 小微企业财税专家\ntriggers: [\"整理发票\", \"票据汇总\", \"生成报销台账\", \"统计进项票据\"]\ntools: [read_file, write_file, terminal]\nworking_mode: Craft\nonly_local_data: true\nallow_network_upload: false\nfile_limit: 100\ndepends:\n  python: \">=3.10\"\n  ocr_engine: \"PaddleOCR (本地)\"\n  vlm: \"本地多模态模型，通过 Ollama 提供 (如 qwen2.5vl:7b / minicpm-v / llava)\"\n  excel: \"openpyxl\"\nmetadata:\n  openclaw:\n    requires:\n      bins:\n        - python3\n        - ollama\n    envVars:\n      - name: OLLAMA_API\n        required: false\n        description: 本地 Ollama 多模态模型服务地址，默认 http://localhost:11434/api/chat\n      - name: VLM_MODEL\n        required: false\n        description: 本地多模态模型名，默认 qwen2.5vl:7b\n    emoji: \"🧾\"\n---\n\n# 一、设计路线（混合架构）\n\n**核心原则：本地 OCR 为主，本地 VLM 辅助。**\n\n| 环节 | 负责方 | 说明 |\n|------|--------|------|\n| 取字（字符级） | **本地 OCR（PaddleOCR）** | 逐字识别发票号码、税号、价税合计等长数字串，确定性强、不幻觉 |\n| 字段定位/归类 | OCR规则优先；**本地 VLM 辅助兜底** | 标准票用关键词+正则直接定位；版式异常/缺字段时调本地多模态模型从图定位字段 |\n| 校验 | 脚本（validate） | 价税合计≈不含税+税额、发票号码正则、必填项、分类 |\n| 出表 | 脚本（ledger_builder） | openpyxl 生成「月度财税台账.xlsx」+「异常票据清单」 |\n\n> ⚠️ VLM 仅作为**辅助**：只负责\"这段OCR文字归到哪个字段\"，不负责从零读数字；数字以 OCR 结果为基准。\n> ⚠️ 所有模型必须**本地运行**（Ollama 加载多模态模型），严禁把发票图片/金额发往任何云端接口。\n\n# 二、技能执行流程\n\n1. 仅当用户明确提供了票据存放文件夹路径时才继续；**若用户未提供目录，直接退出，不追问、不扫描电脑任何目录**。\n2. 用 `python scripts/run_pipeline.py \"<文件夹路径>\"` 在本地执行整套流程：\n   a. 遍历目录内 PDF / JPG / JPEG / PNG（上限 `file_limit` 个，超出提示分批）。\n   b. **本地 OCR** 逐张取字（PDF 先渲染首页为图像）。\n   c. **字段抽取**：先用关键词+正则从 OCR 文本定位字段；若关键数字字段缺失或置信度低，调**本地 VLM** 辅助定位（仍以南向 OCR 数字为准）。\n   d. **校验**：勾稽关系 + 格式校验 + 分类，生成「风险备注」，不可读/对不上的标记为「异常」。\n   e. **按月分组**统计总收入、总税额、各类票据数量。\n   f. 在票据目录生成「月度财税台账.xlsx」（固定表头）+ 独立「异常票据清单」页。\n3. 输出完成后，自动唤醒【小微企业财税专家】Agent，同步台账数据做税务测算与风险分析。\n\n运行脚本前确认依赖已装：`pip install -r scripts/requirements.txt`，且 Ollama 已加载本地多模态模型（默认 `qwen2.5vl:7b`，可用环境变量 `VLM_MODEL` / `OLLAMA_API` 覆盖）。\n\n# 三、容错&安全规则\n\n1. 损坏、模糊无法识别的发票单独列入「异常票据清单」写入 Excel，不丢弃源文件。\n2. 全程禁止将发票原图、金额、企业信息上传任何云端接口；VLM 必须走本地 Ollama。\n3. 不修改、删除客户原始发票文件，仅读取解析。\n4. 含个人身份证、隐私抬头的票据信息仅本地缓存，任务结束自动清空内存数据。\n5. 中文路径、带空格文件夹自动兼容，无乱码。\n6. VLM 调用失败（本地模型未就绪等）时降级为「OCR+正则」，缺失字段进入异常清单，不中断整体流程。\n7. 运行前自动检测本地环境（PaddleOCR 是否安装、Ollama 服务是否运行且已拉取所需模型）；任一缺失则打印明确的安装命令提示后退出，**绝不静默联网安装或拉取模型**（坚持全本地离线）。\n\n# 四、Excel台账固定表头\n\n开票日期 | 发票类型 | 销售方 | 不含税金额 | 税额 | 价税合计 | 发票号码 | 票据状态 | 所属月份 | 风险备注\n\nFile v2.0.0:README.md\n\n# 小微企业财税套装 使用说明书\n\n套装包含：**小微企业财税专家 Agent** + **发票归集自动台账 Skill**\n\n核心优势：全本地离线运行，发票、收支数据全程不出本机，杜绝财务信息泄露。\n发票识别采用「本地 OCR 取字为主 + 本地多模态大模型(VLM)辅助字段定位」的混合路线，\n兼顾长数字串的识别准确率与各种版式的适应能力。\n\n---\n\n## 一、安装导入步骤\n\n1. 关闭 WorkBuddy，将整个 `tax-invoice-skill` 文件夹放入技能目录：\n   - Windows：`C:\\Users\\你的用户名\\.workbuddy\\skills\\`\n   - Mac：`~/.workbuddy/skills/`\n2. 重启 WorkBuddy，左侧技能栏会自动加载本套工具。\n3. 导入 `tax-expert.agent`：快捷键 `Ctrl+Shift+P` 打开代理面板 → 创建代理 → 粘贴文件全部内容保存。\n4. 按第二节「手动安装步骤」装好本机运行环境（Python 依赖 + Ollama 模型）。\n\n---\n\n## 二、本地运行依赖（离线必需）\n\n本技能自带 Python 实现（`scripts/` 目录），运行时不依赖任何云端接口，但本机需具备以下环境：\n\n1. **Python >= 3.10**\n2. **OCR 引擎（本地）**：`PaddleOCR`，用于逐字识别发票号码、税号、价税合计等长数字串（数字来源基准）。\n3. **本地多模态模型（VLM，辅助）**：通过 **Ollama** 提供，仅用于补 OCR 规则未能定位的字段。\n   必须使用支持图像输入的本地模型，例如 `qwen2.5vl:7b`（默认）/ `minicpm-v` / `llava` 等。\n   > 注意：必须是**本地多模态模型**，不能偷接任何云端 VLM（如 GPT-4V），否则「数据不上传」的承诺即被打破。\n4. **Excel 导出**：`openpyxl`\n\n> 运行前脚本会自动检测上述环境；若 PaddleOCR 未装、Ollama 未启动或模型未拉取，会**打印明确的安装命令提示后退出**，不会静默联网安装。因此请务必先按下方步骤手动装好。\n\n### 手动安装步骤\n\n**第 1 步：安装 Python 依赖（OCR 引擎 + Excel 导出）**\n```bash\n# 建议在项目内建虚拟环境（可选但推荐）\npython -m venv .venv\nsource .venv/bin/activate        # Windows: .venv\\Scripts\\activate\n\n# 安装全部 Python 依赖（含 paddleocr / paddlepaddle / PyMuPDF / opencv-python / openpyxl / requests）\npip install -r scripts/requirements.txt\n# 注：requests 已包含在 requirements.txt 中，无需单独安装；仅当环境异常缺失时才需 pip install requests\n```\n> 首次运行 `PaddleOCR` 会自动下载中文识别模型（约几百 MB），需联网一次；模型落本地后后续断网可用。\n\n**第 2 步：安装并启动 Ollama（本地 VLM 运行时）**\n```bash\n# 1) 下载安装 Ollama：https://ollama.com  （按系统指引安装，Windows/Mac 均为图形安装包）\n# 2) 启动 Ollama 服务（安装后通常开机自启；也可手动启动）\nollama serve          # 终端常驻，监听 http://localhost:11434\n```\n\n**第 3 步：拉取本地多模态模型**\n```bash\n# 拉取默认模型（约 4~6 GB，需联网一次，落本地后断网可用）\nollama pull qwen2.5vl:7b\n```\n> 验证模型已就位：`ollama list` 应能看到 `qwen2.5vl:7b`。\n\n**第 4 步（可选）：自定义模型或地址**\n```bash\n# 若使用其他本地多模态模型，或 Ollama 不在默认地址，用环境变量覆盖：\nexport VLM_MODEL=minicpm-v          # 模型名，需先 ollama pull 对应模型\nexport OLLAMA_API=http://localhost:11434/api/chat   # 默认地址，一般无需改\n```\n\n**完成上述 4 步后**，即可在 WorkBuddy 中触发技能整理发票（见第三节）。若某步缺失，运行时会立即得到对应的安装提示。\n\n---\n\n## 三、使用方法\n\n### 1. 自动批量整理发票（生成台账）\n聊天输入：`整理发票`，按提示选择存放票据的文件夹（仅读取该目录，PDF/JPG/JPEG/PNG）。\n技能会通过终端执行本地脚本完成全流程：\n```bash\npython scripts/run_pipeline.py \"<票据文件夹路径>\"\n# 可选参数：\n#   --out \"<输出xlsx路径>\"   指定台账保存位置（默认在票据目录生成「月度财税台账.xlsx」）\n#   --limit N                单批处理上限（默认 100）\n```\n执行后在该目录生成 `月度财税台账.xlsx`，含两个工作表：\n- **月度财税台账**：固定 10 列表头（开票日期、发票类型、销售方、不含税金额、税额、价税合计、发票号码、票据状态、所属月份、风险备注）+ 合计行。\n- **异常票据清单**：勾稽不符、字段缺失、格式异常或类型无法识别的票据，供人工复核。\n\n### 2. 财税风险 & 报税测算\n聊天输入：`财税咨询`，读取上一步生成的台账文件，专家自动做成本核算、季度算税、风险排查。\n\n---\n\n## 四、容错与安全\n\n- 损坏、模糊无法识别的发票单独列入「异常票据清单」，不丢弃源文件。\n- 全程禁止将发票原图、金额、企业信息上传任何云端接口；VLM 必须走本地 Ollama。\n- 不修改、删除客户原始发票文件，仅读取解析。\n- VLM 调用失败（本地模型未就绪等）时自动降级为「OCR + 正则」，缺失字段进入异常清单，整体流程不中断。\n\n---\n\n## 五、售后与更新\n\n购买享 1 年免费更新：财税新政更新、台账模板优化、新增票据识别兼容格式。\n如需企业定制：定制公司专属报表、对接内部进销存表格可单独付费开发。\n\nFile v2.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn77jyhe7q3wey5zz82edswxe98a5pnj\",\n  \"slug\": \"tax-invoice-skill\",\n  \"version\": \"2.0.0\",\n  \"publishedAt\": 1783559795463\n}\n\nFile v2.0.0:scripts/requirements.txt\n\npaddleocr>=2.7.0\npaddlepaddle>=2.6.0\nPyMuPDF>=1.23.0\nopencv-python>=4.8.0\nopenpyxl>=3.1.0\nrequests>=2.31.0\n\nFile v2.0.0:skill-card.md\n\n## Description: <br>\n本技能在本地使用 OCR 和本地 Ollama 多模态模型辅助识别图片或 PDF 发票，分类票据并生成月度财税台账和异常票据清单。 <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[vincent-chao-lang](https://clawhub.ai/user/vincent-chao-lang) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nSmall-business finance users and agents use this skill to process a user-selected folder of invoice PDFs or images, extract key tax fields locally, and produce a monthly reimbursement or tax ledger for review. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill processes sensitive invoice images and business finance data. <br>\nMitigation: Run it only on trusted local invoice folders and keep OCR, Ollama, and generated ledger files on the local machine. <br>\nRisk: Dependencies and local model runtimes may be outdated or unpinned in a finance environment. <br>\nMitigation: Use a virtual environment and pin or lock patched versions of Python dependencies and local model packages before production use. <br>\nRisk: Changing OLLAMA_API to a remote endpoint can send invoice images and business data outside the machine. <br>\nMitigation: Keep OLLAMA_API pointed to the loopback Ollama service unless the operator has explicitly approved remote processing of invoice data. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/vincent-chao-lang/skills/tax-invoice-skill) <br>\n- [Publisher profile](https://clawhub.ai/user/vincent-chao-lang) <br>\n- [Ollama](https://ollama.com) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Files, Shell commands, Configuration, Guidance] <br>\n**Output Format:** [Excel workbook with console status text] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Produces a monthly ledger workbook with a fixed 10-column sheet and a separate exception sheet; reads only PDF, JPG, JPEG, and PNG files from the user-provided folder.] <br>\n\n## Skill Version(s): <br>\n2.0.0 (source: frontmatter and server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>","readmeExcerpt":"Skill: 发票归集自动台账工具 Owner: vincent-chao-lang Summary: 本地离线OCR识别图片/PDF发票，自动分类专票/普票/电子普票，生成月度报销台账，断网可用，财务数据不向外传输。采用「本地OCR取字为主 + 本地多模态大模型(VLM)辅助字段定位」的混合路线，兼顾数字准确率与版式适应性。 Tags: latest:2.0.1 Version history: v2.0.1 | 2026-07-09T01:29:59.897Z | user 优化跨平台说明：SKILL.md 第3步（自动唤醒专家 Agent）标注为「可选·仅 WorkBuddy 环境」，OpenClaw 等非 WorkBuddy 平台跳过此步即可，台账与异常清单已完整生成，不影响主流程。 v2.0.0 | 2026-07-09T01:16:35.463Z | user 本地离线发票归集与台账生成：本地OCR(PaddleOC","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"# 建议在项目内建虚拟环境（可选但推荐）\npython -m venv .venv\nsource .venv/bin/activate        # Windows: .venv\\Scripts\\activate\n\n# 安装全部 Python 依赖（含 paddleocr / paddlepaddle / PyMuPDF / opencv-python / openpyxl / requests）\npip install -r scripts/requirements.txt\n# 注：requests 已包含在 requirements.txt 中，无需单独安装；仅当环境异常缺失时才需 pip install requests"},{"language":"bash","snippet":"# 1) 下载安装 Ollama：https://ollama.com  （按系统指引安装，Windows/Mac 均为图形安装包）\n# 2) 启动 Ollama 服务（安装后通常开机自启；也可手动启动）\nollama serve          # 终端常驻，监听 http://localhost:11434"},{"language":"bash","snippet":"# 拉取默认模型（约 4~6 GB，需联网一次，落本地后断网可用）\nollama pull qwen2.5vl:7b"},{"language":"bash","snippet":"# 若使用其他本地多模态模型，或 Ollama 不在默认地址，用环境变量覆盖：\nexport VLM_MODEL=minicpm-v          # 模型名，需先 ollama pull 对应模型\nexport OLLAMA_API=http://localhost:11434/api/chat   # 默认地址，一般无需改"},{"language":"bash","snippet":"python scripts/run_pipeline.py \"<票据文件夹路径>\"\n# 可选参数：\n#   --out \"<输出xlsx路径>\"   指定台账保存位置（默认在票据目录生成「月度财税台账.xlsx」）\n#   --limit N                单批处理上限（默认 100）"},{"language":"bash","snippet":"# 建议在项目内建虚拟环境（可选但推荐）\npython -m venv .venv\nsource .venv/bin/activate        # Windows: .venv\\Scripts\\activate\n\n# 安装全部 Python 依赖（含 paddleocr / paddlepaddle / PyMuPDF / opencv-python / openpyxl / requests）\npip install -r scripts/requirements.txt\n# 注：requests 已包含在 requirements.txt 中，无需单独安装；仅当环境异常缺失时才需 pip install requests"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: 发票归集自动台账工具\nversion: 2.0.0\ndescription: 本地离线OCR识别图片/PDF发票，自动分类专票/普票/电子普票，生成月度报销台账，断网可用，财务数据不向外传输。采用「本地OCR取字为主 + 本地多模态大模型(VLM)辅助字段定位」的混合路线，兼顾数字准确率与版式适应性。\nagent_created: true\nbind_agent: 小微企业财税专家\ntriggers: [\"整理发票\", \"票据汇总\", \"生成报销台账\", \"统计进项票据\"]\ntools: [read_file, write_file, terminal]\nworking_mode: Craft\nonly_local_data: true\nallow_network_upload: false\nfile_limit: 100\ndepends:\n  python: \">=3.10\"\n  ocr_engine: \"PaddleOCR (本地)\"\n  vlm: \"本地多模态模型，通过 Ollama 提供 (如 qwen2.5vl:7b / minicpm-v / llava)\"\n  excel: \"openpyxl\"\nmetadata:\n  openclaw:\n    requires:\n      bins:\n        - python3\n        - ollama\n    envVars:\n      - name: OLLAMA_API\n        required: false\n        description: 本地 Ollama 多模态模型服务地址，默认 http://localhost:11434/api/chat\n      - name: VLM_MODEL\n        required: false\n        description: 本地多模态模型名，默认 qwen2.5vl:7b\n    emoji: \"🧾\"\n---\n\n# 一、设计路线（混合架构）\n\n**核心原则：本地 OCR 为主，本地 VLM 辅助。**\n\n| 环节 | 负责方 | 说明 |\n|------|--------|------|\n| 取字（字符级） | **本地 OCR（PaddleOCR）** | 逐字识别发票号码、税号、价税合计等长数字串，确定性强、不幻觉 |\n| 字段定位/归类 | OCR规则优先；**本地 VLM 辅助兜底** | 标准票用关键词+正则直接定位；版式异常/缺字段时调本地多模态模型从图定位字段 |\n| 校验 | 脚本（validate） | 价税合计≈不含税+税额、发票号码正则、必填项、分类 |\n| 出表 | 脚本（ledger_builder） | openpyxl 生成「月度财税台账.xlsx」+「异常票据清单」 |\n\n> ⚠️ VLM 仅作为**辅助**：只负责\"这段OCR文字归到哪个字段\"，不负责从零读数字；数字以 OCR 结果为基准。\n> ⚠️ 所有模型必须**本地运行**（Ollama 加载多模态模型），严禁把发票图片/金额发往任何云端接口。\n\n# 二、技能执行流程\n\n1. 仅当用户明确提供了票据存放文件夹路径时才继续；**若用户未提供目录，直接退出，不追问、不扫描电脑任何目录**。\n2. 用 `python scripts/run_pipeline.py \"<文件夹路径>\"` 在本地执行整套流程：\n   a. 遍历目录内 PDF / JPG / JPEG / PNG（上限 `file_limit` 个，超出提示分批）。\n   b. **本地 OCR** 逐张取字（PDF 先渲染首页为图像）。\n   c. **字段抽取**：先用关键词+正则从 OCR 文本定位字段；若关键数字字段缺失或置信度低，调**本地 VLM** 辅助定位（仍以南向 OCR 数字为准）。\n   d. **校验**：勾稽关系 + 格式校验 + 分类，生成「风险备注」，不可读/对不上的标记为「异常」。\n   e. **按月分组**统计总收入、总税额、各类票据数量。\n   f. 在票据目录生成「月度财税台账.xlsx」（固定表头）+ 独立「异常票据清单」页。\n3. （可选 · 仅 WorkBuddy 环境）输出完成后，自动唤醒【小微企业财税专家】Agent，同步台账数据做税务测算与风险分析。若运行环境不支持 Agent 绑定（如 OpenClaw 等非 WorkBuddy 平台），跳过此步即可——台账与异常清单已完整生成，不影响主流程。\n\n运行脚本前确认依赖已装：`pip install -r scripts/requirements.txt`，且 Ollama 已加载本地多模态模型（默认 `qwen2.5vl:7b`，可用环境变量 `VLM_MODEL` / `OLLAMA_API` 覆盖）。\n\n# 三、容错&安全规则\n\n1. 损坏、模糊无法识别的发票单独列入「异常票据清单」写入 Excel，不丢弃源文件。\n2. 全程禁止将发票原图、金额、企业信息上传任何云端接口；VLM 必须走本地 Ollama。\n3. 不修改、删除客户原始发票文件，仅读取解析。\n4. 含个人身份证、隐私抬头的票据信息仅本地缓存，任务结束自动清空内存数据。\n5. 中文路径、带空格文件夹自动兼容，无乱码。\n6. VLM 调用失败（本地模型未就绪等）时降级为「OCR+正则」，缺失字段进入异常清单，不中断整体流程。\n7. 运行前自动检测本地环境（PaddleOCR 是否安装、Ollama 服务是否运行且已拉取所需模型）；任一缺失则打印明确的安装命令提示后退出，**绝不静默联网安装或拉取模型**（坚持全本地离线）。\n\n# 四、Excel台账固定表头\n\n开票日期 | 发票类型 | 销售方 | 不含税金额 | 税额 | 价税合计 | 发票号码 | 票据状态 | 所属月份 | 风险备注"},{"path":"README.md","content":"# 小微企业财税套装 使用说明书\n\n套装包含：**小微企业财税专家 Agent** + **发票归集自动台账 Skill**\n\n核心优势：全本地离线运行，发票、收支数据全程不出本机，杜绝财务信息泄露。\n发票识别采用「本地 OCR 取字为主 + 本地多模态大模型(VLM)辅助字段定位」的混合路线，\n兼顾长数字串的识别准确率与各种版式的适应能力。\n\n---\n\n## 一、安装导入步骤\n\n1. 关闭 WorkBuddy，将整个 `tax-invoice-skill` 文件夹放入技能目录：\n   - Windows：`C:\\Users\\你的用户名\\.workbuddy\\skills\\`\n   - Mac：`~/.workbuddy/skills/`\n2. 重启 WorkBuddy，左侧技能栏会自动加载本套工具。\n3. 导入 `tax-expert.agent`：快捷键 `Ctrl+Shift+P` 打开代理面板 → 创建代理 → 粘贴文件全部内容保存。\n4. 按第二节「手动安装步骤」装好本机运行环境（Python 依赖 + Ollama 模型）。\n\n---\n\n## 二、本地运行依赖（离线必需）\n\n本技能自带 Python 实现（`scripts/` 目录），运行时不依赖任何云端接口，但本机需具备以下环境：\n\n1. **Python >= 3.10**\n2. **OCR 引擎（本地）**：`PaddleOCR`，用于逐字识别发票号码、税号、价税合计等长数字串（数字来源基准）。\n3. **本地多模态模型（VLM，辅助）**：通过 **Ollama** 提供，仅用于补 OCR 规则未能定位的字段。\n   必须使用支持图像输入的本地模型，例如 `qwen2.5vl:7b`（默认）/ `minicpm-v` / `llava` 等。\n   > 注意：必须是**本地多模态模型**，不能偷接任何云端 VLM（如 GPT-4V），否则「数据不上传」的承诺即被打破。\n4. **Excel 导出**：`openpyxl`\n\n> 运行前脚本会自动检测上述环境；若 PaddleOCR 未装、Ollama 未启动或模型未拉取，会**打印明确的安装命令提示后退出**，不会静默联网安装。因此请务必先按下方步骤手动装好。\n\n### 手动安装步骤\n\n**第 1 步：安装 Python 依赖（OCR 引擎 + Excel 导出）**\n```bash\n# 建议在项目内建虚拟环境（可选但推荐）\npython -m venv .venv\nsource .venv/bin/activate        # Windows: .venv\\Scripts\\activate\n\n# 安装全部 Python 依赖（含 paddleocr / paddlepaddle / PyMuPDF / opencv-python / openpyxl / requests）\npip install -r scripts/requirements.txt\n# 注：requests 已包含在 requirements.txt 中，无需单独安装；仅当环境异常缺失时才需 pip install requests\n```\n> 首次运行 `PaddleOCR` 会自动下载中文识别模型（约几百 MB），需联网一次；模型落本地后后续断网可用。\n\n**第 2 步：安装并启动 Ollama（本地 VLM 运行时）**\n```bash\n# 1) 下载安装 Ollama：https://ollama.com  （按系统指引安装，Windows/Mac 均为图形安装包）\n# 2) 启动 Ollama 服务（安装后通常开机自启；也可手动启动）\nollama serve          # 终端常驻，监听 http://localhost:11434\n```\n\n**第 3 步：拉取本地多模态模型**\n```bash\n# 拉取默认模型（约 4~6 GB，需联网一次，落本地后断网可用）\nollama pull qwen2.5vl:7b\n```\n> 验证模型已就位：`ollama list` 应能看到 `qwen2.5vl:7b`。\n\n**第 4 步（可选）：自定义模型或地址**\n```bash\n# 若使用其他本地多模态模型，或 Ollama 不在默认地址，用环境变量覆盖：\nexport VLM_MODEL=minicpm-v          # 模型名，需先 ollama pull 对应模型\nexport OLLAMA_API=http://localhost:11434/api/chat   # 默认地址，一般无需改\n```\n\n**完成上述 4 步后**，即可在 WorkBuddy 中触发技能整理发票（见第三节）。若某步缺失，运行时会立即得到对应的安装提示。\n\n---\n\n## 三、使用方法\n\n### 1. 自动批量整理发票（生成台账）\n聊天输入：`整理发票`，按提示选择存放票据的文件夹（仅读取该目录，PDF/JPG/JPEG/PNG）。\n技能会通过终端执行本地脚本完成全流程：\n```bash\npython scripts/run_pipeline.py \"<票据文件夹路径>\"\n# 可选参数：\n#   --out \"<输出xlsx路径>\"   指定台账保存位置（默认在票据目录生成「月度财税台账.xlsx」）\n#   --limit N                单批处理上限（默认 100）\n```\n执行后在该目录生成 `月度财税台账.xlsx`，含两个工作表：\n- **月度财税台账**：固定 10 列表头（开票日期、发票类型、销售方、不含税金额、税额、价税合计、发票号码、票据状态、所属月份、风险备注）+ 合计行。\n- **异常票据清单**：勾稽不符、字段缺失、格式异常或类型无法识别的票据，供人工复核。\n\n### 2. 财税风险 & 报税测算\n聊天输入：`财税咨询`，读取上一步生成的台账文件，专家自动做成本核算、季度算税、风险排查。\n\n---\n\n## 四、容错与安全\n\n- 损坏、模糊无法识别的发票单独列入「异常票据清单」，不丢弃源文件。\n- 全程禁止将发票原图、金额、企业信息上传任何云端接口；VLM 必须走本地 Ollama。\n- 不修改、删除客户原始发票文件，仅读取解析。\n- VLM 调用失败（本地模型未就绪等）时自动降级为「OCR + 正则」，缺失字段进入异常清单，整体流程不中断。\n\n---\n\n## 五、售后与更新\n\n购买享 1 年免费更新：财税新政更新、台账模板优化、新增票据识别兼容格式。\n如需企业定制：定制公司专属报表、对接内部进销存表格可单独付费开发。"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn77jyhe7q3wey5zz82edswxe98a5pnj\",\n  \"slug\": \"tax-invoice-skill\",\n  \"version\": \"2.0.1\",\n  \"publishedAt\": 1783560599897\n}"},{"path":"scripts/requirements.txt","content":"paddleocr>=2.7.0\npaddlepaddle>=2.6.0\nPyMuPDF>=1.23.0\nopencv-python>=4.8.0\nopenpyxl>=3.1.0\nrequests>=2.31.0"},{"path":"skill-card.md","content":"## Description:\n\n本技能在本地使用 OCR 和本地多模态模型辅助定位字段，从图片或 PDF 发票中抽取票面信息并生成月度报销台账。\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[vincent-chao-lang](https://clawhub.ai/user/vincent-chao-lang)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nSmall-business finance users and agent workflows use this skill to process user-selected invoice folders, extract invoice fields, classify invoice types, flag exceptions, and build a monthly tax ledger for reimbursement and review.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill processes sensitive financial documents and the local-only network boundary is not enforced by policy controls.\n\nMitigation: Run it only in an isolated virtual environment, keep OLLAMA_API fixed to a loopback Ollama endpoint, and avoid proxy inheritance.\n\nRisk: Spreadsheet output handling may allow unsafe formulas or cell content from invoice data.\n\nMitigation: Do not process invoices from untrusted sources until spreadsheet formula sanitization is added and reviewed.\n\nRisk: Runtime dependencies are not locked to exact versions.\n\nMitigation: Pin and review dependencies before deployment, then install from a controlled package source.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/vincent-chao-lang/skills/tax-invoice-skill)\n- [Publisher profile](https://clawhub.ai/user/vincent-chao-lang)\n- [Ollama](https://ollama.com)\n\n## Skill Output:\n\n**Output Type(s):** [text, shell commands, configuration, guidance, files]\n\n**Output Format:** [Text guidance with shell commands; generated Excel workbook files]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Writes a monthly ledger workbook and an exception sheet in the user-provided invoice directory.]\n\n## Skill Version(s):\n\n2.0.1 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"本地离线OCR识别图片/PDF发票，自动分类专票/普票/电子普票，生成月度报销台账，断网可用，财务数据不向外传输。采用「本地OCR取字为主 + 本地多模态大模型(VLM)辅助字段定位」的混合路线，兼顾数字准确率与版式适应性。 Skill: 发票归集自动台账工具 Owner: vincent-chao-lang Summary: 本地离线OCR识别图片/PDF发票，自动分类专票/普票/电子普票，生成月度报销台账，断网可用，财务数据不向外传输。采用「本地OCR取字为主 + 本地多模态大模型(VLM)辅助字段定位」的混合路线，兼顾数字准确率与版式适应性。 Tags: latest:2.0.1 Version history: v2.0.1 | 2026-07-09T01:29:59.897Z | user 优化跨平台说明：SKILL.md 第3步（自动唤醒专家 Agent）标注为「可选·仅 WorkBuddy 环境」，OpenClaw 等非 WorkBuddy 平台跳过此步即可，台账与异常清单已完整生成，不影响主流程。 v2.0.0 | 2026-07-09T01:16:35.463Z | user 本地离线发票归集与台账生成：本地OCR(PaddleOC","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":822,"uniquenessScore":58,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T20:10:19.036Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T20:10:19.036Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T23:48:15.164Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}