我用大模型校稿,发现个要命的事:它对表格的"理解"停留在文本层面,根本看不到数字层面的硬错。等领导把表格甩回来的时候,我才发现——一份"看似完美"的增资报告里,藏着多个数字硬错,每个都足以让集团评审毙掉。
这篇文章写给所有用 AI 校表格、改表格、写表格的人。我会告诉你:现在的 AI 表格工具在老财务面前就是小儿科,遇到复杂数字问题直接抓瞎;以及我用什么思路、什么工具把它解决了。
去年我帮一家公司做增资请示报告校稿。流程是这样的:
AI 校完说"问题不大"。领导接手后,第一句话:
"今年研发费用怎么只有 1 万元?"
我翻回去看表格——断崖 + 反弹。AI 一字没提。
更糟的是后面审计发现的:
# | 问题 | AI 是否抓到 |
|---|---|---|
1 | 某年研发费用 1 万元(暴跌 5000 倍) | ❌ 漏 |
2 | 收入小计 vs 子项差 2000 多万 | ❌ 漏 |
3 | IRR 8.5% 未含本次增资(口径错误) | ❌ 漏 |
4 | 项目成本两年口径不一(付现/权责混用) | ❌ 漏 |
5 | 备注"年均增长 30%" 实际年化 20.6% | ❌ 漏 |
5 个硬错,AI 一个都没抓到。
我事后复盘,发现根本原因是AI 看表格的方式错了:
错误做法(主流 AI 校表格的标准流程):
xlsx → 转成 Markdown 文本 → LLM 读文本 → 输出"看起来不对"的地方问题在哪:
2024 收入:0.5 亿
2025 收入:0.0001 亿
2026 收入:0.565 亿LLM 看到的是 3 行文本。它不知道 0.5 → 0.0001 是 5000 倍断崖,因为它没有"数字直觉"——它看到 0.0001 就是一个"小数字",不是"异常值"。
再比如 IRR 测算:
2026 年(T0)净现金流:-1.42 亿
...
2030 年:+0.01 亿
2031 年起转正
IRR:8.5%,回收期 8.3 年AI 看到"IRR 8.5%,回收期 8.3 年"觉得"挺合理"。但它根本不知道——本次增资 2.2 亿压根没进现金流表。这 8.5% 是"经营 IRR",不是"增资项目 IRR"。口径错误。
我跟一个做了 20 年审计的老前辈聊,他说:
"你看 Excel 表,最重要的不是算,是找关系。先看几个 sheet 页,摸清楚结构;再扫公式,看哪些是死的、哪些是活的、表和表之间怎么勾;最后逐行比对,差 1 分钱都不放过。"
他顿了下:
"说白了,Excel 就是格式化数据。按数据库处理就行了——sheet 是表,列是字段,公式是 JOIN 和 GROUP BY。"
我突然被点醒。过去 2 年我用 AI 校表格,都让 LLM "读"——读不到的就跳过。但其实我应该让它"查"——查公式、查引用、查量级。
这就是我开始做这套工具的起点。
为了搞清楚"市面上有什么",我花了 2 周调研 4 套主流方案:
流派 | 代表 | 强项 | 短板 |
|---|---|---|---|
官方派 | Anthropic xlsx skill(simonw/claude-skills 镜像) | 金融模型规范(蓝/黑/绿/红/黄五色)、公式重算 | 不查公式、不做量级校验、只验算 |
实战派 | WPS 灵犀(本地 App) | 内置 Python sandbox 跑 pandas 行级算术校验,逐行比对 v(N) vs v(N-1) 数字量级合理性 | 闭源,没法借鉴代码 |
工作流派 | davila7 spreadsheet skill | 5 步标准工作流 + 视觉检查 | 流程完整但不做数字层面的智能校验 |
方法流派 | vasilyu1983 document-xlsx(74⭐) | Do/Avoid 清单 + I/C/O(输入/计算/输出)分离 + Model Review Checklist | 方法论强,工具代码弱 |
没有任何一家把"看 → 查 → 比 → 改"四阶段 + 11 项数字规则做到一起。
更扎心的是——老财务的"逐行比对 + 差 1 分钱都不放过",主流 AI 工具一个都做不到。这就是"小儿科"的本质。
如果你接受"Excel 就是格式化数据",那所有 AI 校表格的难题都能套数据库思维解:
sheet → 表(table)
行/列 → 字段(field/column)
公式 → 视图(view)/ JOIN / GROUP BY
小计行 → SUM(子项)
跨表引用 → foreign key + JOIN
同比/环比 → window function数据库怎么查数据,AI 就应该怎么查表格。
┌─────────────────────────────────────────────────────────────┐
│ Phase 1 · 看 读懂结构 │
│ ↓ 多 sheet 摘要 + 单 sheet schema(行/列/标签/数据型) │
├─────────────────────────────────────────────────────────────┤
│ Phase 2 · 查 找关系 │
│ ↓ 找公式 → 追溯引用 → 画跨表引用图 → 分类求和 │
├─────────────────────────────────────────────────────────────┤
│ Phase 3 · 比 找差异 │
│ ↓ 11 项数字合理性自动校验 + 多版本 diff │
├─────────────────────────────────────────────────────────────┤
│ Phase 4 · 改 改内容 │
│ ↓ 批量改 + 增删 + recalc + 改完自动审计 │
└─────────────────────────────────────────────────────────────┘强顺序——不看完结构不能查关系,不查清关系没法比差异。这就是老财务的"先看结构、再扫公式、最后逐行比对",只是把它流程化、可执行化。
Phase 3 的核心是11 项确定性规则——不靠 LLM 推理,纯逻辑判断,两次跑结果必须一致:
规则 | 含义 | 抓的是 |
|---|---|---|
R1 | 小计 = 子项之和 | 漏列/重复/并入 |
R2 | 同比/环比骤变 > 10× 或跌至近 0 | 漏填/公式失效(如 0.5 → 0.0001) |
R3 | 备注 CAGR 与实际年化一致 | 备注增长率 vs 实际数 |
R5 | IRR 闭环(含初始投资) | 增资 IRR vs 经营 IRR 口径 |
R8 | 累计行单调性 | 累计逻辑错 |
R9 | 公式-缓存值一致 | LibreOffice 未跑 |
R10 | 关键字段缺失 | 必备字段缺 |
每条规则的输出都是 JSON:
{
"rule": "R2",
"severity": "🔴",
"location": "1.效益测算表!D27 (6.研发费用)",
"evidence": "C=0.5000 → D=0.000100 (暴跌至近0)",
"suggestion": "强烈怀疑漏填或公式失效,优先核实"
}关键设计:LLM 只负责"理解发现",不参与"判断对错"。这是工具和 LLM 协作的核心边界。
主流方案用 LibreOffice 重算公式。但这玩意 macOS 上不一定有、启动慢、还偶发卡死。我的方案:直接读 Excel 缓存值,不重算。代价:未跑过 LibreOffice 的文件会触发 R9 提示。99% 场景够用,且启动 < 1 秒。
我把这套思路做成了一套工具,核心包括:
excel.py(915 行)—— 4 阶段统一入口(Python 库 + CLI 双调用)numeric_audit.py(440 行)—— 11 项数字校验独立 CLISKILL.md v3.0——完整方法论 + 工具说明$ python3 excel.py audit financial_plan.xlsx
🔴=1 🟡=8 🔵=18工具 1 秒钟抓出的硬错(我之前肉眼漏看的):
🔴 R2 1.效益测算表!D27 (6.研发费用)
C=0.5000 → D=0.000100 (暴跌至近0)
💡 强烈怀疑漏填或公式失效,优先核实
🟡 R5 2.现金流及回收期
T0 列(2026 年)净现金流=-1.42,绝对值<2.5。
若 IRR 测算拟含本次增资(2.2 亿),T0 应包含该笔投资流出。结论:
对比我肉眼校稿:只抓到 3 处明显数据错误。工具多抓出 5 处。
# Phase 1 · 看
python3 excel.py sheets financial.xlsx # 列所有 sheet
python3 excel.py schema financial.xlsx "1.x" # 单 sheet 结构
python3 excel.py summary financial.xlsx # 全工作簿摘要
# Phase 2 · 查
python3 excel.py formulas financial.xlsx # 找所有公式
python3 excel.py trace financial.xlsx "2.x" D25 # 追溯 IRR 行公式输入
python3 excel.py links financial.xlsx # 跨表引用关系图
python3 excel.py catsum financial.xlsx "1.x" B C,D,E 收入 # 分类求和
# Phase 3 · 比
python3 excel.py audit financial.xlsx # 11 项数字校验
python3 excel.py diff v1.xlsx v2.xlsx "1.x" # 两版本 diff
# Phase 4 · 改
python3 excel.py apply_edits financial.xlsx out.xlsx '[{"sheet":"1.x","cell":"D27","value":0.5}]'
python3 excel.py recalc financial.xlsx # LibreOffice 重算(可选)或者作为 Python 库调用:
from excel import numeric_audit, cross_sheet_links, find_formulas
audit = numeric_audit("financial.xlsx")
# → agent 直接读 JSON 报告,零依赖 LibreOffice坑 1:C 列数据起点 bug
第一版 R2 写了 if col in ('A', 'B', 'C'): continue——把 C 列(数据起点)也跳过了。结果:
Row 27 (6.研发费用): nums=[('D', 0.0001), ('E', 0.565), ...] ← C=0.5 被跳过!调试半天才发现——从 D 开始算相邻两期都是 0.0001→0.565,看起来"合理"。现在改成只跳 A/B 两列。
坑 2:T0 列找不到
R5 最初设计找"T0 行",但实际表格里 2026 是列头不是行标签。改成找"T0 列号"才解决。
坑 3:子项扫描"贪婪"
R1 自动找小计行下面的子项求和,最早版本没设终止条件,子项扫描能扫出 100+ 行(跨了"收入"和"成本"两个分组)。加了"遇到下一个分组/合计行就停"的终止逻辑才正常。
坑 4:IRR 阈值定多少
R5 设阈值最难。最终方案:T0 净现金流绝对值 < 2.5(基于"典型增资项目应 ≥ 2.2 亿"),同时支持 3 种触发:① 全 0(漏了投资)② 绝对值 < 1(仅经营)③ 绝对值 < 2.5(含投资的临界)。
角色 | 用法 |
|---|---|
AI 校稿员 | audit 跑一遍,JSON 直接喂给 LLM,让 LLM 解读 |
财务分析师 | trace 追溯 IRR/NPV 的公式输入,秒找口径错误 |
审计师 | diff 对比两份预算表,自动化发现差异 |
数据工程师 | from excel import numeric_audit 当 Python 库调 |
金融模型开发者 | apply_edits 批量改 + audit_and_save 改完自动审计 |
典型场景:每年做预算、增资、年度审计、专项审计时,5 秒跑完 11 项校验,比老财务手撸 2 小时还全。
我打算继续扩展:
回到开头那个事故——我让 AI 校了 50 份财务表格,它漏掉了一个会毁掉集团评审的数字。
这事本质不是 AI 笨,是方法错了。
我们总以为 AI "看懂"了表格,其实它只是"读到了"文本。它不知道 0.5 → 0.0001 是 5000 倍断崖,不知道 IRR 8.5% 缺了 2.2 亿投资,不知道备注"增长 30%" 和实际"增长 20%" 是矛盾的——这些数字层面的硬错,必须用确定性规则抓,不能靠 LLM 推理。
老财务说的"逐行比对 + 差 1 分钱都不放过",不是情怀,是20 年踩坑总结的方法论。我们 AI 不是要替代他们,是要把这套方法论结构化、自动化、可复用。
这就是我做的——4 阶段框架 + 11 项规则。让 AI 校表格,从"读文本"升级到"查数据库"。
工具已在本地金标库沉淀,并跑通多份金融模型实测。
如果你也踩过 AI 校表格漏报硬错的坑,或者想把这套 4 阶段框架用到自己的场景,欢迎私信交流。
我们可以提供:
私信关键词:"表格 skill" 或 "心之桥",优先回复。
相关阅读:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。