把财报 PDF 里被机器读错的数字,一处不漏地揪出来——
在 1000 份真实招股书与年报上实测(300 官方 + 700 自建)。
单看都不起眼;落到财务数字上,每一种都是量级级别的偏差。而 OCR 从不会主动说"我这里可能读错了"。
三大表逐个数字核对,一个有经验的人要核 小半天。
还不能出错。人海战术,覆盖不了这个量级。
这正是这套系统想替人扛下来的活——把"逐数核对"自动化,把人留给真正需要判断的疑点。
每一张报表,本质都是一架必须时刻保持平衡的天平 —— 两端永远相等:
只要一个数字被 OCR 读错,这架天平立刻失衡。错误,会自己暴露 —— 这正是我们抓错的突破口。
又快——但不可信:大模型最不可靠的恰恰是算术,还会自作主张"顺手改个数",而且你没法复现。
读,交给擅长语义、偶尔出错也不致命的 AI;算,交给永不出错、可复现的代码。各司其职,错误无处藏身。
十万份银行真实收到的财报,格式千变万化,正则永远穷举不完 —— 面对真实多样性会立刻欠拟合。"读"必须交给能泛化的模型。
它把打印的合计当成"分项之和"判"平衡",用"看起来对"掩盖"其实不平"。算术交给零成本确定性代码——又对、又唯一可复现。137 张留出 BS 实测 · 详见路线对照①
我们的破局:1.3B 小模型抽取(泛化 · 近零成本) + 确定性代码校验(零模型成本)。两个约束,同时拿下。
这是哪张表、哪一列、哪个科目——大模型擅长,偶尔贴错个标签也不致命。
所有加减勾稽——代码最擅长、永远可复现,绝不会幻觉、绝不会改数。
铁律:AI 逐字照抄数字,绝不参与任何加减、绝不顺手改数。把易错的算术从 AI 手里拿走,正是它能"抓出错"而非"引入新错"的根本。
每次只问一个受约束的小问题。切得越碎,单次越简单、越可控、越能并发——13 亿参数也能稳,成本近乎为零。
资产负债表上半截在第 12 页、下半截在第 13 页,续页连期次表头都没了。写死的规则一断就废。
小模型登场:一眼认出“这是上一张表的下半身”,借回表头、对齐每一列;脏到列都错位,就让模型连读三遍投票,把两页严丝合缝拼回一张完整的表。
列错一格,整张表的勾稽就全盘皆错。这是最容易“串列”的表。
小模型登场:逐格读懂每列是什么、每个数字归哪一栏、哪是母公司哪是合并;列对齐交给模型理解到位,再由确定性引擎逐列逐行复核。
越唬人的版式,越证明这条路对:读的脏活累活全压给会泛化的小模型,算账只信确定性引擎。模型越强,读得越准。
单步 NDJSON 输出 · 1.3~7 秒一张表,截断也只丢最后一行。
有结构的表格走纯代码逐格抽取,100% 忠实、根本不惊动模型;只有零散文本才请 MiniCPM-V-4.6 出马。
能不让 AI 碰的,就不碰。
temperature=0 让单次确定;再可选叠加 N 轮投票,逐行取众数,把一致率和冲突全部暴露。
稳定 ≠ 正确,冲突也摆上台面。
它不算账、不判对错。贴错了,最坏只是错个标签,不会变成假警报。
每条标红都是一条会计等式真的不平衡——纯代码、可复现、与哪版模型无关。
附差额金额、勾稽路径、OCR 原文——直接告诉你"这里差 4,020 万"。
还有一道忠实性守卫:反查每个抽出的数字是否真出现在 OCR 原文里——绝大部分能精确回查命中,对不上的主要是 OCR 噪声本身,而非 AI 捏造。
我们 63/63 全抓到,差额精确到分
我们 0 改写 · 逐字照抄
大模型不是不会读(逐字抽取它没错,甚至标出了可疑值)——是不会(真去)算。这正是我们把"算"交给确定性代码的理由。
结构化表 → 确定性逐格最划算(100% 忠实·零成本·毫秒级·可复现):大模型抽得也准,但白花钱还慢;1.3B 单抽宽表只抽出一半。所以小模型的岗位是零散文本字段+坏表兜底,表格交给代码——抽取,不必为"大"买单。
年报更脏、表更宽,合并三大表 93.9%——距 95% 仅 1.1pp,已逼近 1.3B 小模型+脏 OCR 的物理上限。抽出的数字绝大多数都能在 OCR 原文精确回查。
这些标红是真错还是假错?我们对 1000 份逐条独立复核每一处标红(codex + 多 agent)—— 确认 4,100+ 处真实 OCR 误读(销售收现少计 4 亿 · 存货漏读 1 亿 · 最高偏差千亿级);约占可判定标红 4 成(官方集达 6 成),其余为抽取口径 / 源表舍入。
完成抽取 + 全部 25 条勾稽核验实测单表抽取 1.3~7 秒
读交给近零成本小模型,算是纯代码,两头都能并行。
文档之间彼此独立,加机器就近似线性提速,没有中心瓶颈。
{ page, chapter,
block_type, quote,
bbox:[x0,y0,x1,y1] }
抽取值 → bbox 坐标 → 回到原文那一格。OCR 读成 40,206.073.20,原文那一格是 40,206,073.20。
上千个字段先跑平,只把真正不平的几处推到客户经理面前。
每份 ~363 个数字 → 仅 ~14 处需人工复核
人海覆盖不了的十万份级入口,秒级单份、小时级全量。
入库前过一道勾稽闸,等式不平的脏数据当场拦下。
把正文与附注里散落的金额,跟报表对应数字做交叉勾稽,让校验网覆盖到表格之外的每一处引用。
读取 MinerU 返回的置信度,对低置信的数字优先复核,把"可能读错"在算账之前就标出来。
SCE 是最宽、最易串列的表,OCR 结果也最脏;正在让小模型把它读稳,再接入这套校验体系。
速度来自 AI,信任来自数学。
把一个近零成本的小模型,拆细、约束、互证、复算,逼成一台既能规模化、又值得信任的读表机器。
谢谢,欢迎提问。