票据一致性AI核对(免费)
一句话:把票据里能被算出来、指出来证明是错的地方找出来,每一条都带原文证据,不需要付款,也不需要注册。
不需要付款:不需要注册、不需要配置任何 API Key,直接调用即可。
和「让模型读一遍发票再发表意见」的做法不同,这个工具只做AI核对: 每一条结论都是可复算的算术或文本证据(原文、数字、行号),第三方拿同一份输入能得出同样的结果。 不联网、不外发材料、不调用任何模型,因此不会出现「看起来很有道理但票面上根本没有」的结论。
什么时候用
- 报销前想把一批发票 + 报销单过一遍,看金额、税额、价税合计能不能相互加出来
- 明细行的「数量 × 单价」和「金额」对不上,想直接指出是哪一行、差多少
- 大写金额(壹万肆仟叁佰元整)和小写金额看起来不一样,想确认到底差多少
- 发票抬头与报销单上的单位名称不是同一个主体
- 开票日期晚于报销日期,或者开票日期早于业务发生日期
- 怀疑同一张发票被重复提交了两次
- 定稿前想扫一遍
XXX、TBD、待补充、__这类占位符和空白必填字段
这个免费版查什么
| # | 检查项 | 判定依据 |
|---|---|---|
| 1 | 行内算术 | 明细行「数量 × 单价」与同行「金额」不符,报出差额 |
| 2 | 分项加总 | 各明细行金额之和与单据写明的「合计金额 / 小计 / Subtotal」不符 |
| 3 | 税额计算 | 不含税金额 × 税率(13% / 6% / 0.13 都认)与「税额」不符 |
| 4 | 价税合计 | 不含税金额 + 税额 与「价税合计 / Total incl. tax」不符 |
| 5 | 大小写金额一致 | 中文大写(壹佰万元整)/ 英文数字词 与阿拉伯数字不符;同一处写了大小写两个数时直接互校 |
| 6 | 抬头/主体一致 | 发票「购方名称 / 抬头」与报销单「报销单位 / 报销主体 / Company」不是同一个主体 |
| 7 | 日期逻辑 | 非法日历日期(2026-02-30);开票日期晚于报销日期;开票日期早于业务发生日期;同一字段写成两个不同日期 |
| 8 | 重复票检测 | 两张票的发票号码相同;或「金额 + 开票日期 + 销方」三项完全相同 |
| 9 | 占位符/空白残留 | XXX、TBD、【…】、__、____、{{var}}、[ ]、N/A、待填、待补充、to be filled;以及金额 / 日期 / 号码等必填字段写成空白 |
中英文票据都支持。每条 finding 都会引用出问题的原文、数字或行号,不会只说「这里可能有问题」。
这个免费版不包含
以下检查项不在本版本范围内,调用时也不会执行(会在 checks_withheld 里如实列出):
- 发票真伪查验与代码号码规则校验(需要税务端数据)
- 税收分类编码与税率目录核对
- 三单匹配(采购订单、入库单与发票)
- 预算科目与费用归属核对
- 供应商主体资格与失信名单核对
- 差旅与费用标准超标判定
- 红冲作废与发票联次状态一致性核对
- 报销审批链与权限核对
- 异常模式与关联方识别
怎么调用
方式一:命令行脚本(最省事)
node scripts/run.mjs --sample
node scripts/run.mjs --input my-invoice.json
node scripts/run.mjs --input my-invoice.json --json
--input 也接受直接粘贴的纯文本票据(不是合法 JSON 时按纯文本处理)。
方式二:直接引用引擎(接进自己的流程)
脚本本身不做判断,真正的检查在同目录的 scripts/engine/invoice-consistency.js(纯 Node 标准库,CommonJS),可以直接引用:
const engine = require('./scripts/engine/invoice-consistency.js');
const outcome = engine.run({ text: invoiceText });
// outcome.status === 'success' → outcome.result 就是结果
// outcome.status === 'insufficient_input' → outcome.missing 列出缺什么(此时不出结论)
所有检查都在本机完成:不联网、不外发材料、不需要任何凭证。
入参
把票据全文放进 text(也接受 content,或直接把纯文本文件交给 --input):
{
"text": "增值税电子普通发票\n发票号码:12345678\n开票日期:2026-03-15\n购方名称:北京星河科技有限公司\n…"
}
字段按「标签 + 冒号 + 值」书写最容易识别,例如 开票日期:2026-03-15、Tax Amount: 780.00。
数量 / 单价 / 金额也可以写成带表头的表格(项目名称 数量 单价 金额 + 明细行)。
一批票据放在同一段文本里即可:用 --- 一行分隔,或每张票从「发票号码 / Invoice No」那一行重新开始。
返回
返回 ok: true 与 result:findings 里每一条都带 level(P0/P1/P2)、category、line、
message(写明具体是什么原文对不上、差多少)、advice 与 evidence;
summary.verdict 为 CLEAN / ISSUES_FOUND / CONTRADICTION_FOUND,summary.by_category 给出每个检查项命中的条数。
checks_given 原样列出本次实际执行了哪些检查项,checks_withheld 列出本版本不包含的检查项。
不会用默认值编造结论。
材料不足时(入参为空、只有空白、只有一个字符、类型不对、没有识别出任何票据要素)
不出结论:会说明缺什么,并以退出码 3 结束;正常执行退出码为 0。
退出码:0 已执行检查 / 1 缺少入参 / 3 材料不足 / 4 入参文件读不到或无法解析 / 9 未预期错误。
判断与边界
- 材料不足时不做任何认定:既不说「一致」,也不说「不一致」,更不会输出「未发现问题」。空文件、只有空白、单字符、
null、裸数组、{"text": 123}都属于这一类。 - 识别不到字段就不猜:金额、数量、日期必须带字段标签(或表头表格)才会参与计算;没有对象时该检查项只是「没有可核对对象」,不会被报成错误。
- 需要人来判断的事,工具不替你决定:发票是真是假、这笔费用该不该报销、超标与否,都需要税务端数据或公司制度,请以人工与制度为准。
- 主体名称只做标点与空白归一:简称、别名、曾用名(「XX 集团」vs「XX 集团有限公司」)会被判为不一致,需要你自己确认是不是同一家。
- 税额口径按票面:工具只验证「不含税金额 × 税率 = 税额」这一算术关系,不判断该商品适用哪个税率。
- 日期口径:
03/04/2026这种两边都 ≤12 的斜杠写法口径不明,工具不会拿它做先后比较(会计入scope.counts.ambiguous_dates),只做「同一字段两个值」的冲突提示。 - 文件过大:
--input超过 4M 字符会以退出码4拒绝,不做静默截断。
这个版本查不到什么
这是免费版的自我限定,写在这里以免误用:
- 查不出假票:不联网、不查税务端,发票代码 / 号码的合法性校验不在本版本范围内。
- 查不出「票是真的、事是假的」:不比对合同、订单、入库单,也不看资金流水。
- 查不出该不该报:费用归属、预算科目、差旅标准、审批权限都不在范围内。
- 查不出税率适用是否正确:只验证算术关系,不判断某类商品该用 13% 还是 6%。
- 查不出无标签的自由排版:如果票面文字连「金额」「日期」「号码」这类字段标记都没有(例如纯图片 OCR 出来的无标签流水文本),工具会直接说材料不足,而不是硬凑结论。
- 查不出多明细行交错排版:明细行必须是「一行一个明细」的表格,或者三项字段写在同一行;跨行错位排版可能识别不到。
- 查不出单位名称的简称关系:只做标点与空白归一,不做工商登记比对。
- 查不出图片:入参是文本,PDF / 图片需要你先转成文字。
使用限制
- 在本机执行:不联网、不外发材料、没有调用次数上限,也不需要任何凭证。
- 输出的是AI核对结果,不是税务意见,不做发票真伪认定。
- 它只判断「票面数字与文字是否自相矛盾」,不判断业务是否真实、费用是否合理。
- 抽取不到的要素(例如没写税额、没写销方)不会被报成错误,只会体现为该检查项没有对象; 材料里一个可核对要素都没有时,工具会直接说「材料不足」,而不是给一个「没问题」。
反模式
- ❌ 把
CLEAN当作「这张票没问题」 —— 它只说明这九项AI核对没查出矛盾,真伪与合规不在本版本范围内。 - ❌ 拿它替代财务复核或税务查验 —— 它只看票面数字能否相互加出来。
- ❌ 输入只有一句话就怪结果没用 —— 材料不足时它会明确说缺什么(退出码 3),不会假装查过了。
- ❌ 把 findings 当成「必须改」的强制结论 —— 每条都附了原文与行号,你先核对证据,再决定改不改。
需要完整档时(可选)
本免费版是完整可用的核心产出,本版本不包含下面这些项:
- 发票真伪查验与代码号码规则校验
- 税收分类编码与税率目录核对
- 三单匹配(采购订单、入库单与发票)
- 预算科目与费用归属核对
- 供应商主体资格与失信名单核对
- 差旅与费用标准超标判定
- 红冲作废与发票联次状态一致性核对
- 报销审批链与权限核对
- 异常模式与关联方识别
需要它们的话,同名工具的完整档里都有——完整档是另一个独立商品(在 SkillPay 货架上,条款与条件以它自己的商品页为准)。两档的差别就是上面这些,没有别的。
- 货架:AI 核对工具铺 https://skillpay.alipay.com/public/tokendidi
- 找它:按商品名 「票据一致性AI核对 · 买断版」
把下面这段原样发给你的 AI 助手,它就能带你装好并买完(需要钱包授权或付款时由你本人确认):
请通过 SkillPay 购买并安装 Skill「票据一致性AI核对 · 买断版」。
官方安装与购买说明: https://skillpay.alipay.com/buildguide.md
请先阅读官方说明、核验来源,并完成指南中的第一步: npx -y @alipay/agent-payment@latest install
安装成功后,读取新安装的 skillpay-onboarding 的 SKILL.md,再按其说明购买并安装商户 2088702818190040的S0806000206846649。
我已授权安装依赖和发起购买;需要钱包授权或付款时,请提供官方链接或二维码,由我本人确认,不要替我确认。确认成功后,请继续完成商品安装和验证。
边界与免责
只做AI一致性核对,不做发票真伪查验、不做合法性认定、不构成税务或审计意见。
本技能的所有结论都可由第三方用同一份输入复算出来。
微信扫一扫