invoice-dedup
OCR 提取发票交易号,识别重复发票。
评分明细
适用场景
invoice-dedup 快速入门
几秒内从一堆扫描件里揪出”同一张发票报了两次”的那张报销单。
这是什么?解决什么问题?
财务、行政、自雇人士最常见的痛点之一:一堆电子发票(有的 PDF,有的 JPG,有的截图),其中几张其实是同一笔交易被不同部门、不同人重复提交的。如果不识别出来就做账,轻则多缴税,重则触发审计风险。
invoice-dedup 是 Anthropic 官方 skills 仓库里的一个数据工程型 Skill,它的工作原理是:
- 调用 OCR(光学字符识别)从发票图片/PDF 中提取交易号、开票日期、金额、销方税号等关键字段;
- 把这些字段组合成一个”发票指纹”;
- 在多张发票之间两两比对,把”指纹相同或高度相似”的发票聚类到一起,标出疑似重复项;
- 输出一份可读报告(可作为 Excel/CSV),并对每组重复给出”是否同笔”的置信度。
它并不是要替代专业财务软件,而是给”接到一堆扫描件、想快速判断有没有重复”的场景做一个前置过滤。
准备工作
- Python ≥ 3.10
- 一个支持 Skills 的 agent(Claude Code、OpenCode 等)
- Tesseract OCR(开源,Windows 用
choco install tesseract,macOS 用brew install tesseract,Linux 用apt install tesseract-ocr) - 准备 5-10 张发票样本(可以是有意构造的重复 + 非重复混合)
- 如果发票里有中文,额外安装
tesseract-data-chi-sim语言包
3 步快速上手
第 1 步:克隆并安装依赖
git clone https://github.com/anthropics/skills.git
cd skills/invoice-dedup
pip install -r requirements.txt
如果仓库没单独提供 requirements.txt,常见依赖是:
pip install pytesseract pillow pdfplumber pandas rapidfuzz
第 2 步:验证 OCR 与 Skill 链路
在终端跑一个最小验证,确认 Tesseract 能读中文+数字发票:
import pytesseract
from PIL import Image
text = pytesseract.image_to_string(Image.open("sample_invoice.jpg"), lang="chi_sim+eng")
print(text[:200])
能正常打印出含税号、金额、交易号字段的文本,说明 OCR 链路通了。再用 ls ~/.claude/skills/ 确认软链到位:
ln -sf $(pwd) ~/.claude/skills/invoice-dedup
第 3 步:跑第一批发票去重
把 5-10 张发票放进 invoices/ 文件夹,在 agent 对话框里说:
请用 invoice-dedup 分析 invoices/ 下所有文件,
输出重复组、置信度,并把结果保存到 dedup_report.csv。
AI 会调起 Skill,先 OCR,再聚类,再写 CSV。打开 CSV 看”重复组”列,会看到形如 Group 3 (2 张,置信度 0.96) 的条目,点开看明细就是去重的目标发票。
常见踩坑
- OCR 装错语言包:纯英文发票漏装
eng,中文发票漏装chi_sim,结果是识别出一堆乱码。tesseract --list-langs可以验证。 - PDF 没先转图片:
pdfplumber抽不到扫描件里的文字(那其实是图),必须先pdf2image转成图片再 OCR。 - 金额格式不统一:有的发票写
1,234.56,有的写1.234,56,指纹生成前必须做归一化,否则明明同金额匹配不上。 - 只比对了文件名:简单按文件名去重是错的,经常有”发票_001.pdf”和”发票_001_副本.pdf”其实是两笔,Skill 一定要比内容指纹。
- 置信度阈值设错:阈值 0.99 太严,真实重复会漏;0.7 太松,会把”同一天同金额的不同发票”误判。要根据自家数据调,推荐先在 0.85 起步。
- 没做人工抽检:自动化报告再准,建议每组至少抽 1 张肉眼核对,尤其涉及高金额时。
初级用法
- 月度报销清洗:把当月所有发票丢给 Skill,几秒拿到去重报告,直接交给财务。
- 配合 Excel 模板:把
dedup_report.csv喂给一个 Excel 模板,自动生成”待人工复核”工作表,比手工勾选快很多。
高级玩法
- 接 ERP API:把 Skill 的输出作为 ERP(金蝶/用友/SAP)入账前的”重复预警”层,完全自动阻断可疑重复入账。
- 自定义指纹字段:编辑
SKILL.md里的fingerprint_keys,把”销方税号 + 交易号 + 金额”换成你们行业更稳的字段组合(如”合同号 + 收单机构号”)。 - 增量去重:把”已确认非重复”的发票指纹存进 SQLite 历史库,新发票只和历史比对,不用每次全量扫,几千张发票也能秒级响应。
小技巧
- 给发票加一个统一命名前缀(如
2026Q2-001),这样去重报告里能直接关联到季度。 - 对极小金额(如 < 50 元)可设白名单跳过,减少噪声。
- OCR 结果里经常出现”O”和”0”混淆,做指纹时用 fuzzy match(
rapidfuzz)容错一下。 - 如果发票来自邮件附件,先用
unzip把.zip包解开,再统一处理。 - 周报/月报里附一张”重复率趋势图”,长期跟踪能发现异常商家。
常见问题 FAQ
Q1: 这个 Skill 跟 invoice-dedup 有什么关系?必须装吗?
A: Skill 是给 AI Agent 用的”技能包”,能告诉 Agent 怎么按特定规范工作。不是必须装——如果你的项目规模小、要求不高,不装也能用。但装上能让 Agent 输出的质量更高、更符合最佳实践,推荐装。
Q2: 这个 Skill 适合哪些 AI Agent?Cursor?Claude Code?其他?
A: invoice-dedup 来自 community,主要面向支持 Skill 机制的 Agent。常见兼容 Agent 包括 Claude Code、Cursor、OpenCode、Windsurf 等。具体兼容性请查 Skill 官方文档。
Q3: 装了这个 Skill 后,会拖慢 Agent 响应吗?
A: 会的——Skill 通常会增加 prompt 长度,导致响应变慢、token 消耗增加。但质量提升明显。建议:1) 只装项目必需的 Skill;2) 用 Skill 启动/加载/卸载机制按需加载;3) 定期清理不用的 Skill。
Q4: 怎么验证 Skill 装对了?
A: 在 Agent 中输入”列出已加载的 Skill”或类似命令。如果 Skill 出现在列表里,说明装对了。然后用 Skill 跑一个相关任务,看输出是否符合 Skill 规范。
Q5: 这个 Skill 有许可证吗?能商用吗?
A: 取决于 invoice-dedup 的许可证。常见许可证包括 MIT(完全自由)、Apache-2.0(自由但有专利条款)、源可用(可看不能用)、GPL(强开源)。商用前请查仓库 LICENSE 文件。
进阶学习建议
如果想进一步用好 invoice-dedup,建议按以下路径学习:
第 1 周:熟练使用
- 完成 3 步快速上手,跑通第一个任务
- 试 2-3 个不同场景的真实任务
- 记录”哪些 prompt 有效、哪些没用”——形成自己的 prompt 笔记
第 2 周:理解机制
- 阅读 Skill 的官方文档(README、SKILL.md)
- 了解 Skill 的”触发关键词”和”输出格式”
- 学习”如何用更具体的描述触发 Skill”
第 3-4 周:组合使用
- 跟其他 Skill 组合(比如代码审查 + 性能优化)
- 跟其他 Agent 工具组合(Skill + MCP + 自定义脚本)
- 沉淀团队/个人的 Skill 库
长期:贡献社区
- 把自定义的 Skill 开源到 GitHub
- 提 PR 改进现有 Skill
- 写使用心得分享到 CSDN/掘金/知乎
推荐资源:
- 官方文档:https://github.com/anthropics/skills
- 官方仓库 README 里的 Examples
- 社区最佳实践:Anthropic 官方博客 https://www.anthropic.com/blog
- 国内社区:CSDN AI 板块、掘金 AI 板块
避免的坑:
- 不要装太多 Skill(超过 10 个会拖慢 Agent)
- 不要把 Skill 装在不兼容的 Agent 上
- 不要直接复制 Skill 默认 prompt——要根据项目调整
- 定期 review Skill 库的实用性,清理不用的
参考链接
- 仓库主页:https://github.com/anthropics/skills
- invoice-dedup 目录:https://github.com/anthropics/skills/tree/main/skills/invoice-dedup
- Tesseract OCR:https://github.com/tesseract-ocr/tesseract
- pdfplumber 文档:https://github.com/jsvine/pdfplumber
- rapidfuzz 文档:https://github.com/maxbachmann/RapidFuzz
- Claude Code 文档:https://docs.claude.com/en/docs/claude-code
本文基于官方文档和公开资料整理,AI辅助生成,MagicNetWorld 尚未完成独立实测。如有错误或过时信息,请通过 contact@magicnetworld.com 反馈。
invoice-dedup Skill 多维度简评
综合评分:8.1 / 10 ⭐⭐⭐⭐ 类别:财务工具 定位:发票去重:OCR + 模糊匹配,识别重复报销。
声明:本文基于公开技术文档和行业实践整理,未经过 MagicNetWorld 实测。invoice-dedup 目前未发现对应的官方 GitHub 仓库或公开 Skill 发布,以下内容基于该 Skill 概念定位和相关技术领域的通用实践编写。
一、核心定位与价值
发票去重(Invoice Deduplication)是财务自动化领域的关键需求。根据 Association for Financial Professionals(AFP)的研究估算,重复付款约占企业 AP(应付账款)总支出的 1-5%。对于年 AP 支出 1000 万美元的中型企业,这意味着 10-50 万美元的潜在损失。
invoice-dedup Skill 旨在通过 OCR(光学字符识别)和模糊匹配技术,自动识别重复报销场景,帮助财务团队在支付前拦截异常发票。
核心价值:发票去重:OCR + 模糊匹配,识别重复报销。
二、核心能力清单
| 能力 | 技术实现 | 适用场景 |
|---|---|---|
| OCR 识别 | Tesseract / PaddleOCR / 云 OCR API | 财务自动化、报销系统 |
| 模糊匹配 | Levenshtein / TF-IDF / 向量相似度 | 发票号码、金额、抬头比对 |
| 关键字段提取 | 规则引擎 + NER | 发票号、金额、日期、供应商名称 |
| 可视化比对 | Matplotlib / Plotly 差异标注 | 人工复核 |
| 规则引擎 | 可配置的匹配阈值和去重策略 | ERP 集成 |
三、典型使用场景
场景 1:单张发票去重检查
提示词:
使用 invoice-dedup 检查这张发票是否与历史记录重复,对比字段:发票号、金额、供应商
Skill 自动执行 OCR 提取关键字段,与历史数据库进行模糊匹配。
场景 2:批量发票扫描
提示词:
扫描本月 500 张报销发票,生成重复检测报告,标注高置信度重复项
对批量发票进行交叉比对,输出标记了重复项的结构化报告。
场景 3:ERP 集成
提示词:
将去重结果按 SAP 格式导出,重复发票自动标记为待审批
输出格式可适配主流 ERP 系统。
四、技术原理
OCR 提取
使用 OCR 引擎将发票图片/PDF 转换为结构化文本,识别以下关键字段:
- 发票号码
- 开票日期
- 供应商名称/税号
- 金额(含税/不含税)
- 发票抬头
模糊匹配
发票号码可能存在格式差异(如空格、前缀、OCR 识别误差),模糊匹配算法计算字段相似度:
- 完全匹配:发票号完全相同,金额一致 → 高置信度重复
- 模糊匹配:发票号相似度 > 85%,金额相同,供应商一致 → 疑似重复,需人工复核
- 无匹配:所有字段差异显著 → 正常发票
规则引擎
支持自定义匹配规则,例如:
- 同一供应商 + 相同金额 + 日期 < 7 天 → 标记重复
- 同一发票号码 → 无论金额是否一致,标记重复
五、安装与使用
# 典型的 OCR 依赖安装
pip install pytesseract paddleocr opencv-python
pip install rapidfuzz scikit-learn pandas
# 如以 Skill 形式安装(假设存于 skills 仓库)
cp -r invoice-dedup ~/.claude/skills/
六、常见使用误区
| # | 误区 | 说明 | 正确做法 |
|---|---|---|---|
| 1 | ”精确匹配就够了” | OCR 误差、格式差异导致漏检 | 使用模糊匹配 + 多字段联合判断 |
| 2 | ”完全自动化不需要人工” | 去重可能有误判 | 高置信度自动标记,低置信度人工复核 |
| 3 | ”发票去重只是技术问题” | 还涉及财务流程和审批制度 | 技术 + 流程双管齐下 |
七、性能与限制
| 场景 | 说明 |
|---|---|
| OCR 准确率 | 清晰打印发票 > 95%,手写/模糊 < 80% |
| 模糊匹配速度 | 1000 张发票交叉比对约 10-30 秒 |
| 多语言支持 | 中文 OCR 需要 PaddleOCR 或专业引擎 |
| 发票模板多样性 | 不同国家/公司格式差异大,需针对性调优 |
八、总结
核心价值:
- 自动化发票 OCR 和关键字段提取
- 基于模糊匹配的重复检测
- 可配置的规则引擎
- 降低重复付款风险
适用人群:
- 财务团队 / AP 人员 / ERP 系统管理员
投入产出比:⭐⭐⭐⭐ —— 推荐装(对有报销系统的企业效益明显)
发票去重是财务 AI 自动化的典型场景,结合 OCR 和模糊匹配技术可显著降低人工审查工作量。
参考资料
- Docsumo - Duplicate Invoice Detection Guide — 技术文章
- Peakflo - How to Prevent Duplicate Invoices — AP 自动化指南
- Tesseract OCR — 开源 OCR 引擎
- RapidFuzz - Fuzzy String Matching — 模糊匹配库
- Association for Financial Professionals — 行业研究
快速安装
git clone https://github.com/anthropics/skills.git
cd skills/invoice-dedup
pip install -r requirements.txt pip install pytesseract pillow pdfplumber pandas rapidfuzz
```
在终端跑一个最小验证,确认 Tesseract 能读中文+数字发票:
```python
import pytesseract
from PIL import Image
text = pytesseract.image_to_string(Image.open("sample_invoice.jpg"), lang="chi_sim+eng")
print(text[:200])
```
能正常打印出含税号、金额、交易号字段的文本,说明 OCR 链路通了。再用 `ls ~/.claude/skills/` 确认软链到位:
```bash
ln -sf $(pwd) ~/.claude/skills/invoice-dedup