# 读标抽取评测:S01–S10 标注集 v1(2026-11-03) > **修复后的结果见 §7**:F1–F8 和四个口径问题已经处理,三项目标全部达标。§1–§6 是修复前(base)的评测,保留作对照。 > 范围:读标(M2)的五类清单抽取和项目基本信息,在 S01–S10 上的召回率和准确率。 > 模型:DeepSeek Flash 不思考模式(决策 M1,不再对比 Pro 和思考模式);提示词 substantive v4、qualification / scoring / schedule / tech_param v3、project_info v2;代码版本 f99bb8b。 > 工具和复现方法见 `evals/README.md`;标注规范见 `evals/gold/GUIDELINES.md`。 ## 1. 结论 | 指标 | 目标(TV1) | 结果 | | |---|---|---|---| | 标注类实质性条款召回(★ / * / 斜体下划线) | ≥ 99% | 正式清单 99.4%,含待确认区 **99.7%**(346/347) | ✓ | | 写明无效类召回 | ≥ 90% | 正式清单 77.0%,含待确认区 **85.4%**(223/261) | ✗ | | 进入正式清单的实质性条款准确率 | ≥ 95% | **87.8%**(811/924) | ✗ | - **标注类达标**:规则兜底起了作用。唯一漏掉的一条,是 S07 那句既说明标注方式、又带 * 号的长句。 - **另外两项不达标,原因都在规则,不在模型**: - 写明无效类:表格项靠表后的说明定性,「拒绝接收」这类写法没认出来。 - 准确率:合并清单项时,没通过校验的条目被并进了正式条目。 - **其他四类**: | 类别 | 召回 | 准确率 | 主要问题 | |---|---|---|---| | 资格条件 | 98.9% | **38.4%** | 模型多抽 | | 评分项 | 93.8%(含待确认 99.5%) | 100% | | | 日期与递交 | 100% | 73.7% | | | 技术参数(抽样页) | 91.1% | 98.6% | 召回差在一种静默丢失:分块输出接近上限时,模型提前收尾 | - **项目信息**:12 个字段里 8 个全对。`eval_method` 只对 3/10,`sme_only` 只对 1/10,都是规则问题(§3.6)。 - **成本**:10 份文件全部任务,输入 386 万 token,输出 76 万 token,约 13.8 元(高峰价,未计缓存命中),**平均每份约 1.4 元**。tech-validation §4.3 推算的是 0.6~1.0 元,实测偏高,主要多在 S03、S06 这两份长文件的技术参数输出。D2 定额度时按实测值算。 ## 2. 方法 - **标注集**:`evals/gold/S01.json`~`S10.json`,共 1,829 个单元(其中 76 个是裁定后补的,见下文)。 - 每份文件由一个子代理按 `GUIDELINES.md` 标注。子代理只看文字层(`sentences.txt`),不看模型输出。 - 定位用「页码 + 原文片段」,切句规则变了也能用。 - 五类清单和项目信息全文标注。技术参数量太大,每份在技术要求章里等距抽 6 页,这 6 页上全标。 - **目前是 AI 标注、AI 复核,没有人工复核**(`reviewed: false`)。 - **口径统一**:标完后发现各份的处理不一致,统一了三条:句子本身带标注的一律必标;章节标题带 ★ 的继承暂记可选;`sme_only` 原文没写明的改为 null(GUIDELINES §4)。 - **打分**(`evals/score.py`): - 召回:有对应类别的清单项,出处句子和标注的句子有交集,就算召回。正式清单算一遍,加上待确认区再算一遍。 - 准确率:正式清单里这一类的条目,出处和这一类的某条标注有交集,就算准确。 - `optional` 的标注不进召回的分母,抽到了算对。 - **裁定**:正式清单里对不上标注的 543 条,逐条判断是标注漏了还是模型抽错了。 - 实质性条款、资格条件、日期递交由三个子代理裁定,评分和技术参数我自己裁定。 - 标注漏了的有 76 条,补成 `optional` + `added_in_review`:只修正准确率,不抬高召回率。 - 抽错的按原因分类,结果在 §3。 - **S07 的预处理**:S07 是 WPS 旧版 DOC,产品现在的转换流程直接转,正文全是「第第第第」(S1 §1.3 记录过,转换流程还没做这一步)。评测时在 `prepare.py` 里先转 DOCX、修正字符集。**这是产品缺陷,要在转换流程里补上。** ## 3. 问题和原因 按「改规则能解决」和「要改提示词」分开。规则只修真正的缺陷,不迁就模型的错误输出(SK11 的原则)。 ### 3.1 合并清单项时,没通过校验的条目被并进正式条目(规则缺陷,影响最大) - **现象**:`merge_items` 按首句合并各任务的结果,只跳过「同一任务」的待确认条目。别的任务的待确认条目照样把类别、重要性和出处并进正式条目。 - **后果**:实质性条款任务里依据校验没通过的条目,借技术参数、资格条件的正式条目进了正式清单,还被标成实质性。 - 实质性条款多出来的 113 条里,89 条原文根本没写无效后果,大部分是这样来的。 - S07 一份就有 93 条:普通技术参数被标成了「致命」。 - **修复**:合并时,待确认条目不给正式条目加类别、不提高重要性。它单独留在待确认区,或作为待确认的依据附在正式条目上。 ### 3.2 写明无效类的漏抽(规则为主) | 原因 | 条数 | 修复 | |---|---|---| | 表格项靠表后的说明定性:「上述第 1~6 项必须全部提供,否则投标无效」写在资格证明表、符合性审查表**下面**。结构识别只往上找上级条款,看不到它 | 33(S03、S05、S07、S08) | 结构识别加一种:以「上述」开头、写明无效后果的说明,覆盖它上方同一张表的各项 | | 后果写在另一条里:「有下列情形之一的,视为串通投标」下的各项,「串通投标的投标无效」写在别处 | 7 | 「视为串通投标」作为无效的上级标题。依据:87 号令,串通投标的投标无效 | | 无效写法没认全:「其投标将被拒绝」「拒绝接收」「拒绝接受」「无资格参加」 | 7 | `INVALID` 补这几种写法 | | 符合性审查表各项只在表头写了「不通过的投标无效」,上级关系没识别出来 | 13 | 和第一行一起做:表格结构识别 | ### 3.3 资格条件多抽(提示词为主) 正式清单里 466 条资格条件,裁定后 287 条不是资格条件: | 抽错的内容 | 条数 | |---|---| | 技术参数,尤其是写着「提供认证证书 / 检测报告」的参数行 | 112 | | 投标文件的组成、编制、递交、签章、授权书 | 54 | | 无效情形、串通情形 | 34 | | 第六章格式范本里的声明函、承诺函正文(提示词已经禁止,模型照样抽) | 27 | | 价格扣除、联合体组成规则 | 18 | | 合同履约、服务要求 | 11 | | 程序说明 | 5 | | 其他 | 26 | - **规律**:句子里带「资格」「证明材料」「须提供」就收。 - **修复**: - **规则**:结构识别补上章节层级(架构 §3.5 的 TODO)。第六章格式范本和第四章技术参数,不交给资格任务。这一项能去掉一半以上的错。 - **提示词**:qualification v4 把「技术参数里的证书要求」「投标文件组成和签章」「无效情形」写进「不要输出」,各给一个例子。 ### 3.4 日期与递交多抽(提示词) 88 条对不上标注,裁定后 29 条是标注漏了(同一要求在另一处换了说法),59 条是模型抽错了: - 质疑投诉的程序和形式 23 条; - 运维服务时限、驻场人数 11 条,主要在 S09,模型看到时限、人数就当成了日期; - 开标记录 5 分钟内提疑义 7 条; - 中标后事项 5 条; - 其他 13 条。 **修复**:schedule v4 的「不要输出」补这几类。 ### 3.5 技术参数漏抽(规则 + 提示词) - **静默丢失(规则)**:S03 一个分块有 259 句密集参数表。模型输出 97 条、7,757 个 token(上限 8,192)就自己收了尾,JSON 完整,没被判成截断,后面两页多的参数整段丢了(抽样页上 17 条)。 - **修复**:输出 token 超过上限的 90%,且最后一条证据离分块末尾还远,按截断处理、对半重跑。技术参数任务的分块也可以改小。 - **描述性的实施、服务要求被当成背景(提示词)**:S05、S06、S08、S09、S10 共约 30 条,例如「须统一部署于市级政务云」「试运行不少于 1 个月」。 - **修复**:tech_param v4 写明:带「须」「不少于」「不得」的实施、服务要求要抽,项目背景和建设目标才不抽。 ### 3.6 项目信息(规则) - **`eval_method` 7/10 没答出来**:「本项目采用综合评分法」写在第五章评标办法里,项目信息只看前 3 个分块。 - **修复**:项目信息任务再加一个分块,就是评标办法一章的开头。 - **`sme_only` 8/10、`accept_imported` 2/10 核对不通过**:是 / 否字段的否定词表没有「非」「不专门」,「非专门面向中小企业」被判成证据和取值对不上。 - **修复**:否定词表补上。 ### 3.7 其他 - **评分项待确认区里 68% 是好结果**(17/25):被拦下的原因是引文不是原文、分值找不到,都出在评分表被切碎的地方。这正好是已经排好的「表格按单元格切句」。 - **重复条目**: - 同一条标注被两条以上正式条目命中:实质性条款 115、资格条件 41、日期递交 35。 - 主要原因是同一要求在公告、前附表、审查表里各出现一次,各抽一条。 - 这本身不算错,但清单会显得重复。查标阶段要考虑按语义合并。 ## 4. 修复清单(按收益排序) | # | 改什么 | 类型 | 预计影响 | |---|---|---|---| | F1 | 合并时待确认条目不给正式条目加类别、提重要性(§3.1) | 规则 | 实质性条款准确率 87.8% → 95% 以上 | | F2 | 结构识别:「上述……否则无效」往上覆盖表格各项;「视为串通投标」算无效标题;`INVALID` 补写法(§3.2) | 规则 | 写明无效类召回 85% → 95% 左右 | | F3 | 静默提前收尾按截断处理、对半重跑(§3.5) | 规则 | 技术参数召回,S03 这类长表 | | F4 | 章节层级:第六章格式、第四章参数不交给资格任务(§3.3) | 规则 | 资格条件准确率 | | F5 | qualification v4、schedule v4、tech_param v4 的「只找 / 不要输出」(§3.3–3.5) | 提示词 | 资格、日期准确率,技术参数召回 | | F6 | 项目信息加评标办法分块;是 / 否字段否定词补「非」(§3.6) | 规则 | `eval_method`、`sme_only` | | F7 | 转换流程补 WPS 旧版 DOC 预处理(§2) | 规则 | S07 这类文件能用 | | F8 | 表格按单元格切句(已排期) | 规则 | 评分项、技术参数的待确认 | ## 5. 口径问题(已定,见 decisions.md Q1–Q4) 标注时遇到、规范里没定的,影响产品行为,需要拍板: 1. **★ 标在整节标题上**(S01「三、★商务要求」并写明商务条款全部是实质性、负偏离无效;S07「★售后」;S10「★(一)技术要求」「★(二)商务要求」):节里不带 ★ 的各句算不算实质性条款? - 现在的流水线只认标题这一句,标注集暂把节里的句子记为可选。 2. **★ 没写无效后果**(S02):文件只说「★ 为核心技术参数」,评分表里 ★ 不满足只扣 4 分。 - 现在一律按实质性处理,用户会看到「致命」,实际只是扣分。 3. **「必须 / 应」都是实质性要求**(S07 第 18 页的声明):逐句标出不现实。 - 建议只在文件层面提示「本文件声明含『必须』『应』字样的要求均为实质性要求」,不逐句抽。 4. **资格条件是否一律带「无效」类别**:政府采购里资格审查不合格就是投标无效,87 号令第六十三条有规定。 - 一律带上的话,§3.2 第一行那 33 条漏抽自然解决。 - 但写明无效类的口径会从「文件写明」变成「法规规定」,要和「双层口径」一并考虑。 ## 6. 没覆盖的 - 标注集没有人工复核。 - 1,829 个单元是 AI 标的;裁定时发现,各份文件之间对「授权书算不算资格」「质疑截止算不算日期」的处理仍有差异。 - 建议先人工抽查实质性条款(S03、S06 最难),再把 `reviewed` 改成 true。 - 样本缺口没变:扫描件、补遗、招标投标体系、配套投标文件。 - 原句高亮准确率(FR-M2-06)不在本次范围,等表格按单元格切句后再验。 ## 7. 修复后(fix3,2026-11-03) F1–F8 全部实现,四个口径按建议执行(决策 Q1–Q4)。改完先请 Fable 当顾问审读(§7.3),改了它指出的问题,再跑两轮。 ### 7.1 结果 | 指标 | 目标 | 修复前(base) | 修复后(fix3) | |---|---|---|---| | 标注类实质性条款召回(含待确认区) | ≥ 99% | 99.7% | **99.4%** ✓ | | 写明无效类召回(含待确认区) | ≥ 90% | 85.4% | **98.1%** ✓(正式清单 84.7%) | | 实质性条款准确率(正式清单) | ≥ 95% | 87.8% | **98.4%** ✓ | | 资格条件 召回 / 准确率 | | 98.9% / 38.4% | 97.7% / **90.0%** | | 评分项 召回 / 准确率 | | 93.8% / 100% | **97.4%** / 100% | | 日期与递交 召回 / 准确率 | | 100% / 73.7% | 95.6% / **99.3%** | | 技术参数(抽样页) 召回 / 准确率 | | 91.1% / 98.6% | **98.4%** / 98.8% | | 项目信息:评标方法 / 最高限价 / 是否专门面向中小企业 | | 3 / 9 / 1(共 10 份) | **9** / **10** / **7** | | 每份文件的成本(Flash 高峰价) | | 约 1.4 元 | **约 1.2 元**(按章跳过,输入少了 27%) | - **口径**:两次的标注集不完全相同。修复后按 Q1、Q2 改了口径(S01 节内 12 条改必标,S02 的 11 条 ★ 改可选),技术参数的 S07、S09 在新分页上重标,两轮裁定共补了 117 个可选单元。召回率的分母基本没变(597 → 610)。 - **裁定**:准确率都是裁定过的,正式清单里对不上标注的条目逐条判断过,方法同 §2。 ### 7.2 改了什么 | # | 改动 | 位置 | |---|---|---| | F1 | 合并时,待确认条目不再给正式条目加类别、提重要性;没通过的类别记在正式条目的 `ai_values.pending_categories` 里,不丢 | `extract.merge_items`、`add_pending_categories` | | F2 | 表后往回指的说明(「上述……否则投标无效」)覆盖上方的编号条目和表格行;「视为串通投标」算无效依据;`INVALID` 补「被拒绝」「拒绝接收」「投标文件无效」「不实质性响应」等写法;规则兜底也认表后说明 | `structure.trailing_notes`、`extract.INVALID` | | F3 | 输出用到上限的 92% 以上按截断处理、对半重跑;拆到底时采用已有输出 | `ai/providers/base.near_limit` | | F4 | 章识别(公告、须知、合同、采购需求、评审、格式……),资格、日期、参数、评分任务跳过不相干的章;章认不可靠时不跳过 | `structure.chapters`、`extract.SKIP_CHAPTERS` | | F5 | 提示词 substantive v5、qualification v4、schedule v4、tech_param v4;规则兜底:格式范本正文(「我单位……」)、列表引导句和整表概括句不收 | `prompts/`、`extract.TEMPLATE`、`BLANKET` | | F6 | 项目信息多看写着「本项目采用综合评分法」的那一块;是 / 否字段否定词补「非」「不专门」 | `extract.EVAL_METHOD`、`NEGATIVE` | | F7 | WPS 旧版 DOC:直接修正 DOC 字体表里中文字体的字符集,不用先转 DOCX | `convert.fix_wps_doc_charset` | | F8 | 有框线的表格按单元格切句(切句 s3-v4),竖排窄列、两栏表格不再串行 | `text_layer._fragments` | | Q1 | ★ 节标题下的条款继承实质性 | `structure.star_sections` | | Q2 | ★ 被定义成计分项时降为「重要」,条件从严 | `extract.star_scored` | | Q3 | 「必须 / 应」声明记成 keyword 标注规则 | `extract.marking_notes`、`checklist.service.merge` | | Q4 | 政府采购项目的资格条件带「无效」类别,依据记 statute | `extract._qualification` | ### 7.3 顾问审读(Fable) 请 Fable 只读审了第一版修复,确定的问题 7 条,都已改正: 1. ★ 定义句的降级会误伤真正的废标 ★:改成要有计分证据,而且全文没有带 ★ 的后果写法; 2. 章识别会被目录、正文里的引用带偏:排除编号条目,同样长取靠后的序列,不可靠时不跳过; 3. F1 第一版把待确认条目直接丢了:改成记在 `pending_categories`; 4. Q2 文件里实质性任务仍标致命:改为按重要性规则定级; 5. 表后说明会把标注说明、否定句当成无效依据:排除这两种写法; 6. 参数行带 ★ 编号被当成节标题:要求 ★ 紧挨编号,标题短、不带标点和数字; 7. 接近上限拆到底时丢弃完整输出:改为采用已有输出。 推测性的几条也采纳了:合同章里的「拒绝接受」不算无效依据,引导句过滤只针对冒号结尾或很短的句子,F7 收紧字体记录长度的检查。 ### 7.4 还剩的问题 - **写明无效类正式清单召回只有 84.7%**:大部分在待确认区(规则兜底或依据校验没过),用户能看到,但要多点一下。主要是符合性审查表各项(表头写「任何一项不符合即无效」,在表格上方),以及串通情形。 - **待确认区里只有 62% 是好结果**(127/205):规则兜底和 `pending_categories` 带进来的噪音偏多。查标阶段要看待确认区的处理体验再定要不要收紧。 - **资格条件准确率 90%**:剩下的错误主要是「本项目不接受进口产品 / 分包」被当成资格条件,以及联合体、中小企业政策条款。 - **项目信息**:`accept_imported`、`sme_only` 各 7/10,多数是模型答「有歧义」或没核对通过。 - **★ 节里的商务条款**(S01 付款方式、履约保证金):规则兜底不对继承来的句子逐句生成待确认,模型没抽到就漏了。 - **标注集没有人工复核**,口径同 §6。