一个月几百张回单,靠人一张张认,问题不在于慢,在于认错的成本远高于慢。一张回单认错客户,后面所有的账都跟着错,而且看不出来。
自动匹配不是"用 AI 猜",而是一套有优先级的规则 + 一条硬性拒收线。
回单里最可靠的字段不是金额,是收款账号——它是唯一的,一个账号基本只对应一个客户或一个主体。
做法:维护一张「资金账户表」(账号 → 客户/主体),回单一进来,先用收款账号查表。
这一条是整个流程的生死线:账号命中不了的回单,绝不进入匹配环节。让它挂着,也不要让它进账。
客户确定了,再在这个客户的单据里找:
关键:允许挂起,不允许模糊匹配。「差不多是这个数」是最贵的判断。
一张回单认领成功,至少要回写四个字段:
| 字段 | 为什么必须有 |
|---|---|
| 到账日 | 红线倒计时的起点 |
| 到账金额 | 与开票金额比对,识别差额 |
| 回单文件 | 凭证,后续要能调出来 |
| 匹配依据 | 按账号?按金额?以后出问题能复盘 |
"匹配依据"这个字段很多人不写,结果三个月后没人说得清当时为什么这么认。
付款方名称经常和合同主体不一致——集团代付、分公司付款、第三方代付都很常见。名称只能做辅助校验,不能做主键。
同一个客户同时有两笔同金额的单子很常见(尤其是固定服务费的月度单)。金额相同,必须再用日期或单号区分。
银行回单上写"交易成功",指的是这一笔转账动作成功了。但你要核的是这笔钱对应哪张票、这个客户的服务费是否已收齐——两件事。
我们的教训:有客户的服务费在银行回单上显示交易成功,但台账里记着"待核实",两边的判断标准不同。最后是拿发票号反查才对上的。
不同银行的回单版式不一样。工行的「电子回单」是单栏竖排,标签自带前缀(如"收款方账号");很多解析器只认左右分栏,遇到竖排就一个字都取不出来。
判断方法:拿不同银行各一张回单试,只要有一种取不出收款账号,这个解析器就不能上线。
很多下载接口给的文件 ID 前几位是固定前缀,如果直接拿它当文件名,会重名;系统发现"文件已存在"就跳过下载,却照样记为已处理——图就永久丢了,而且日志里一切正常。
做法:文件名用全长哈希,下载完校验文件大小不为 0。
| 检查项 | 合格标准 |
|---|---|
| 每张回单都能定位到客户 | 无"客户未知"回单 |
| 账号命中不了的被拒收而不是硬塞 | 拒收清单可查 |
| 同客户的重复金额能区分 | 有日期/单号二次判据 |
| 每笔认领都记录了匹配依据 | 三个月后能复盘 |
| 多银行版式都能取到收款账号 | 至少覆盖常用 3 家 |
文中细节来自我们自己系统的实现(截至 2026-10-19)。