建立实验室共用库定位并完成论文/GovDoc 两批数据的问题审计

- README 更新项目定位为实验室共用清洗库,明确 data/ 职责与 profile 复用原则;
- 新增 ClinDB-ReviewBench(论文清洗)5 份 Markdown 问题审计(scratch),
  并确定第一版清洗范围:9 类确定性规则(reference/CLINDB_REVIEWBENCH_CLEANING_SCOPE.md);
- 45 份政务文档审计重命名为 GOVDOC_SAAS_CLEANING_SCOPE.md,截去第 6 节起的
  实施建议,只保留问题报告(396 行);
- 收录 2026-08-20 生态调研草稿(scratch)。
This commit is contained in:
2026-08-21 17:44:23 +08:00
parent be1a600fdc
commit 977bfb832b
5 changed files with 1240 additions and 10 deletions
@@ -0,0 +1,73 @@
# ClinDB-ReviewBench 清洗目标(第一版)
> 性质:reference——本项目清洗范围的权威查询事实。
> 权威关系:本文只定义 ClinDB-ReviewBench 第一版"洗什么、不洗什么";清洗语义的方案比较与批准记录
> 属于 `research-wiki/design/`(尚未建立),实现后的运行方式属于 `explanation/` 与 `guides/`。
> 依据:`research-wiki/scratch/data-5papers-cleaning-audit-2026-08-21.md`(问题编号 AH 沿用该审计)。
## 1. 项目定位
ClinDB-ReviewBench 是师姐的论文清洗项目。`data/` 下当前 5 份 DOI 命名的论文 Markdown
JAMA、EJHF、Statistics in Medicine/arXiv、Springer/arXiv、Disaster Med Public Health Preparedness
是它的首批输入,未来会继续扩充同源转换产物。
本仓库(govdoc-md-cleaner)为该项目的数据提供清洗能力;ClinDB-ReviewBench 通过 profile
表达论文场景的规则组合,不把论文专属规则写进通用核心。
## 2. 第一版清洗目标
第一版只做"全自动、规则确定、可安全执行"的问题(审计第一档,共 9 类)。
判定标准是三条同时满足:模式可用确定规则描述;不依赖对正文语义的理解;改错可以从 diff 直接看出。
| # | 问题(审计编号) | 规则要点 | 触发范围(本轮实测) |
|---|---|---|---|
| 1 | HTML 实体双重转义(D2 | `&amp;gt;``>``&amp;lt;``<``&amp;amp;``&`,还原一层;幂等 | dmp L27/L33 共 23 处、ejhf L143 共 8 处,全部在 `<table>` 行内 |
| 2 | arXiv 边栏戳(H1 | 整行匹配 `^arXiv:\d{4}\.\d+v\d+ \[[\w.-]+\] \d{1,2} \w{3} \d{4}$` 才删除;编号条目内的 "arXiv preprint arXiv:…" 不在行首、不受影响 | sim L1、springer L18springer L143/L152 是合法参考文献,必须不误删 |
| 3 | Word 审阅批注(B2 | 以 `Commented [xx]:` 开头的行及其批注正文整块删除 | jama L155157 共 2 处 |
| 4 | 手稿行号(B1) | 仅剥离**单调递增序列**的行首 `^\d{1,3} ` 与标题内 `^#{1,6} \d{1,3} `;序列中断即停并标记待审,防止误伤正文数字(如 "35 pediatric experts" | jama 128 行正文 + 6 个标题(L127/149/151/165/193/195 |
| 5 | 跑动页眉(C4) | 同一文本行原样重复 ≥2 次(且非正文引用对象)判为页眉,删除并把被切断的上下文段落接回 | dmp L73/L191"MSOFA Score for Critical Care Triage"),L71→L75 句子被切断 |
| 6 | 单行 HTML 表格展开(D1 | 无 rowspan/colspan 的表转多行 GFM;含合并属性的表保留 HTML 但按 `<tr>` 换行缩进;内容一字不改 | 全部 9 个表:dmp 7、ejhf 1、springer 1 |
| 7 | 跨页断词(E2) | 行尾连字符 + 下一行首小写字母 → 合并;仅在拼出的词能通过英文词表校验时执行,否则保留原样并标记 | dmp L125/127thresh-olds)、sim L87/89possi-bly)、L217/219cre-ated |
| 8 | 参考文献分隔统一(G3) | `^\d+\. ` 条目之间统一一个空行 | dmp refs 1933、springer refs 919(连续堆叠段) |
| 9 | 图片断链校验(H3,仅校验) | 检查 `../images/*.jpg` 引用的文件是否存在,输出断链报告;不移动、不复制、不改写任何图片 | 全部 8 处引用(dmp 1、ejhf 1、sim 2、springer 4 |
第 9 项是只读校验:它修复不了任何东西,输出的是"哪些文档的图片资产已损坏"清单。
## 3. 明确不洗(第一版非目标)
以下问题已确认存在但**不在**第一版范围内,避免实施时范围蔓延:
- **内容级缺失(A1–A4)**:截断、表格整体缺失、图转表格、句子丢失。清洗无法恢复内容,
处置方式(重新转换 / 标记 / 人工补录)由项目负责人决定,不由清洗管线代劳。
- **修订语义(B3**"defined identified by as" 等修订残留词对,哪个词是定稿词需对照定稿版判断。
- **占位符与坏日期(B4/B5)**:等待定稿填充,清洗只可检测。
- **乱码修复(C3/E1)**:泰文标题 `## ่วง``ينDS Hospital`,需要人工对照 PDF 替换。
- **表格结构修复(D3–D5)**:空单元格、错误合并行、OCR 表头错字,需人工对照原文。
- **空行断句合并(E3)**、**层级重建(C1)**、**标题合并(C2)**、**孤行公式编号(F1)**、
**公式空格与纠错(F2F4**、**上标风格统一(G1)**、**数字格式(G2)**:属于第二档
"自动检测+人工确认",等第一档验证后再立项。
- **封面页(H2**:ejhf L1–11 的仓库封面区第一版不删——它是整块连续的正文区,删除逻辑
与页眉类噪声不同,归入后续批次。
- **一切内容改写**:原文写作瑕疵、欧式千分位、拼写(含 "Conounder")不属于转换噪声,永不由清洗工具修改。
## 4. 输入输出边界
- 输入:`data/<转换结果目录>/markdowns/*.md`,原文件只读;
- 输出:清洗结果写入独立输出位置(具体目录待 design 批准后确定),不回写、不覆盖原文件;
- 图片资产只校验存在性,不复制进仓库、不修改路径(路径改写是后续批次的独立决策);
- 每处修改必须可追踪(规则编号 + 原文/改后对照),保证审计和回滚。
## 5. 验收口径(第一版)
- 上述 9 类问题在本轮 5 份文件上的触发处全部按规则处理,处理数与审计报告的实测数字一致;
- 5 份文件中未被任何规则命中的正文零变更——除表中列出的触发处外不得有任何其他 diff;
- 幂等性:同一输入清洗两次,第二次产出与第一次完全一致;
- 规则 2arXiv 戳)在 springer 上的验收必须包含反向用例:L143/L152 参考文献原文保留;
- 规则 4(行号)验收必须包含反向用例:正文中的 "35 pediatric experts"、"10 sites"、"4 continents"
等数字开头/含数字短语不受影响。
## 6. 与审计报告的编号对应
本文的 9 类规则对应 `scratch/data-5papers-cleaning-audit-2026-08-21.md` 的决策清单行:
D2、H1、B2、B1、C4、D1、E2、G3、H3。该审计是 scratch 材料,本文引用其编号仅为便于追溯,
权威以本文为准。
@@ -0,0 +1,396 @@
# 7 组对比测试文档 Markdown 清洗审计与实施规范
- 审计日期:2026-08-20
- 审计目录:`/home/lihaoze/gov_test_data/compare`
- 清洗对象:7 个测试用例中 `uploads/` 下的 45 份 Markdown
- 背景资料:`compare/readme.md` 与各用例 `README.md`
- 本次操作:只读审计;没有修改任何原始测试文档
## 1. 结论摘要
这批 Markdown 目前不适合直接作为“语义可靠”的清洗后基准。问题并不只是在空格、换行和标题层级,而是同时存在以下几类高风险污染:
1. **内容级污染**:至少 32/45 份文件命中了保守的模型幻觉特征词,合计 1,703 次;典型内容包括 `The quick brown fox...`、勾股定理说明、`The image contains...``The steps are:` 等与投标文件无关的文本。
2. **图像内容丢失**:45/45 份文件都有图片引用,共 8,471 个,但目录中没有任何图片资产;其中 4,012 个引用只是字面量 `data:image/...;base64...`,并不包含可解码数据。
3. **表格结构损坏**:41 份文件含原始 HTML 表格,共 7,550 个 `<table>`35/41 份存在 `<table>/<tr>/<td>` 数量不平衡。另有 4 份 007 用例文档使用 GFM 表格,其中 203 个表格块里至少 60 个行列数不一致。
4. **重复和超长噪声**:出现 261,838 字符的单行点线、数万字符的重复英语句子、LaTeX 箭头/颜色命令和重复汉字。001 两份文件的非空行重复比例分别达到 81.8% 和 84.1%。
5. **结构扁平化**:全库 29,358 个 Markdown 标题中有 28,736 个是一级标题,占 97.9%;至少 378 个标题缺少空格、只有 `#` 或存在其他明显语法问题。
6. **字符与格式污染**:有 10 个替换字符 ``、20 个私用区字符、11 个 NBSP、5 个零宽字符、1,474 个多余的 `\-` 转义,以及 151,616 行尾部双空格。
7. **真实数据合规风险**:README 明确说明数据来自已上线旧项目中的律所真实上传文件。粗略正则扫描得到身份证号候选 1,976 处、手机号候选 477 处、邮箱 103 处、统一社会信用代码候选 3,259 处。这些数字是候选匹配,不等于已校验的唯一实体数,但足以说明必须把脱敏策略纳入项目设计。
最重要的实施建议是:**不要只产出一份“清洗 Markdown”**。应同时产出:
- `clean_fidelity.md`:忠实版,保留有法律/业务意义的全部内容,所有修复必须能追溯到源文件。
- `clean_compare.md`:对比版,从忠实版派生,移除页眉页脚、失效目录页码、转换器噪声和确定的重复版式块,用于文档相似度计算。
- `audit.json`:记录每一次删除、替换、合并、回源重提取和人工确认。
这样可以避免为了提升对比效果而不可逆地破坏原文,也能避免把幻觉文本、通用图片占位符和重复页眉当成“相同内容”。
## 2. 审计范围与统计口径
### 2.1 纳入和排除
纳入:
- `compare/001-2/uploads/*.md`2 份
- `compare/002-21/uploads/*.md`21 份
- `compare/003-10/uploads/*.md`10 份
- `compare/004-2/uploads/*.md`2 份
- `compare/005-3/uploads/*.md`3 份
- `compare/006-3/uploads/*.md`3 份
- `compare/007-4/uploads/*.md`4 份
排除:
- 8 份 README:它们是测试说明,不是待清洗输入。
- `review.json``blocks_*.json``match_index.json``summary.json`:它们是旧输入产生的下游结果,只用于理解测试背景,不能作为清洗真值。
- `file_*_reviewed.docx`:本次未把它们当作 Markdown 清洗对象;后续可作为辅助核对材料,但是否能作为权威源需单独确认。
### 2.2 基础规模
45 份输入合计约 36.39 MiB、388,482 个物理行。所有文件都能按 UTF-8 读取,但“能解码”不代表内容无损,文件中仍有 `` 和私用区字符。
下表中的“幻觉特征”使用一组偏保守的固定模板进行计数,包括 `The quick brown fox...`、勾股定理模板、`The image contains...``The concept of a concept...``The steps are:` 等;因此它只是明确下限,不包含全部乱码和中文重复污染。
| 用例 | 文档数 | 大小 MiB | 行数 | HTML 表格 | GFM 表格行 | 图片引用 | 空 Base64 占位 | 幻觉特征 | 最大单行字符数 | 总体判断 |
|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---|
| 001-2 | 2 | 6.41 | 48,450 | 2,596 | 0 | 109 | 0 | 0 | 4,482 | 高风险:表格未闭合、重复率极高、图片定位不可用 |
| 002-21 | 21 | 15.23 | 158,462 | 2,593 | 592 | 2,000 | 0 | 1,530 | 28,624 | 严重:模型幻觉和重复文本最集中 |
| 003-10 | 10 | 9.20 | 116,358 | 1,646 | 2 | 1,793 | 0 | 137 | 261,838 | 严重:存在灾难性长行、乱码、幻觉和 LaTeX 污染 |
| 004-2 | 2 | 0.41 | 5,726 | 109 | 0 | 36 | 0 | 7 | 8,001 | 高风险:OCR 语义错误、缺图、幻觉 |
| 005-3 | 3 | 2.67 | 31,537 | 476 | 0 | 359 | 0 | 7 | 11,599 | 高风险:重复、缺图、表格和少量幻觉 |
| 006-3 | 3 | 1.12 | 14,701 | 130 | 0 | 162 | 0 | 22 | 9,151 | 高风险:含 OCR 文档,仍有明显幻觉和缺图 |
| 007-4 | 4 | 1.35 | 13,248 | 0 | 2,792 | 4,012 | 4,012 | 0 | 5,916 | 严重:图片内容全部为无效占位,表格和 Word 目录损坏 |
## 3. 对下游“文件对比”功能的直接影响
这些污染会系统性扭曲相似度,不只是影响阅读体验:
- `The quick brown fox...` 等同一幻觉模板出现在多个本来无关的投标文件里,会制造跨文档假阳性匹配。
- 007 中 4,012 个完全相同的空图片占位符会被当成大量相同行。
- 001 中同一“综合单价分析表”说明被重复约 900 次;这与 README 中 001、003 的“近似匹配占 99% 以上”和超大 `review.json` 有明显关联。这里只能判断为高度可疑的影响因素,不能在没有重新跑对比的情况下断言它是唯一原因。
- 平铺成一级标题、把表格压成一行、把页眉页脚混入正文,会改变分块边界,并使段落/句子/近似三档匹配分布失真。
- 如果把不同手机号、身份证号、图片都统一替换成同一个 `[PHONE]``[ID]``[IMAGE]`,又会制造新的假相同内容。因此占位符必须保留“不同原值不同 token”的性质。
清洗后必须重新生成 `blocks_*.json``match_index.json``review.json``summary.json`。旧匹配数量不能作为清洗后的等值验收条件,应保留为“脏输入性能基线”,另建“干净输入语义基线”。`fileIndex` 和测试用例映射必须保持不变。
## 4. 问题清单与清洗要求
### 4.1 C001:固定模板型模型幻觉
优先级:P0,阻断语义版交付。
已确认的例子包括:
- `The quick brown fox jumps over the lazy dog.`:全库 1,071 次。
- `The equation $x^2 + y^2 = z^2$ represents a Pythagorean triple...`:全库 62 次。
- `The image contains a single character...`
- `The concept of a concept is fundamental in physics...`
- `- The steps are:`
- `Agree to be`
- `汽车法规和商业期刊的出版`
典型证据:
- `002-21/file_14` 第 1,164 行:一行内重复 `quick brown fox` 约 411 次。
- `002-21/file_3` 第 3,804 行:同类重复约 428 次。
- `002-21/file_5` 第 2,915 行:`The image contains...` 及数字说明被重复扩展。
- `002-21/file_8` 第 5,379 行:28,624 字符的英语概念重复行。
- `003-10/file_2` 开头即出现无关英文、勾股定理和中文乱码。
清洗要求:
1. 固定模板命中后先标记其所在段、表格单元格和推定页面,不应只删除匹配到的几个单词。
2. 有源 PDF 时,按页或按区域重新提取;没有源文件时,将该段放入 `quarantine`,不能把删除后的残缺上下文冒充完整正文。
3. 黑名单适合做拦截器,不适合做唯一清洗器。应再检测异常语言切换、低词汇多样性、同短语高频循环和超长单行。
4. 清洗结果中这些已知模板必须为 0;审计文件须记录被移除的原始范围和回源依据。
### 4.2 C002:超长重复串和退化输出
优先级:P0/P1,视能否回源而定。
典型问题:
- `003-10/file_2` 第 91 行长 261,838 字符,主体是目录点线重复。
- 同文件第 8,924 行长 19,089 字符,主体是重复的 LaTeX `\rightarrow`
- `002-21/file_15` 第 4,898 行长 11,267 字符,主体是重复 `\textcolor{red}{\blacksquare}`
- `003-10/file_7` 第 24,211 行含嵌套、重复的 `\textcolor{red}`
- 多处出现成千上万次的 `园``\cdots``...` 或错误短语,例如“建设工程执行”。
检测规则建议:
- 普通文本单行超过 2,000 字符告警,超过 10,000 字符阻断;结构化表格在解析后按单元格重新执行该规则。
- 同一字符连续 20 次以上、同一 2—20 字符片段连续 10 次以上告警。
- 单行压缩率异常高、唯一 token 比例过低、相邻重复 n-gram 比例过高时进入隔离。
- 目录点线只保留为结构化 TOC 信息,不保留数十万字符的视觉填充。
不允许简单按固定长度截断,因为长 HTML 表格可能包含真实内容。必须先判断是表格、目录点线、Base64、SVG 还是普通文本。
### 4.3 I001:图片引用全部失效
优先级:P0。
全库有 8,471 个图片引用,本地图片资产为 0:
- 0074,012 个 `![](data:image/jpeg;base64...)` 或 PNG 变体。这里的 `...` 是文本,不是被终端隐藏的真实数据,无法解码恢复。
- 001109 个目标形如 `page=9,bbox=[...]`,不是标准图片路径,也没有对应裁剪图。
- 其余:4,350 个 `images/<hash>.jpg` 等相对引用,但仓库中不存在相应文件。
- 7,073/8,471 个图片没有 alt 文本。
清洗要求:
1. 从原始 PDF/DOCX 回源导出图片,使用内容哈希命名,并生成 `assets/manifest.json`
2. 对印章、签名、证书、身份证件、扫描表格等“有语义图片”执行 OCR/版面识别,但仍要保留原图引用,不能只留推测文本。
3. 001 的 `page+bbox` 必须转换为结构化来源坐标,再从对应 PDF 裁剪;不能直接当 Markdown URL。
4. 如果确实采用纯文本模式,图片位置应写成唯一、可追踪的标记,例如 `[IMAGE_MISSING:007-4:file_1:0001]`,不能用所有文件共享的 `[IMAGE]`,否则会制造假匹配。
5. 生产级“完整清洗”验收要求 broken reference 为 0。无法回源的图片必须明确标为未解决,不能计作完整通过。
### 4.4 T001HTML 表格损坏和超长单行
优先级:P0/P1。
41 份文件中共有 7,550 个 HTML 表格。静态标签计数如下:
- `<table>` 7,550`</table>` 7,155。
- `<tr>` 101,760`</tr>` 101,019。
- `<td>` 657,263`</td>` 656,575。
- 35/41 份含 HTML 表格的文件至少有一类标签不平衡;7 份连 table 层级都不平衡。
001 最严重:
- `file_0``table=1315/1124`
- `file_1``table=1281/1080`
清洗要求:
1. 使用容错 HTML 解析器构建 DOM,记录解析器自动补齐了哪些标签;禁止用正则直接替换所有表格标签。
2. 对每个表格校验 `rowspan/colspan` 展开后的网格是否矩形、行列数是否与表头一致、单元格顺序是否可追溯。
3. 简单矩形表格可转为 GFM;包含合并单元格、斜线表头、嵌套结构的表格应保留规范化 HTML,或另存为结构化 JSON。强行转 GFM 会丢失语义。
4. 一行一个完整 HTML 表格应格式化为多行结构,避免长行拖垮分块器和 diff,但换行必须发生在 DOM 节点之间。
5. 类似 `004-2/file_0` 第 613 行中“国家、职位、导演、客户”等明显不符合资格审查表语境的表头,应回源确认,不能只修标签。
### 4.5 T002GFM 表格行列数不一致
优先级:P1。
007 四份文件共有 203 个连续 GFM 表格块、2,792 个表格行,至少 60 个表格块出现不同行拥有不同列数:
- `file_0`36 个块,21 个不一致。
- `file_1`55 个块,20 个不一致。
- `file_2`42 个块,7 个不一致。
- `file_3`:70 个块,12 个不一致,另有 2 个块缺分隔行。
此外,`002-21/file_7` 有一个 584 行的大型 GFM 表格,同时出现 3 列和 5 列;`002-21/file_3` 也有不一致的孤立表格块。
这通常是把 Word/PDF 合并单元格硬投影到 GFM 的结果。清洗器应先恢复二维网格;无法无损表达的表格应改用规范 HTML/JSON,而不是补若干空 `|` 来“通过语法检查”。
### 4.6 H001:标题层级扁平、标题断裂和错误标题
优先级:P1。
问题表现:
- 001—006 几乎把所有章节都输出为 `#`,没有文档层级。
- 存在 `#零星维修...``#(正本)` 等缺少空格的标题。
- 存在只有 `#` 的空标题。
- 同一个标题被版面换行切成多个连续一级标题,例如项目名称被拆成 2—3 行。
- 普通正文、图片识别结果和幻觉句子也被错误标成标题。
清洗要求:
1. 每个逻辑文档保留一个主标题 H1;主要章为 H2,节为 H3,依次递进,不跳级。
2. 使用编号模式(“第一章”“一、”“(一)”“1.”)、目录结构、相邻上下文和重复页眉信息共同推断层级。
3. 连续短标题行在确认属于同一版面标题后合并;不能只根据行长合并。
4. 修复 `#标题``# 标题`,删除空标题;被判为正文的行去掉标题标记。
5. 标题文本中的项目编号、公司名、年份不得因规范化而改变。
### 4.7 P001:段落、硬换行和词内断裂
优先级:P1。
151,616 行以两个空格结尾,主要来自 002—006 的转换器。这会把几乎每个物理行强制为 Markdown `<br>`,使原本同一段的文字被切碎。还存在:
- `物 业``项 目``服\n务项目` 等版面换行造成的词内空格或断行。
- 页码、目录页码和正文混在同一行。
- 句子被错误拼接成超长段,或每句话都被拆成独立段。
- 项目编号中的连字符被转义成 `440442\-2025\-00435`,同一标识在不同文件中形式不一致。
清洗要求:
1. 先识别标题、列表、表格、地址、编号、签名区,再做段落重组。
2. 普通段落内部把版面软换行合并为空或一个空格;中文字符之间通常直接合并,中英/数字边界按规则保留空格。
3. 列表项、诗行、地址、落款、表格单元格内的有意义换行不得统一删除。
4. `\-` 仅在确认是转换器多余转义时还原;项目编号和负号的字符本身必须保留。
5. Unicode 采用 NFC,不建议全局 NFKC;NFKC 可能改变罗马数字、圈号、单位和兼容字符的法律原貌。
### 4.8 D001:页眉、页脚、目录页码和文档边界
优先级:P1。
已检测到至少 1,166 个“独立页码样式候选”,但其中也会混入 `0/1000` 等评分或限制值,所以不能仅凭正则删除。明确例子包括 `1 / 390``368 / 390``4 / 6`
清洗要求:
- 只有在同一文本出现在多页相近顶部/底部位置,或页码形成合理序列时,才判定为页眉页脚。
- `clean_fidelity.md` 可通过元数据保留页码映射;`clean_compare.md` 删除纯版式页码和重复运行标题。
- 002 中 `file_16``file_19` 开头分别表现为符合性审查、综合文件、商务部分、技术部分,可能是同一投标人的分卷/分册。清洗器必须保存原始 `fileIndex` 和卷册边界,不能自行拼接。
- 目录文本可转换为结构化章节导航;目录点线和页码不应参与正文相似度。
### 4.9 D002:重复内容与模板内容
优先级:P1,但严禁盲删。
重复既可能是转换器错误,也可能是投标文件真实模板。典型统计:
- 001 两份文件非空行重复比例分别为 81.8% 和 84.1%。同一“综合单价分析表”及说明出现约 900 次。
- `002-21/file_3` 非空行重复比例 44.8%,含“装约买箱箱装”等乱码高频重复。
- `002-21/file_15``Agree to be` 重复 813 次。
- `002-21/file_5``- The steps are:` 重复 818 次。
- `002-21/file_20` 中目录式条目“施工等级 282”“工期保证措施 282”分别重复 165、164 次。
处理原则:
1. 明确的幻觉/转换器退化重复应回源替换或隔离。
2. 重复页眉、页脚、页码在对比版删除。
3. 合法合同条款、报价表说明和表头在忠实版保留。对比版可把同一文档内重复模板块标为同一 `template_block_id`,在相似度计算时降权,而不是直接删除。
4. 跨文档共同出现的合法招标模板本来就是对比目标的一部分,不应因“重复”而全部抹除。项目需要明确是检测抄袭、检测共同模板,还是两者分别评分。
### 4.10 L001Word/PDF 转换遗留语法
优先级:P1/P2。
包括:
- 007 `file_1` 有 171 个 `(#_Toc...)` Word 目录链接,但全库没有对应显式锚点。
- 001 有 2,594 个 `<div align="center">`,用 HTML 仅表达居中版式。
- 575 个行内数学片段中有不少重复的 `\textcolor``\rightarrow``\cdots` 和勾股定理幻觉。
- 20 个私用区字符主要是 U+F0B7、U+F070、U+F0D8,常见于 Wingdings/项目符号映射。
- 10 个 `` 出现在 7 份文件中,已经无法靠 Unicode 规范化恢复原字符。
处理要求:
- Word TOC 链接要么根据清洗后标题生成真实 slug,要么移除链接只保留目录文字;不得保留悬空锚点。
- 纯版式 `<div align>` 转成语义标题/段落;居中信息可进样式元数据。
- 私用区字符按原字体映射或源文件回查,不能一律删除。
- `` 必须逐处回源,无法回源时产生显式未解决项。
- LaTeX 只有在源文件确实包含公式/符号时保留;重复生成的视觉符号应由原图或文本含义替代。
### 4.11 S001:真实个人和企业敏感信息
优先级:如果测试数据会离开受控环境,则为 P0;仅限封闭授权环境时也必须有访问控制。
候选扫描结果:
| 类型 | 候选次数 | 涉及文件数 |
|---|---:|---:|
| 身份证号 | 1,976 | 37 |
| 手机号 | 477 | 41 |
| 邮箱 | 103 | 33 |
| 统一社会信用代码 | 3,259 | 43 |
| “身份证号/联系电话/银行账号/法定代表人”等敏感字段标签 | 2,276 | 44 |
建议提供独立的 `privacy_profile`,而不是把脱敏与文本纠错写死在一起:
- `closed_authorized`:保留原值,仅限受控测试;日志不得打印原始敏感值。
- `masked_compare`:使用确定性、按实体区分的伪名,例如不同手机号映射成不同的 `<PHONE_0001>``<PHONE_0002>`;相同原值是否跨文档保持相同 token,由对比目标决定。
- `public_sample`:除文本脱敏外,还要处理身份证图片、签名、印章、照片、二维码和图片元数据。
不要把所有值都替换成同一个通用 token,否则会造成大规模假相似。
## 5. 分用例处置建议
### 5.1 001-2:建筑工程投标文件
主要问题:
- 两份文档共有 2,596 个 HTML 表格,table 层级分别缺少约 191 和 201 个闭合标签。
- 非空行重复率超过 80%,大量综合单价分析表说明重复。
- 109 个图片引用都是 `page+bbox`,没有图片资产。
- 标题几乎全部为 H1,另有大量居中 `<div>`
建议:两份原始 PDF 都在 `source/`,应优先重新执行带页码、坐标和图片导出的版面解析。001 不适合靠修补现有 HTML 完成最终清洗。现有 Markdown可保留为“旧解析器回归样本”。
### 5.2 002-2121 份江门市中心医院投标文件
这是内容污染最集中的用例。21 份中 19 份命中明确幻觉模板,保守特征合计 1,530 次;全部含失效图片和 HTML 表格。
重点文件:
| fileIndex | 重点问题 | 建议 |
|---:|---|---|
| 0 | 28 次保守幻觉特征;多处 quick/equation150 个 HTML 表格 | 回源重提取污染页 |
| 1 | 12 次特征;重复率 22.5%;表格长行 | 回源并做重复块检查 |
| 2 | 5 次特征;含 ``;表格长行 | `` 逐处回源 |
| 3 | 454 次特征;quick 约 428 次;重复率 44.8%;乱码高频;GFM 表格不一致;含 `` | 灾难性污染,整文档重新提取 |
| 4 | 少量明确幻觉;表格长行 | 按命中页重提取 |
| 5 | 475 次特征;`The steps are:` 约 818 次;含 U+F0D8 | 灾难性污染,整文档重新提取 |
| 6 | 13 次特征 | 按命中页重提取 |
| 7 | 12 次特征;584 行 GFM 表格列数不一致;重复率 25.4% | 表格回源重建,核查文本污染 |
| 8 | 19 次特征;28,624 字符英语重复行 | 至少该页重提取,建议整文档重跑 |
| 9 | 9 次特征 | 按命中页重提取 |
| 10 | 11 次特征;HTML 表格层级也有缺口 | 回源重提取污染页并修表 |
| 11 | 9 次特征 | 按命中页重提取 |
| 12 | 20 次特征;10,937 字符 `The image contains...` 行 | 回源重提取污染页 |
| 13 | 16 次特征 | 按命中页重提取 |
| 14 | 422 次特征;单行 quick 重复约 411 次;还有中文短语退化重复 | 灾难性污染,整文档重新提取 |
| 15 | `Agree to be` 约 813 次;超长 `\textcolor` 行;重复率 20.4% | 灾难性污染,整文档重新提取 |
| 16 | 少量幻觉;内容像单独卷册;重复率 26.3% | 保留卷册边界,按页核查 |
| 17 | 7 次特征;含 ``;可能为分册 | 回源并保留边界 |
| 18 | 未命中当前固定模板,但仍有缺图、H1 扁平和 HTML 表格 | 不能视为干净;做结构清洗和抽检 |
| 19 | 未命中当前固定模板,但仍有 53 个缺失图片及表格 | 做结构清洗和抽检 |
| 20 | 少量特征;目录条目成百次重复 | 识别目录/正文边界并去版式重复 |
本用例没有保存原始 PDF,只有 Markdown 和 reviewed DOCX。清洗项目开始前应确认能否从旧存储追回原上传文件;如果不能,不能宣称已完成内容级无损修复。
### 5.3 003-1010 份物业投标文件
该用例有原始 PDF,可建立最可靠的回源修复和质量评测。
| fileIndex | 重点问题 | 建议 |
|---:|---|---|
| 0 | 缺图、H1 扁平、HTML 表格 | 结构清洗,按页抽检 |
| 1 | 至少 1 次明确模板污染;缺图和表格 | 命中页重提取 |
| 2 | 开头即乱码/幻觉;63 次保守特征;261,838 字符点线;19,089 字符箭头行 | 最高优先级,整份从 PDF 重提取 |
| 3 | 37 次特征;505 个缺图;HTML 表格 | 整份重提取或至少覆盖全部命中页 |
| 4 | 模板污染;含 ``;表格长行 | 回源修复字符和污染页 |
| 5 | 5 次特征;含 `` | 回源修复 |
| 6 | 未命中固定模板,但有缺图和表格 | 结构清洗,抽检 |
| 7 | 29 次特征;重复 `\textcolor`3 个 U+F0D8;392 个缺图 | 整份重提取优先 |
| 8 | 少量模板污染;运行标题重复明显 | 修污染页,移除对比版页眉 |
| 9 | 4 个 ``;超长/重复汉字;大表格 | 回源重提取异常页并修表 |
### 5.4 004-2:采购文件
- `file_0`:图片缺失、H1 断裂、HTML 表格;第 613 行表头语义明显异常。
- `file_1`:7 次保守幻觉特征、重复率 27.0%、34 个缺图,并有长重复汉字。
该目录没有原始 PDF。应优先追回源文件;reviewed DOCX 只能在确认其来源和人工修改范围后作为替代依据。
### 5.5 005-3:响应文件
- 三份文档都命中少量明确幻觉特征,分别约 3、1、3 次。
- 非空行重复率约 30.4%、20.9%、31.9%。重复中既可能有劳动合同模板等真实内容,也可能有转换器重复,必须区分。
- `file_2```,且有 11,599 字符的单行 HTML 表格。
- 三份共有 359 个失效图片和 476 个 HTML 表格。
建议先按异常页回源;若源文件不可得,则至少将不确定片段隔离并生成未解决清单。
### 5.6 006-3:含 OCR 的投标文件
- README 标注 `file_1``file_2` 为 OCR 版;三份文档段落规模差异很大。
- `file_0` 命中 21 次保守幻觉特征,说明非 README 标注的 OCR 文件也不能默认安全。
- `file_2` 命中 1 次明确特征;`file_1` 未命中当前固定模板,但仍有缺图和结构问题。
- 三份共有 162 个失效图片、130 个 HTML 表格。
建议把 006 作为 OCR A/B 测试集:逐页记录“文本层提取、传统 OCR、视觉模型”三个结果的字符错误率、结构恢复率和幻觉率,不应只比较最终段落数。
### 5.7 007-4:纯文字投标文件
README 称其为“纯文字(无表格)”,但 Markdown 实际有 2,792 个 GFM 表格行,说明转换器很可能用表格表达页面布局,而非文档真的包含大量语义表格。
- `file_0`1,159 个空 Base64 图片占位;21 个行列不一致表格块;8 个 U+F0B7。
- `file_1`:1,113 个空占位;20 个不一致表格块;171 个悬空 Word TOC 链接。
- `file_2`:1,048 个空占位;7 个不一致表格块;U+F070 7 个、U+F0D8 1 个。
- `file_3`:692 个空占位;12 个不一致表格块;2 个表格块缺分隔行;4 个空/异常标题。
这四份文档即使文本看起来较整齐,也因图片数据已丢失而不能算完整。应从原上传文件重新导出图片和表格;没有源文件时只能产出明确标注“不完整”的文本版。