63 lines
3.7 KiB
Markdown
63 lines
3.7 KiB
Markdown
|
|
# PPT 与海报生成全链路 Phase 1 实施记录
|
|||
|
|
|
|||
|
|
日期:2026-08-02
|
|||
|
|
依据:`PPT与海报生成全链路详细修复计划书_20260802.md` Phase 1
|
|||
|
|
|
|||
|
|
## 1. 本轮完成范围
|
|||
|
|
|
|||
|
|
### P1-A:统一文档摄取
|
|||
|
|
|
|||
|
|
- 新增 `api/insurance/document/ingest.py`,统一校验 PDF 内容、文件大小、页数、SHA-256、Document IR 和缓存键。
|
|||
|
|
- 支持 PyMuPDF 与 pdfplumber 版面解析,逐页保存真实文本块 bbox、读取顺序和质量。
|
|||
|
|
- PDF 分类不再依赖全文乱码率,综合逐页文本量、可读率和图像覆盖率判断 native/scanned/mixed。
|
|||
|
|
- OCR 以低质量页优先并受页数、像素预算约束;超预算明确标记 partial/blocked。
|
|||
|
|
- Tesseract OCR 使用 TSV 输出恢复真实词块坐标;渲染支持 PyMuPDF 和 pypdfium2。
|
|||
|
|
- 删除兼容解析器中的 120000 字符全局截断;业务选择器仍按页面和单次调用预算分块。
|
|||
|
|
- 缓存键包含文档哈希、parser、OCR、profile、规则、模型和 Prompt 版本。
|
|||
|
|
- 文件缺失、格式错误、加密、超大小、超页数、组件缺失和低质量使用结构化错误。
|
|||
|
|
|
|||
|
|
### P1-B:表格与跨页关系
|
|||
|
|
|
|||
|
|
- 新增 `layout.py` 与 `tables.py`,保留表格 bbox、列位置、表头、页面和行结构。
|
|||
|
|
- 跨页识别同时校验连续页、场景、表头指纹、左右边界和列坐标。
|
|||
|
|
- 行主键使用 `(table_id, scenario_type, policy_year, row_variant)`。
|
|||
|
|
- 删除“只按 policy_year 选择更完整行”的覆盖逻辑;同主键不同值保留全部候选并生成 unresolved conflict。
|
|||
|
|
- 来源页由实际页面摄取过程写入;模型页码只有在原值能在该页真实 bbox 中找到时才可形成证据。
|
|||
|
|
|
|||
|
|
### P1-C:EvidenceRef
|
|||
|
|
|
|||
|
|
- 新增 `evidence.py`,提供 Schema 兼容的 EvidenceRef、最小原文片段和 SHA-256。
|
|||
|
|
- 建立字段到页面区域、页面区域到字段的双向索引。
|
|||
|
|
- PPT 与海报 Worker 都会把解析值映射到本次 Document IR 的真实文本块;无法定位原值时不创建证据。
|
|||
|
|
- 新增受鉴权接口:
|
|||
|
|
- `GET /insurance/documents/{id}`
|
|||
|
|
- `GET /insurance/documents/{id}/pages/{page}`
|
|||
|
|
- `GET /insurance/documents/{id}/pages/{page}/preview`
|
|||
|
|
- `GET /insurance/documents/{id}/evidence?fieldPath=...`
|
|||
|
|
|
|||
|
|
### 数据与安全
|
|||
|
|
|
|||
|
|
- 新增 `migrate_036.py` 和三张表:`insurance_documents`、`insurance_document_pages`、`insurance_document_tables`。
|
|||
|
|
- `(user_id, sha256)` 唯一,不跨用户复用授权。
|
|||
|
|
- `expires_at` 暂时可空;业务未确认留存期限前不启用自动清理。
|
|||
|
|
- PPT 会话、任务、海报记录和计划书上传响应统一移除本地路径,改用布尔状态或受鉴权下载地址。
|
|||
|
|
|
|||
|
|
## 2. 验证结果
|
|||
|
|
|
|||
|
|
- 后端目标回归:123 passed,3 skipped;跳过项为系统 Python 缺少 PDF/PPT 可选运行时。
|
|||
|
|
- 工作区 PDF/PPT 运行时回归:95 passed,无跳过。
|
|||
|
|
- 真实 PDF:Document IR Schema、bbox 摄取、SQLite 迁移与分页持久化通过。
|
|||
|
|
- 前端 `vue-tsc`:通过。
|
|||
|
|
- 前端生产构建:通过。
|
|||
|
|
- Python `compileall`:通过。
|
|||
|
|
- `git diff --check`:通过,仅有仓库换行符提示。
|
|||
|
|
|
|||
|
|
## 3. 尚未达到的 Phase 1 出口门禁
|
|||
|
|
|
|||
|
|
- Goldens 仍为 0/10,无法可信测量跨页表行召回率、扫描件 OCR 准确率和关键金额证据覆盖率。
|
|||
|
|
- Tesseract 的繁体/简体语言包和生产任务预算仍需在实际部署环境验证。
|
|||
|
|
- 未建立 migrate_037 的独立 evidence 表;当前 EvidenceRef 随现有 PPT extraction 或海报 parsed_data 保存,待 Phase 2/3 迁移到版本化 PlanData Snapshot。
|
|||
|
|
- 尚不能声称“每个关键金额都有 bbox”;代码已失败关闭且不伪造证据,但真实覆盖率必须由获批样本证明。
|
|||
|
|
|
|||
|
|
因此本轮完成 Phase 1 的代码基础和兼容接入,但 Phase 1 数据质量出口仍保持阻断。
|