> 判据的盲区正好落在最该示警的那批数据上,这是最糟的一种失效

Research Tools Intermediate 2026-10-12 04:23 2026-10-12
#data-quality #ocr #detection #heuristics #failure-modes #warnings

一个检索库给每段内容打"公式可能丢了"的警告。第一版判据只看这一段自己的证据: 有数学符号但没有 LaTeX → 示警。

// TABLE_OF_CONTENTS

结论先行

一个检索库给每段内容打"公式可能丢了"的警告。第一版判据只看这一段自己的证据: 有数学符号但没有 LaTeX → 示警。

在最坏的那本书上它完全失灵:全书 454 个对象一次都不示警。 因为那是一层隐形 OCR,公式被 OCR 成了 E!!. F 这种 —— 里面一个可识别的数学符号都没有,于是"有数学符号"这个前件为假,判 0 分。

判据的盲区正好落在最该示警的书上。

修法不是改阈值,是把书级结论接进来,并且给它最高优先级:

gap 含义 段数
3 整本书公式层不可用(书级判定,27 本) 15,163
2 本段有"只剩编号"的公式行 628
1 有数学符号但无 LaTeX 25,064
0 没有丢失迹象 39,542

评测里 warn 一项从 0.00 修到 1.00。

这里还藏着一个更吓人的量。另有 204 本文本层"正常"的书, 拿解析产物和原文对比数学算符总数:

中位保留 0.56   平均 0.58   低于 0.8 的 70/78 本

解析库会静默丢弃行间公式:不报错、不卡死、页面字符数正常、 覆盖率正常 —— 既有的三道守卫(超时降级、字符数下限、覆盖率下限) 一个都拦不住它。

为什么

一个形如「A 且非 B」的检测判据,有一个结构性盲区: A 也不成立的时候,它和"健康"无法区分。

实际情况 有数学符号 有 LaTeX 判据输出
正常的数学书 ✓ ✓ 不示警(对)
公式被压平 ✓ ✗ 示警(对)
公式彻底烂掉 ✗ ✗ 不示警(错)
本来没数学的书 ✗ ✗ 不示警(对)

最后两行输出相同。而第三行是损坏最严重的情况 —— 损坏程度越深,证据越少,判据越安静。 这类判据在轻度损坏上灵敏,在重度损坏上失效, 于是它给出的"干净"名单里,混着最脏的那些。

反方向的约束同样真实,不能靠放宽判据解决。这个项目的书级判定 不能只看字体名:有些书也用 TeX 数学字体,但 ToUnicode 齐全、 算符密度 20~30/千字,一点毛病没有。 必须同时看两件事 —— 取不出 Unicode 算符 且 数学字体真排了 ≥0.5% 的字。少了第二个条件, "整本书就用了一个数学符号"的那类书会被误报 (第一版就误报了 11 本,送去重做纯属倒退)。

所以这不是"判据太严",是判据的输入维度不够: 段级证据无法区分"这段没数学"和"这段的数学全烂了", 必须引入一个段级看不到的量(书级的文本层体检)。

怎么用

写完检测判据,先问:它在"证据缺失"时输出什么? 如果和"健康"同一个输出,就有盲区。最常见的三种形状:

判据形状 盲区
「有 A 但没 B」 A 也没有的时候
「X 的比例异常」 X 一个都没有的时候(分母 0)
「某字段和另一个字段矛盾」 两个字段都空的时候

给"无法判定"一个和"健康"不同的输出。 三态(ok / warn / unknown)比两态可靠得多。unknown 的数量 本身就是一个要盯的指标 —— 同 核验报告必须先报自己的覆盖率,再报结论——否则一次失败的核验看起来像核过了: 34 of 41 UNVERIFIED 而摘要只报 ok/warn/fail 的那个毛病, 是同一件事在报告层的样子。

引入一个被检对象看不见的层级的证据,并给它更高优先级。 段级判不出来的,书级/文件级/批次级可能判得出来。 优先级顺序要写明:书级判定 > 段级证据,而不是取最大值 —— 因为段级在这些书上给的是 0,取最大值仍然是 0。

验证判据要专门挑最坏的样本,不是抽样。 均匀抽样会以压倒性概率抽到健康样本,而盲区只在极端样本上显形。 先按"损坏程度"排序,再从最坏那一端往下验。 这个项目是靠"那本书全书 0 示警"这一个反常观察发现的 —— 一个本该警报最多的对象警报为零,是最强的盲区信号。

守卫数量不等于守卫覆盖。 三道守卫一道都拦不住第四种失效模式。 每加一道守卫,记下它挡的是哪一种失效; 列不出名字的守卫,大概和别的守卫挡的是同一种。 同 一个从未被写入过的 Gauge,导出的不是"无数据",是"一切正常": 监控面板很满,不代表监控覆盖。

出处

~/Tools/booksearch/docs/RAG_PLAN.md §18.4「公式警告:判据的盲区 落在最该警告的书上」(454 个对象 0 示警、E!!. F、四档 gap 表、 warn 0.00 → 1.00)与 §17.6「最要紧的发现:索引里没有公式」 (三种失效机制、不能只看字体名与 ≥0.5% 条件、第一版误报 11 本、 中位保留 0.56 / 70-78 本低于 0.8、三道守卫都拦不住)。