第54课 · 银行流水合并核对 skill
每个月最头疼的事之一:银行流水核对。一对一好办,但一笔账对应好几笔银行流水(一对多)、好几笔流水凑成一笔账(多对多)的时候,靠肉眼和 Excel 手工对,半天就过去了。而且每个银行的流水格式还不一样,先合并再核对,又是几个小时。
这节课分享一个 skill——把以前用效率工具做的银行流水合并和核对,改造成 AI 直接调用的 skill。你只需要把文件路径发给它,它自己探查格式、写配置、跑脚本,几分钟出一份核对底稿,匹配率能做到 99%。
本节要点
- 一个 skill 做两件事:多银行流水合并成统一格式 + 银行流水与序时账核对
- 核心思路是模拟人类会计的核对顺序:先认人(交易对手)、再看事(摘要)、最后才凑数——纯凑数排列组合太多,电脑也算不动
- 序时账必须给完整的:含往来科目和客商辅助核算,这是匹配率 90%+ 的前提
- AI 会先预检查再动手:看格式、列名、银行科目分布、有几个账户,然后写配置运行——不检查直接对,结果没意义
- 交易对手用模糊匹配核对:客商名称不规范,所以用 RapidFuzz;想更准可以升级成 Embedding 模型
- 核对底稿怎么读:匹配状态、匹配编号、匹配类型(1-9 层 + AI 复核)、交易对手是否一致
- 数据安全:全量数据由本地代码处理,AI 只读表头前 5 行和表尾几行,文件不会上传
1. 为什么银行流水核对这么麻烦
银行流水核对这事,按难度分三档:
| 难度 | 场景 | 说明 |
|---|---|---|
| 一对一 | 一笔银行流水对应一笔账 | 很多年前就解决了,Excel 函数就能做 |
| 一对多 / 多对多 | 几笔流水凑成一笔账、一笔账拆几笔流水 | 这是真正的难点,也是这个 skill 重点解决的问题 |
| 多银行合并 | 不同银行流水格式不一样 | 每家银行格式不同,人工合并耗时 |
一对多、多对多为什么难?因为如果纯粹去「凑数」——找哪几笔流水加在一起等于某一笔账——排列组合的数量是天文数字,电脑计算时间会非常长,基本等于无用。
所以这个 skill 的思路不是凑数,而是模拟人类会计的核对顺序。
2. 核心思路:模拟人类会计的核对顺序
人类会计拿到银行流水和序时账,是怎么核对的?分三步:
第一步:先认人(交易对手是谁)
同一个交易对手的流水,按天、3 天、一个月去尝试合并,然后和序时账对。因为会计要么是多笔打款记了一笔账,要么是一笔账拆成多笔流水——同一个交易对手合并起来对,大多数都能对上。
第二步:再看事(摘要)
有些情况交易对手对不上,但摘要是能对上的。比如第三方代付:对方账户不一样,但摘要(用途)一致。这时候按摘要合并去对。
第三步:最后才凑数
前两步都解决不了的,才用金额组合去凑。
这个顺序的关键在于:核对必须对交易对手。如果不对交易对手,只看金额,这个工具其实是无用的——金额对上了没有意义,你就是要看这笔钱是不是从正确的客户/供应商那里来的。
3. 数据准备:序时账必须完整
使用这个 skill 之前,先检查你的序时账:
- 必须带客商信息。银行流水里的交易对手(对方户名)是准确的,但序时账里要通过客商提取公司名称——而银行存款的对方科目是往来科目,往来科目就有辅助核算项(客商)。
- 所以你要给的是整个序时账,不要只保留银行存款的行,往来科目的行也要留着(里面带着客商辅助核算)。
有客商信息,匹配率 90%+;没有客商,匹配率直接掉到 30-50%。这是这个 skill 最重要的前提。
3.1 手上只有 PDF 对账单/回函,没有 Excel 怎么办
很多同学卡在这一步:银行只给 PDF 对账单,函证回函也是五花八门的 PDF,手工录进 Excel 又慢又容易乱(群友实测:PDF 转 Excel 经常错位乱行)。
四条路线,从简单到复杂:
- 简单表格单据 → 用 mineru skill(第 7、8 课学的那个)。标准格式的银行对账单、结构规整的表格,mineru 提取转换效果就很好。
- 函证回函 → 审计工具箱的关键信息提取功能。银行函证回函格式五花八门,直接转 Excel 很容易乱,审计工具箱做了专门优化,能较好提取出 14 项回函内容。
- 复杂单据 → 调用视觉模型。扫描件、表格嵌套、格式混乱的单据,把 PDF 截图发给支持看图的 AI(第 22、23 课讲过怎么配识图),让它读图输出结构化数据。
- 扫描版 PDF → 千问网页版应急(https://www.tongyi.com/discover/convert),直接在线转 Excel,不用装任何东西。但这个功能快下架了,而且群友实测不太稳定,只能应急。
这些转出来的 Excel,就是上面说的「银行流水」输入文件,可以直接拿去合并、核对。
4. 动手演示一:合并
先看合并。把多个银行的流水文件放进一个文件夹,打开 AI,让它调用这个 skill:
请把这个文件夹下的银行流水进行合并
它会自动识别流水文件的格式(每家银行格式不一样,它都能读),然后执行合并脚本,输出一个统一 12 列标准格式的 Excel——包含银行、账号、交易日期、金额、对方户名、摘要等核对需要的字段。
支持的情况:
- 同一个银行的多个文件
- 不同银行的流水(多个银行也能合并)
5. 动手演示二:核对
核对需要两个文件:银行流水 + 序时账(带客商的完整序时账)。把两个文件路径发给 AI:
请帮我将这两个文件进行银行流水核对
AI 的执行过程:
- 判断任务类型:合并还是核对?(只给一份流水一份序时账 → 直接核对,不需要合并)
- 预检查:读文件格式、列名、前几行样本、银行科目分布、是否多个公司主体。检查你的流水和序时账匹不匹配。
- 写配置:根据探查结果,按参数规范自动填好配置文件。
- 运行核对脚本:执行 9 层递进匹配,输出核对底稿。
多账户场景:如果序时账里有 12 个银行账户、流水只有 1 个,AI 会先问你核对哪一个账户——你回答「请核对农行账户」就行。它会自动把序时账里该账户的流水筛出来对,不然对出来的大部分都对不上。多个银行账户也支持:多份流水文件或者放一起都行。
日期范围场景:如果序时账含 7 月的记录、银行流水只到 6 月 30 日,限定一下日期范围,AI 就只核对该时间段,避免 7 月那几笔全部变成未匹配。
前面这些动作——探查、判断、写配置——就是 skill 里说的「预检查」。这是必要的:你直接啥都不管让它对,那是不合适的。
6. 这个 skill 内部长什么样
打开 skill 文件夹,结构很简单:
bank-flow-reconciliation/
├── SKILL.md ← 一段话,操作流程
├── references/ ← 参数配置详解、AI 复核流程说明
└── scripts/ ← 三个 Python 脚本
├── bankflow_precheck.py 预检查
├── bankflow_merge.py 合并
└── bankflow_reconcile.py 核对SKILL.md 就是一段话,里面写清楚操作流程分几步:第一步判断任务类型、第二步执行预检查、第三步写配置文件、第四步运行脚本。AI 照着这段话执行就行。
references 里记录了参数配置的详解——因为核心是内置的 Python 代码,代码怎么填参数以前都是人去写,现在相当于让 AI 读表结构、按参数规范帮我们填参数。
scripts 里是三个 Python 脚本,核心的核对脚本大概 2000 行代码,是经过很多项目实践检验的,准确率非常高。
自己也能写
这种 skill 完全是可以自己写的——把你以前用效率工具做的活,整理成「一段话流程 + 参数说明 + 脚本」,就是一个 skill。这节课主要是分享这个成品。
7. 交易对手是怎么核对的
银行流水里交易对手(对方户名)是准确的,但序时账里从客商提取出来的公司名称不一定规范——多一个字、少一个字、叫法不一致很常见。
所以核对用的是模糊匹配函数(RapidFuzz,还有另一个库做备选,哪个能用用哪个)。模糊匹配执行效率高,但没那么精准,可能误报——所以匹配结果里交易对手不一致的,你仍然要去人工检查一下。
想更准?升级成 Embedding 模型:
如果你不想人工看交易对手,可以让 AI 改一下 skill 的代码,把模糊匹配换成 Embedding 模型:
- 本地部署:Ollama 上下载一个 900M 的 Embedding 模型
- 在线免费:硅基流动提供了免费的 Embedding 模型 API
让 AI 改代码,交易对手核对用 Embedding 模型去算相似度——准确率会高很多,基本不需要人再去看交易对手了,效率也不会降太低。
8. AI 复核(可选)
核对跑完后,如果未匹配的记录在 500 条以内,AI 会问你要不要进行 AI 复核:
当前匹配率:金额 99.1% / 条数 97.3%,未匹配 155 条。是否进行 AI 复核?
选择复核的话,AI 会以 agent 的方式逐条读未匹配的数据,判断能不能匹配上,能匹配的写入底稿(匹配类型标记为「AI 复核」)。
但完全可以不用 AI 复核——匹配率已经 90%+ 的时候,剩下的几十条交给会计人工看反而更快,他们有业务上下文。自动复核反而是浪费。
9. 核对底稿怎么读
底稿是一个 Excel,分两块看:
摘要信息(最上面):账户流水金额、序时账借贷方金额、条数、匹配率。
核对明细:
- 基础信息:公司主体和账号——支持多公司、多账号一起核对
- 匹配状态:已匹配 / 未匹配。155 条未匹配是正常的,重点看它们
- 匹配编号:相同编号的是一起的——比如多借多贷、有多行分录,同一个编号一一对应
- 匹配类型:1 到 9 的九个匹配维度,数字越小置信度越高;最后还有 AI 复核标记
- 交易对手一致性:银行流水对方户名 vs 序时账辅助信息里的客商,一致/不一致。不一致的一定要人工核对
辅助信息栏里,交易对手就是从序时账往来科目或者摘要里提取出来的,拿来和银行流水的对方户名对。
未匹配怎么处理:看未匹配的部分——银行流水有、序时账没有的,或者反过来序时账有、流水没有的,拿出来看看。其中很多是小额费用类的,小额的一般可以不用管。
10. 数据安全
使用的时候不用担心数据安全问题:它不会把所有数据发给 AI。
- AI 只读序时账和银行流水前 5 行的表头,以及后几行的表尾
- 其他所有处理全部由本地 Python 代码完成
- 文件本身不会发给 AI
所以拿着客户数据用也可以比较放心。
配套文件
这个 skill 的文件(SKILL.md + references + scripts)在课程配套的百度网盘里,找到「银行流水核对 skill」文件夹下载即可。把文件夹放到你的 skills 目录,就可以像视频里一样直接调用。