目录

审计报告检查功能发布

/images/audit_checker_cover.png

上个月我写了两篇文章,一篇讲想法,一篇讲踩坑。

今天这篇讲结果:审计报告检查器,做好了。

丢一个 PDF 进去,点一下"开始检查",它会自动解析报表、建附注索引、跑勾稽规则,最后告诉你哪些数字对不上。

不用配置,不用写公式,不用一页一页翻。

它能查什么

/images/audit_checker_demo.png

七类检查,覆盖审计报告里最容易出错的地方。

报表间勾稽——资产总计是不是等于负债加所有者权益,利润表的净利润和资产负债表的未分配利润对不对得上。纯数字比对,代码直接算,零误差。

报表与附注勾稽——合并报表上的应收账款 3.2 亿,附注里应收账款的账面价值合计也是 3.2 亿吗?报表端代码取值,附注端 AI 定位。

附注科目内勾稽——固定资产的原价减累计折旧减减值准备,等不等于账面价值?同一个科目的附注页面里,两端都靠 AI 找数字。

附注跨科目勾稽——信用减值损失里的应收账款坏账损失,和应收账款附注里的本期计提金额对不对得上?跨科目交叉核对。

[!提示] 以上 4 种数据勾稽用户可以自定义规则(软件内置 147 条规则)。 以下 3 种校验不需要配置规则,AI 自主分析检查。

表内校验——AI 分析每个表格的结构,自动识别合计行和明细行的竖加关系、行内的横加关系(比如"账面余额 - 坏账准备 = 账面价值"),然后代码精确验算。(不用用户配置规则)

格式检查——页眉是不是每页都一样,页码有没有跳号,公司名称前后是否一致。

文本检查——错别字,病句检测。

点击检查结果,PDF 自动跳转到对应位置并高亮。查完导出 Excel,摘要和明细两个 Sheet。

怎么做到的

/images/audit_checker_arch.png

上篇文章我说过,推倒重来之后的核心思路是:AI 做理解,代码做计算。

具体来说分五步:

第一步,解析 PDF。 文字页用 PyMuPDF 直接提取,扫描页渲染成图片让 AI 视觉识别。跨页表格自动合并,页眉自动检测剔除。

第二步,结构化报表。 AI 分析前 30 页,一次性定位 8 张财务报表的位置,然后逐表解析行项目——项目名称、附注编号、期末期初金额。权益变动表最复杂,文字 PDF 直接从表格数据精确解析,扫描 PDF 用 AI 视觉加二次验证。

第三步,建附注索引。 从报表的附注引用编号出发,收集所有科目名称,然后遍历附注页面匹配标题,建立"科目→页码范围"的映射。不精确拆分附注内容,只记录每个科目大概在哪几页。

第四步,跑规则。 报表间的勾稽纯代码算。涉及附注的,通过索引找到对应页面,把那几页内容发给 AI,让 AI 定位具体数字,定位完之后比较的事交回给代码。

第五步,表内校验。 AI 分析每个表格的结构,识别合计行和明细行的关系,识别横向计算关系,然后代码精确验算。

整个过程,AI 只干一件事:在一段文本里找到某个数字。比较、加减、判断,全部交给代码。

上篇文章踩的坑就是让 AI 同时找数字又做比较,出了错分不清是哪一步的问题。拆开之后,定位错了就是定位错了,计算错了就是计算错了,排查清清楚楚。

操作步骤

软件安装

打开网盘,下载两个软件:

  1. SW_Audit_Tool_Setup_v1.7.4_Full.exe
  2. tesseract-ocr-w64-setup-5.5.0.20241111.exe 第一个是 sw 审计工具箱本体,

第二个是默认安装在 C 盘,它会被调用将横向的 pdf 图片旋转正确再发送 AI,否则会 AI 识别不准确。

参数设置

打开 SW 审计工具箱,点击“参数设置” 标签页,

填写你信任的 AI 平台的 API 接口(支持通用 Openai 接口格式)

/images/Pasted-image-20260413111618.png 填写好后,点击保存设置。

打开 PDF

点击“功能列表”标签页,双击“报告核查”功能: /images/Pasted-image-20260413111800.png

/images/Pasted-image-20260413111935.png

点击"打开文件",选择你要检查的审计报告,再点击“开始检查”,等待 2-5 分钟即可出现结果,

点击对应源页码和目标页码可以跳转 pdf 对应页面进行人工复核。

规则支持自定义

/images/audit_checker_rules.png

内置的勾稽规则覆盖了资产负债表、利润表、现金流量表、权益变动表之间的交叉关系,以及常见科目的附注披露。

但不同行业、不同公司总有特殊情况,所以规则支持自定义。你可以在"规则编辑"标签页里加自己的规则,语法很简单:

source_scope: 合并资产负债表
source_item: 流动资产合计 + 非流动资产合计
operator: =
target_scope: 合并资产负债表
target_item: 资产总计

项目名称支持公式(用 +- 连接),支持时期后缀(-本年数-上年数),权益变动表支持 行【行名】 列【列名】 定位单元格。

不同公司的项目名称可能不一样,“所有者权益"和"股东权益”、“股本"和"实收资本”,工具会自动做同义词匹配,匹配不上的还有 AI 语义匹配兜底。

/images/Pasted-image-20260413112127.png

检查结果怎么看

三种状态:

符号 含义 说明
通过 两端数值一致
警告 AI 没找到对应数值,可能是公司没有这项业务
不通过 数值不一致,需要人工核查

警告不代表有问题。比如一家公司没有存货减值,对应的规则就会报"定位失败",这是正常的。

不通过才是需要关注的——要么报告里真的有数字错误,要么是 AI 定位偏了(比如取错了本年和上年的列)。

实际测试下来,报表间勾稽的准确率接近 100%,因为纯代码计算。涉及附注的规则,准确率取决于 AI 定位的质量,大部分情况下没问题,复杂表格偶尔会偏。

还有什么不足

说几个已知的局限:

扫描件的表格识别依赖 AI 视觉模型,复杂表格可能出现列错位。权益变动表的多行表头、合并单元格,是重灾区。

AI 定位附注数值有时候会取错列,尤其是本年和上年挨得很近的时候。

表内校验还有一些误报,表格中有复杂的逻辑关系的时候目前会有误报。

规则覆盖不可能穷尽所有情况。不同行业、不同公司的特殊披露,需要自己加规则。

这些问题我都在持续改进。但即便有这些不足,自动跑一遍,总比人工一条一条翻要靠谱得多。

( 备注:我仅测试了两三家事务所的报告格式,不保证所有事务所的格式都能使用 )

最后

这个检查器不是要替代人工检查。因为它目前并不能完全精准,也不能完全检查完所有东西。

它是报告在打印前的最后一步工序,排查出最低级的错误。

工具已经集成在 SW 审计工具箱中,更新到最新版本即可使用。

下载链接

https://pan.quark.cn/s/1b41087e4ec6