docs(architecture): 完成技术验证 S1–S4,确定 FR-M2-05/06 目标值
- spikes/:Word 转 PDF(Gotenberg)、格式识别、原句坐标、DeepSeek 抽取四项验证代码与两版提示词;样本派生产物和 .env 不进 git - tech-validation.md:完整结论。四项都可行:WPS 字体字符集要修正并改用行高调整过的字体;格式识别不需要 Docling;表格内切句待改进;抽取需第三道依据校验与规则兜底 - architecture.md:§3.5 加预处理与字体包,§3.6 证据校验改为三道,§10 回填结论 - 03 功能需求与 decisions.md(TV1):召回 ≥ 99%、采纳准确率 ≥ 95%、页码 100%、高亮正文 ≥ 98% / 表格 ≥ 95% Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -197,12 +197,14 @@ flowchart LR
|
||||
|
||||
```
|
||||
上传 → 格式识别(看文件头,不看扩展名)
|
||||
→ 转换(DOC / DOCX / WPS → PDF,用 Gotenberg + LibreOffice)
|
||||
→ 预处理(旧版 DOC / WPS 先转 DOCX;修正被错标成 SYMBOL 字符集的中文字体,见技术验证 S1)
|
||||
→ 转换(DOCX → PDF,用 Gotenberg + LibreOffice + 按宋体行高调整过的开源字体包)
|
||||
→ 转换质量检查(大段 OpenSymbol 字体、抽出的文字大量重复同一个字 → 判为转换异常,不扣点)
|
||||
→ 规范化 PDF(只生成一次,存哈希,以后不再重新生成;它是出处页码的唯一依据)
|
||||
→ 文字层(逐字的坐标、字体、斜体、下划线;按行、句、块切分,给出稳定编号)
|
||||
→ 逐页检查覆盖:文字太少的页交给 OCR(PaddleOCR),OCR 结果并入文字层
|
||||
→ 结构识别(章节、表格、分包、「标注规则说明」)
|
||||
→ 交给 ai 模块抽取 → 两道证据校验 → 并入检查清单
|
||||
→ 交给 ai 模块抽取 → 三道校验(编号、原文、依据)→ 标注类条款规则兜底 → 并入检查清单
|
||||
```
|
||||
|
||||
关键设计:
|
||||
@@ -210,10 +212,11 @@ flowchart LR
|
||||
- **文字层是一份带编号的数据**:每一句都有编号(文档 + 页 + 序号),并记录它在原文中的字符范围和坐标框。模型只能引用句子编号;高亮时按坐标框画,直接满足「原句高亮」(FR-M2-06)。
|
||||
- **格式必须保留**:PDF 里的斜体靠字体名或字形倾斜判断,下划线靠文字下方的线条判断,加粗靠字体粗细判断。转成模型的输入时,这些格式变成文本标记(例如 `<u><i>…</i></u>`),对应样本结论 F1。DOCX 原文件里的格式信息可以用来交叉校验。
|
||||
- **PDF 库选择**:用 pypdfium2(Apache / BSD)和 pdfplumber(MIT)。**不用 PyMuPDF**,它是 AGPL 许可,或者要买商业授权。
|
||||
- **布局分析**:Docling(MIT)作为候选,在技术验证 S2 里和自研方案对比。MinerU 历史上用 AGPL 许可,选用前要核实它当前的许可证。
|
||||
- **布局分析**:S2 已验证,**不用 Docling 做主解析器**:它从 DOCX 解析能保留格式但没有坐标,从 PDF 解析有坐标但丢了格式,CPU 上 199 页要 96 秒。文字层自己从规范化 PDF 提取(格式 + 坐标都有)。Docling 的表格结构识别可以作为表格切句的候选。MinerU 历史上用 AGPL 许可,选用前要核实它当前的许可证。
|
||||
- **DOCX 交叉校验**:读 DOCX 文字时要同时读 `<w:t>` 和 `<w:sym>`(WPS 文档转换后有一部分正文是符号字符),并处理样式继承(S1、S2)。
|
||||
- **字体与页码**:Word 转 PDF 的分页取决于字体。招标文件常用宋体、仿宋、黑体,这些是商业字体,不能随镜像分发。替代字体会导致分页和用户在 Word 里看到的不同。处理办法:
|
||||
- 出处页码统一按规范化 PDF 计,界面上说明「页码以系统转换后的 PDF 为准」。
|
||||
- 字体替换表要测试,S1 验证偏差有多大。
|
||||
- 出处页码统一按规范化 PDF 计,界面上说明「页码以系统转换后的 PDF 为准」。平台导出的 DOCX(例如苏采云,由 ONLYOFFICE 生成)本来就没有记录 Word 里的页数,用户看到的分页取决于他们自己的软件,所以这条是必需的。
|
||||
- S1 结论:分页偏差的主因是行高。用 Noto CJK 克隆出行高 1.0em 的「BD Song / BD Hei」(OFL,改名后仍按 OFL 分发),加 fontconfig 替换规则,有真值的 5 个数据点偏差都在 ±3% 内;默认配置偏差 +17%~+37%。
|
||||
- 私有化时,客户如果有正版字体,可以挂载进去。
|
||||
- **沙箱**:转换服务不开网络出口,不运行宏,限制 CPU、内存和处理时长;上传入口要拦截 zip 炸弹和超大文件。
|
||||
|
||||
@@ -249,12 +252,15 @@ flowchart LR
|
||||
|
||||
`ai_call` 表记录以下字段:租户、关联任务、任务类型、能力、供应商、模型、提示词编号、提示词版本、提示词哈希、输入哈希、输出哈希、token 数、耗时、错误类别、降级到了第几级。它既是审计依据(T1),也是成本核算和对比模型效果的数据源。**不存文档原文**:要排查问题时,凭输入哈希去对象存储里取。
|
||||
|
||||
**两道证据校验(适用于所有 AI 结论)**
|
||||
**三道校验(适用于所有 AI 结论)**
|
||||
|
||||
1. **编号校验**:引用的句子编号必须在本次输入的范围内,而且类型要对得上。
|
||||
2. **原文校验**:模型给出的引文,去掉空白后必须是所引句子原文的子串,允许按规则做极小的差异容忍。
|
||||
3. **依据校验**(S4 验证后新增):模型声称的依据,用确定性信号核对。例如说是 ★ 条款,原句里就要有 ★;说是斜体下划线,原句就要有这种格式;说是「写明无效」,原句或相邻句就要有无效类字样。S4 里,不加这一道时模型会大量标错依据,采纳条目只有 36.7% 属实;加上后是 95.2%。
|
||||
|
||||
两道都通过,结论才能进正式清单或成为有效的问题。没通过的,按情况降级为「待确认」或「提示」。投标文件一侧同样如此:**没有证据的结论不能判为「已响应」**。
|
||||
**标注类条款用规则兜底**:★、* 和文件声明了的斜体下划线,都能从规范化 PDF 上确定性识别出来。这类句子必须被某个条目覆盖;模型没覆盖的,系统自动生成一条「待确认」,召回不完全依赖模型。
|
||||
|
||||
三道都通过,结论才能进正式清单或成为有效的问题。没通过的,按情况降级为「待确认」或「提示」。投标文件一侧同样如此:**没有证据的结论不能判为「已响应」**。
|
||||
|
||||
### 3.7 规则引擎(确定性检查)
|
||||
|
||||
@@ -752,6 +758,17 @@ docs/ # 现有文档
|
||||
|
||||
S1–S4 风险最高,建议先做;S8(桌面外壳 PoC)等桌面版立项时再做。
|
||||
|
||||
**S1–S4 已于 2026-11-03 完成**,详见 `tech-validation.md`,代码在 `spikes/`。结论:
|
||||
|
||||
| # | 结论 | 关键数字 |
|
||||
|---|---|---|
|
||||
| S1 | 可行,但要加两步:修正 WPS 错标的字体字符集,换成按宋体行高调整过的开源字体。Gotenberg 有 arm64 镜像,自带 LibreOffice 26.8.1;10 份文件都没有崩溃 | 默认配置偏差 +17%~+37%,S07 正文空白;调整后有真值的 5 个数据点都在 ±3% 内。本批样本没有含 OLE 嵌入对象的文件,未测 |
|
||||
| S2 | 可行,在规范化 PDF 上识别格式,不需要 Docling | 斜体且下划线:4 份文件按字符 100% 一致 |
|
||||
| S3 | 正文可行;表格内和页眉页脚带要改进切句 | 几何回读 300/300;文本保真:正文 97.5%,表格 78% |
|
||||
| S4 | 可行,加上第三道依据校验和规则兜底 | ★ 召回 93.5%(扣除银标准噪音后约 96.6%),斜体下划线 99.8%;采纳条目 95.2% 属实;单项抽取每份约 0.15 元(DeepSeek Flash,高峰价) |
|
||||
|
||||
据此建议:FR-M2-05 标注类条款召回 ≥ 99%(规则兜底 + 模型),采纳条目准确率 ≥ 95%;FR-M2-06 出处页码正确率 100%,原句高亮准确率正文 ≥ 98%、表格 ≥ 95%(`tech-validation.md` §5)。
|
||||
|
||||
## 11. 架构决策清单
|
||||
|
||||
| # | 事项 | 结论 | 状态 |
|
||||
|
||||
Reference in New Issue
Block a user