Skip to content

测试结果

本页用于跟踪 Context Type 1-5 的样本基准验证。

结果版本:2026 年 4 月 13 日
本次更新范围:

  • Parklane 与 Kingsbrook 章节继续沿用当前最新发布重跑结果。
  • Fairway Type 3 章节已按新重跑审计刷新(debug/ui_01/run_20260413_003852_502094_4873242e__ui_01/)。

Context Type 定义

Type 1 — Contextual Tables(上下文表格)

独立辅助表(如 Glazing Schedule)提供补充数据,需要并入主条目表。当主表出现 GL-03 之类引用时,应自动补全对应辅助表整行信息。关联可能是显式 1:1,也可能是规则型(例如 if Fixed -> use this glass makeup)。

Type 2 — Contextual Text & General Notes(上下文文本与通用备注)

自由文本备注(钢化玻璃规则、性能指标、鸟类友好材料要求、结构设计标准)会对全部或部分条目施加规则。系统需要将其内化并应用到相关条目元数据。

Type 3 — Contextual Item Cards (style/legend)(样式/图例卡片)

图例类视觉卡片定义开启方式、类别、配置等。当清单写明 D1 = Style C 时,应根据图例补全其具体类别与开启方式等字段。

Type 4 — Item Cards with Variables(带变量的条目卡)

复杂图卡中,同一系统(如 V1/V2)在子项间可能存在不同宽高,且有时需要计算(如总高减窗台高)。输出应拆分为独立行(如 D1、D2)并给出正确计算尺寸。

Type 5 — Multi-label Item Cards(多标签条目卡)

一张图定义多个条目(如 W3A & W3B),共享几何但在 basis-of-design 或参数上不同。系统应正确拆分条目,并区分共享属性与差异属性。


样本覆盖矩阵

样本 文档中采用的最新运行 覆盖类型 状态
Parklane (CRPA-Park Lane T1.pdf) run_20260412_011036 Type 1、Type 2 Active
Kingsbrook (kingsbrook_takeOFF T2.pdf) run_20260412_010342 Type 1-5(广覆盖混合样本) Active
Fairway (VTT - Fairway T3.pdf) run_20260413_003852_502094_4873242e__ui_01 Type 3 Active

评估方法

Ground Truth(GT)

GT 文件是人工整理的基准真值,用于定义每个样本在行级与字段级上的期望输出,并作为回归评估的权威基线。

  • 目录:test/ground-truths/
  • 示例:gt__r01-02__parklane.jsongt__r01-05__kingsbrook.json
  • 对齐键:row_id

GT 的定位

GT 是人工维护的评估基线,不是模型输出。当源文档、字段契约或单位规范发生变化时,应在同一变更窗口同步更新 GT,否则评分会失真。

归一化比较器架构

Cartex 的测试汇总默认使用 test/gates/phase_gate_report.py 中的归一化比较器。

评估流程:

  1. 读取实际输出 debug/run_*/<run_id>_rows.json 与 GT 文件。
  2. row_id 对齐行。
  3. 应用样本级忽略规则,过滤 Kingsbrook 类版式中“遮挡区导致的非确定性伪行提取”问题(详见已知限制中的“遮挡行引发的提取伪行”)。
  4. 对所有公共行的所有字段执行“字段感知”的归一化比较。
  5. 聚合字段不匹配,生成行级与运行级指标。

字段归一化规则:

字段组 归一化匹配逻辑
通用文本字段 忽略大小写并折叠空白后比较
WidthHeight 先统一换算为英寸,再做数值比较
Rough Opening Measurements 解析为 A x B 的英寸对并比较规范化结果
QuantityGlass Layer 提取整数语义并做数值比较
Frame Brand 采用 token 包含/重叠匹配(如 RehauStarr Rehau
Glass Arrangement Configuration 比较 panel 尺寸结构、panel 数量及 metal-panel 标记
Special Notes 先提取语义事实,再按召回率/精确率阈值判定

报告口径

测试文档中的核心 KPI 采用归一化比较器。严格逐字比较可用于内部诊断,但不作为发布质量指标对外展示。

评分计算

设某次运行对齐后的公共行数为 common_rows,每行可比字段数为 F

total_comparable_fields = common_rows * F
total_field_mismatches  = 归一化后判定不匹配的字段比较次数
field_accuracy          = (total_comparable_fields - total_field_mismatches) / total_comparable_fields

row_accuracy(row_i)     = matched_fields(row_i) / F

Gate 指标:

  • row_completeness_pass:应用忽略规则后,missing_row_ids == []extra_row_ids == []
  • no_high_conf_severe_errors_pass:不存在 confidence >= 0.9row_accuracy <= 0.4 的行。

Type 1 + Type 2 基准(Parklane)

样本: CRPA-Park Lane T1.pdf
测试页: 1
模板: Glass Schedule
触发策略: auxiliary_tabletext_ruledimension_card
运行目录: debug/run_20260412_011036/
运行开关: High Accuracy Tables on,Monolithic off

当前结果摘要

指标
期望行数 / 实际行数 19 / 19
行完整性 gate 通过
高置信严重错误 gate 通过
字段准确率(归一化比较器) 0.857143
归一化后剩余不匹配 Glass Layer (19)、Glass Width (19)

结果解读

  • Type 1 行为正常(辅助表映射与行级补全有效)。
  • Type 2 行为正常(文本规则可被应用到行级元数据)。
  • 剩余不匹配聚焦于模板字段契约语义重叠(Glass LayerGlass Width),不是行丢失问题。

回归明细(归一化比较器,按 GT 对齐)

Glass Layer — 19 处不匹配

原因

玻璃厚度文本(1" IGU)被写入“层数”字段。当前行为受 CATO2 模板提供的字段规则契约影响,这些契约会注入到各专业策略指令中。现有模板源里,Glass LayerGlass Width 使用了同一条逐字规则(Glass thickness if determinable),导致两个字段的指导语义出现一对一重叠与歧义。该问题正作为上游规则定义问题进行排查。

示例:

C1
  实际: 1" IGU
  真值: 2

P1
  实际: 1" IGU
  真值: 2

Glass Width — 19 处不匹配

原因

同一厚度 token 泄漏到 Glass Width,根因与字段契约注入一致:CATO2 提供的字段规则会直接注入专业策略提示,而 Glass Width 当前与 Glass Layer 共享同一条逐字规则(Glass thickness if determinable)。该上游规则重叠问题正在调查中。

示例:

C1
  实际: 1" IGU
  真值:

P10
  实际: 1" IGU
  真值:

Type 1-5 广覆盖基准(Kingsbrook)

样本: Pages from kingsbrook_takeOFF T2.pdf
测试页: 1-2
模板: Standard Takeoff
触发策略: auxiliary_tabletext_ruleimage_legenddimension_cardmulti_label
运行目录: debug/run_20260412_010342/
运行开关: High Accuracy Tables on,Monolithic off

当前结果摘要

指标
期望行数 / 实际行数(原始) 50 / 51
期望行数 / 实际行数(样本抑制后) 50 / 50
行完整性 gate 通过
高置信严重错误 gate 通过
字段准确率(归一化比较器) 0.806
归一化后剩余不匹配 Material (50)、Special Notes (47)

已知“非确定性”提取问题

主清单底部被遮挡区域会在最后约 5 行触发伪行/幻觉提取。

  • 该问题尚未修复
  • 本次 run 出现 W75B,但未来 run 中的伪行 ID 与值可能不同。
  • 不应将其视为单一固定行 bug,而应视为遮挡区的不稳定提取现象。

回归明细(归一化比较器,按 GT 对齐)

Material — 50 处不匹配

原因

文档中的材质通常是“隐含信息”(通过产品族推断),不是显式文本。当前流程尚未稳定完成品牌到材质的隐式映射。

示例:

W11B
  实际:
  真值: uPVC/vinyl

W1A
  实际: Triple Glazed
  真值: uPVC/vinyl

W77A
  实际: Triple Glazed
  真值: uPVC/vinyl

Special Notes — 47 处不匹配

原因

备注综合能覆盖大量事实,但常丢失关键约束条款。高频缺失真值事实包括 design_pressuresafety_glazingair_leakagehead_height_rule 以及部分 u_factor

示例:

W11B
  实际: 1 3/4" Triple Glazed IGU ... Warm-edge spacer ...(已缩写)
  真值: ... U-0.18 ... 最小窗头高度 7'-0" ... +/- 48 PSF 设计压力 ... 安全玻璃条款 ...

W13A
  实际: 1 3/4" Triple Glazed IGU ...(已缩写)
  真值: ... 包含 design pressure 与 safety glazing 条款 ...

Type 3 基准(Fairway)

样本: VTT - Fairway T3.pdf
测试页: 1
模板: Standard Takeoff
触发策略: text_ruleimage_legend
运行目录: debug/ui_01/run_20260413_003852_502094_4873242e__ui_01/
运行开关: High Accuracy Tables on,Monolithic off

当前结果摘要

指标
期望行数 / 实际行数 21 / 21
行完整性 gate 通过
高置信严重错误 gate 通过
字段准确率(归一化比较器) 0.948413
归一化后剩余不匹配 Product Type (7)、Operability (3)、Frame Material (1)、Glass Type (1)

结果解读

  • 本次重跑中,Type 3 图例映射主链路整体稳定(行完整性通过,且无高置信严重错误)。
  • Special Notes 在归一化语义比较下本次为全量通过。
  • 剩余问题主要集中在分类口径(Product Type)与少量 Operability 行。

回归明细(归一化比较器,按 GT 对齐)

Product Type — 7 处不匹配

原因

部分窗口行的子类型提取覆盖不足。即使存在子类型证据,Product Type 仍会在部分行被留空。

示例:

W1
  实际:
  真值: Other: SLD. GLS.

W3
  实际:
  真值: Other: CASEMENT

Operability — 3 处不匹配

原因

图例中的少数门型样式在视觉与语义上较为接近,Gemini 在样式卡到开启方式标签映射时会出现歧义。D11 与 D12 是这类图例歧义的代表样例。

示例:

D11
  实际: Swing Double
  真值: Sliding Door

D12
  实际: Sliding Door
  真值: Folding

Frame Material — 1 处不匹配

原因

单行门型仍丢失显式框体材质。

示例:

D2
  实际:
  真值: Metal

Glass Type — 1 处不匹配

原因

单行输出了更宽的复合描述(double glazed insulated glass; Tempered glass),而 GT 仅保留 Tempered glass


测试能力后续计划

Dissent-based confidence signal(计划中)

计划引入“异议信号”机制:当 Gemini 在提取时遇到弱证据、歧义或内部不一致,自动下调置信度。

预期收益:

  • 在遮挡/低质量区域提升置信度校准
  • 更清晰地区分“高置信错误”与“不确定提取”
  • 提升人工审计的优先级排序效率