发票核查及入账
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_2b90cc5b/invoice-check-and-entry-free。
技能介绍
这个技能解决什么问题
每月发票入账时,财务或运营同学手里通常有两样东西:一堆 PDF 发票,和一份持续维护的「发票清单.xlsx」。人工核对发票号码、把命中的行填上入账日期、再整理一份给税务系统的明细,步骤重复但容错率低——漏填一行、日期格式写歪一次,整批都要返工。
这个技能把这条链路拆成两步脚本:先从 PDF 提取字段生成 Excel,再按发票号码与清单批量匹配、回填日期,并额外产出一份列布局与税务系统导出文件一致的入账明细。
它如何工作
- 提取:
scripts/extract_invoices.py接受单个 PDF 或整个文件夹作为--source,解析发票类型、发票号码、开票日期、购销方名称与纳税人识别号、项目名称、不含税金额、税率、税额、价税合计,输出 14 列的发票提取结果_YYYYMMDD.xlsx。一个 PDF 多页多发票时按页分别提取;解析不出发票号码的文件会列出警告,而不是静默跳过。 - 匹配与回填:
scripts/verify_invoices.py以发票号码为键(仅保留数字后比对)与清单匹配。命中的行在C 列写入当天日期,格式固定为yyyy-mm-dd;若 C 列已是当天日期则跳过,因此重复运行是幂等的。未匹配的发票在提取结果的「备注」列标注"未匹配"。默认行为会先把清单备份为发票清单_备份_YYYYMMDD_HHMMSS.xlsx,可用--no-backup关闭。 - 入账明细报告:匹配成功后默认生成
发票入账明细_YYYYMMDD.xlsx,固定 20 列,列布局与税务系统导出文件(如「入账标识6.24.xlsx」)完全一致,空白列保留不删除。脚本只填写入账状态(默认「已入账(企业所得税税前扣除)」,可用--account-status覆盖)和入账时间,其余列全部取自清单匹配行的原值,没有的内容留空、不自行补全。
默认列布局假设清单中 G 列是发票号码、J 列是开票日期、C 列是入账时间。列布局不同或清单位于特定工作表时,用 --number-col、--date-col、--sheet 覆盖。
适用边界
- 只处理文本型 PDF。扫描件或图片型发票没有文本层,需先做 OCR(如 tesseract + pdf2image)转成文本 PDF,否则提取结果为空。
- 匹配键只有发票号码,不含发票代码、校验位或价税合计的交叉校验。清单中若存在同号重复记录,需要先自行清理。
- 明细报告不做数据补全:清单里缺失的字段一律留空,技能不会推测或填充。
- 运行环境需要 Python 3.10+ 以及
pdfplumber、openpyxl。脚本以绝对路径调用,也可直接python scripts/xxx.py。完整字段说明、匹配规则与排错表见技能内的references/workflow.md。
使用场景
- 月底收到一批 PDF 发票,需要提取关键字段并与现有发票清单逐条核对。
- 发票清单 C 列还是空的,要把已确认收到的发票批量填上当天入账日期。
- 税务要求提供固定 20 列的入账明细,需要从发票清单匹配行直接生成文件。
- 发票存放在文件夹里,需要一次性提取全部发票并标注出未匹配的记录。
适合人员
- 负责月结的财务,需要把 PDF 发票与发票清单核对并完成入账。
- 财务共享中心的运营,要批量处理发票清单并输出税务明细。
- 管理发票台账的会计助理,希望减少手工复制粘贴与日期录入。
- 为财务搭建自动化流程的开发者,需要可脚本化的发票处理步骤。