Skip to content

第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 经常错位乱行)。

四条路线,从简单到复杂:

  1. 简单表格单据 → 用 mineru skill(第 7、8 课学的那个)。标准格式的银行对账单、结构规整的表格,mineru 提取转换效果就很好。
  2. 函证回函 → 审计工具箱的关键信息提取功能。银行函证回函格式五花八门,直接转 Excel 很容易乱,审计工具箱做了专门优化,能较好提取出 14 项回函内容。
  3. 复杂单据 → 调用视觉模型。扫描件、表格嵌套、格式混乱的单据,把 PDF 截图发给支持看图的 AI(第 22、23 课讲过怎么配识图),让它读图输出结构化数据。
  4. 扫描版 PDF → 千问网页版应急https://www.tongyi.com/discover/convert),直接在线转 Excel,不用装任何东西。但这个功能快下架了,而且群友实测不太稳定,只能应急。

这些转出来的 Excel,就是上面说的「银行流水」输入文件,可以直接拿去合并、核对。

4. 动手演示一:合并

先看合并。把多个银行的流水文件放进一个文件夹,打开 AI,让它调用这个 skill:

请把这个文件夹下的银行流水进行合并

它会自动识别流水文件的格式(每家银行格式不一样,它都能读),然后执行合并脚本,输出一个统一 12 列标准格式的 Excel——包含银行、账号、交易日期、金额、对方户名、摘要等核对需要的字段。

支持的情况:

  • 同一个银行的多个文件
  • 不同银行的流水(多个银行也能合并)

5. 动手演示二:核对

核对需要两个文件:银行流水 + 序时账(带客商的完整序时账)。把两个文件路径发给 AI:

请帮我将这两个文件进行银行流水核对

AI 的执行过程:

  1. 判断任务类型:合并还是核对?(只给一份流水一份序时账 → 直接核对,不需要合并)
  2. 预检查:读文件格式、列名、前几行样本、银行科目分布、是否多个公司主体。检查你的流水和序时账匹不匹配。
  3. 写配置:根据探查结果,按参数规范自动填好配置文件。
  4. 运行核对脚本:执行 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 目录,就可以像视频里一样直接调用。

© 2025 逆行的狗