# Devlog · G9a Tagged PDF:角色采纳、读序否决——半个假设成立

> 日期:2026-06-10 · plan:[closing-docling-gaps.md §G9a](../plans/closing-docling-gaps.md) · 零新依赖

## 交付

- **结构树解析**(`structure.rs`):`StructTreeRoot` 深度遍历(RoleMap 归一/MCR/页映射/深度上限 64),产出每页 `MCID → (role, order)`;
- **解释器 marked-content 跟踪**:`BDC /Tag <</MCID n>>`/`BMC`/`EMC` 栈,最内层 MCID 生效(命名 /Properties 属性 TODO);
- **IR 0.6.0**:`TextChunk.tag` 携带作者声明角色("H1"…"P"/"LI"/"TD"),无标签文档零变化;
- **layout**:H1–H6 标签**强制标题**,凌驾几何启发式——合成验收:同字号文本仅凭 H1 标签判 heading,P 保持段落。

## 诚实负结果:结构树的"阅读顺序"在野外不可信

理论上结构树遍历序=作者阅读序,实现后(经 G2 阅读组机制)实测**全面回退**:amt 0.660→0.515、rtl_01 0.971→0.701。根因:amt 的标签树以 Span/P 碎片为主,**创作顺序≠视觉顺序**(首组即页面中部正文)——野外标签树的顺序质量参差。**读序应用已撤**(代码注释注明依据),角色保留。

附带诊断:`right_to_left_03` 的 0 分与标签无关——该文档**没有任何文本被提取**(阿拉伯语字体/编码层问题,另案处理)。

## 价值评估(诚实)

评测集仅 3 份 tagged 文档且都没有 H 标签 → 本里程碑**当前记分牌零收益**;价值在真实世界:政府/出版/无障碍文档的 H*/L/Table 标签是免费真值,合成验收已证管线就绪。L/LI/Table 标签的消费(G9b 列表)与字号分级(G9c)是下一步。

97+ 单测、clippy 零 warning、三件套+记分牌零回归(0.780/0.597/0.128 不变)。
