From legal-skills
Organizes invoice/expense PDFs (e.g. VAT invoices, rail e-tickets, hotel receipts) by buyer name, archives them into project directories, and generates reimbursement or expense reports. Use when a user needs to sort receipts, match them to projects, or produce a spending summary.
How this skill is triggered — by the user, by Claude, or both
Slash command
/legal-skills:invoice-organizerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
读取一批发票 PDF 的结构化信息,向上回溯项目上下文填补事由,归档到对应项目,并出具清单(默认报销清单,可切换为消费清单、对账流水等其他形态)。
读取一批发票 PDF 的结构化信息,向上回溯项目上下文填补事由,归档到对应项目,并出具清单(默认报销清单,可切换为消费清单、对账流水等其他形态)。
不适用:发票的法律/税务合规审查、作为诉讼证据的实体分析、PDF 物理处理(合并/压缩/页码)。
优先用 pdftotext(poppler)提取文本层,电子发票大多自带文本层,开箱即用:
pdftotext -layout "发票.pdf" -
批量提取多个 PDF 用本 skill 脚本(自动分隔、缺失依赖给提示):
python3 scripts/extract_invoice.py 发票1.pdf 发票2.pdf 发票3.pdf
# 或传一个目录
python3 scripts/extract_invoice.py ~/Downloads/
若 pdftotext 无文本输出(扫描件/图片型发票),降级到 OCR:调用 legal-ocr 或 pdf skill。
从文本中解析每张发票的核心字段,识别要点见 references/invoice-field-guide.md。常用类型速查:
| 发票类型 | 必抓字段 |
|---|---|
| 铁路电子客票 | 发到站、车次、日期、票价、乘车人、购买方、发票号 |
| 增值税普通发票(住宿/餐饮/服务) | 购买方、销售方、项目、金额、税额、价税合计、发票号、开票日期 |
无法确认的字段标注"待人工确认",不臆测。
按**购买方名称(发票抬头)**判断这批发票归属哪个项目:取购买方全称在工作文档库中检索匹配的委托人/客户;同抬头的发票归同一项目;无法匹配时向用户确认,不擅自归档。
从发票所在位置(或拟归档位置)向上回溯,读取所属项目的信息文件,用于填补清单"报销信息"表的事由/案号/日期/路线/报销单位:
python3 scripts/find_project_context.py "发票所在目录或文件路径"
识别与提取要点见 references/project-context-guide.md。核心映射:
| 清单字段 | 项目上下文来源 |
|---|---|
| 事由 | 项目/案件名称 + 触发出行的事件 |
| 案号 | 项目信息.md 的"法院案号" |
| 日期 | 与发票业务日期匹配的项目时间线事件 |
| 路线 | 事件地点(如法院所在地)↔ 常驻地 |
| 报销单位 | 委托人/客户(与发票购买方交叉验证) |
| 出差人 | 承办律师/项目出差人员 |
把发票业务日期与项目时间线对照,推断本次出行事由(如发票 06-15~17 + 项目"06-16 石家庄开庭" → 事由"赴石家庄参加第一次开庭")。无法从上下文确认的,向用户核实,不臆造。
确定归属项目后,把发票复制(不移动,保留原件)到该项目的报销子目录:
报销/(默认;差旅等可进一步子分类,如 报销/差旅/)YYMMDD 类型 摘要 [人名].pdf
260615 高铁票 苏州北-石家庄 G1220 张某.pdf260615-0617 住宿费 石家庄XX酒店.pdf260620 餐饮费 XX餐厅 部门聚餐.pdf读取的发票信息可生成多种清单——报销清单(默认),也可按需输出消费清单、对账流水、按月汇总等。用户未指定时默认出具报销清单。模板与命名规范见 references/output-template.md。
默认输出风格(除非用户另行要求):
序号 | 日期 | 类型 | 摘要 | 金额(元) | 发票号,末行合计YYMMDD 报销清单.md(YYMMDD 为预计发送日期,询问用户,无则取当天)完成一次发票整理后,按下述门控自检。任一 Hard Fail 命中即判定本次输出不合格,不可交付。
cp 复制,禁止 mv 移动或删除原件YYYY-MM-DD;归档文件名与清单"日期"列用业务日期(非开票日期)YYMMDD 报销清单.md(YYMMDD 为预计发送日,已询问用户)输入:2 张发票(1 张高铁票 + 1 张住宿费),购买方为同一公司,业务日期落在某案件"XX 开庭"时间线前后。
应产出:
报销/ 子目录不在本 skill 验收范围:OCR 识别精度本身(扫描件降级到 legal-ocr)、发票真伪、税务合规判断。
| 依赖 | 安装方式 |
|---|---|
poppler(提供 pdftotext) | macOS: brew install popplerLinux: sudo apt-get install poppler-utils |
仅"文本提取"需要 poppler;文本层缺失时改用 OCR skill,不强制安装。scripts/find_project_context.py 仅用 Python 标准库,无需安装。
pdftotext 无文本层时,用其 OCR 能力识别扫描件/图片型发票npx claudepluginhub cat-xierluo/legal-skills --plugin transcription-correctorOrganizes invoices, receipts, and financial documents from PDFs, images, scans, and emails into categorized folders by vendor, expense type, date, or tax category. Extracts vendor, date, amount, and description for renaming and CSV export.
Organizes messy invoice/receipt folders by extracting vendor/date/amount from PDFs/images, renaming to YYYY-MM-DD Vendor-Invoice-Product format, and sorting by vendor/category/year. For tax prep and bookkeeping.
Reads messy invoice/receipt files, extracts vendor/date/amount, renames consistently, and sorts into folders by category or vendor. Useful for tax prep, expense reconciliation, and bookkeeping automation.