Files
leaudit-platform-backend/docs/文档图片质量校验模块/文档图片质量校验模块-页码级模糊预警简化版.md

7.8 KiB

文档图片质量校验模块定制开发计划

1. 目标收口

本次版本只做“页码级模糊预警”,不做图片级定位。

系统最终只需要给出这类提示:

  • 第3页疑似模糊
  • 第2页、第5页疑似模糊
  • 第4页建议重拍

不需要输出:

  • 第几张图片
  • 图片框选位置
  • bbox
  • 裁剪图回显
  • OCR 图块级关联

这次方案的核心原则只有两条:

  • 只做预警,不阻断主流程
  • 只做到页码,不追求图级精确定位

2. 与当前 OCR / 评查链路的关系

本模块必须独立于当前 OCR 抽取、评查流程之外。

现有主流程保持不变:

  1. 用户上传文档
  2. 文档进入 OCR / 抽取 / 评查 pipeline
  3. 系统继续正常落库、展示、评查

新增流程只是一条旁路异步任务:

  1. 文档上传成功
  2. 异步投递“页级图片质量检测任务”
  3. 后台生成页码级预警结果
  4. 前端在列表页、详情页显示提示

明确约束:

  • 图片质量检测失败,不影响上传
  • 图片质量检测超时,不影响 OCR
  • 图片质量检测发现模糊页,不影响评查
  • 整个模块只作为 warning,不参与主流程 gate

3. 检测范围与判定结果

3.1 启用策略

建议保留三层控制:

  • 全局总开关
  • 文档类型维度开关
  • 地区维度开关

判定顺序:

  1. 先看全局总开关
  2. 再看文档类型是否命中
  3. 再看地区是否命中

只要任一环节不命中,就直接跳过。

3.2 文档类型跳过策略

纯文本型文档直接跳过,不做页级图片质量检测。

适用检测的主要是:

  • PDF 扫描件
  • 图片型案卷
  • 转 PDF 后包含大量扫描页的 doc/docx/wps

不适合检测的纯文本类文档,直接标记为 skipped

3.3 结果分档

仍保留三档结果,便于后续扩展:

  • pass:通过
  • review:疑似模糊,待人工确认
  • reject:不通过,建议重拍

前端展示文案建议直接对应:

  • 通过
  • 疑似模糊
  • 建议重拍

4. 定位策略

这次不做“定位到哪张图片”,只做“定位到第几页”。

也就是说:

  • PDF:直接逐页检测
  • 图片:按单页处理
  • doc/docx/wps:统一先转为稳定的页级 PDF,再逐页检测

最后只返回页码列表,例如:

  • pages=[2,5,8]
  • warningText=第2页、第5页、第8页疑似模糊

这样实现最稳,也最符合你现在已经确认的需求收口。

5. 当前仓库的落点

按目前仓库结构,模块建议挂在 fastapi_leaudit 下,和当前评查链路平行存在。

当前新增代码落点如下:

  • fastapi_modules/fastapi_leaudit/domian/vo/pageQualityVo.py
  • fastapi_modules/fastapi_leaudit/services/pageQualityService.py
  • fastapi_modules/fastapi_leaudit/services/impl/pageQualityServiceImpl.py
  • fastapi_modules/fastapi_leaudit/controllers/pageQualityController.py
  • fastapi_modules/fastapi_leaudit/page_quality/tasks.py
  • fastapi_modules/fastapi_leaudit/page_quality/runner.py
  • scripts/创建sql/schema_add_page_quality_module.sql
  • scripts/创建sql/seed_page_quality_permissions.sql
  • scripts/创建sql/seed_page_quality_routes.sql

6. 当前实现方案

6.1 数据表

当前方案只保留两张表,足够支撑第一版:

leaudit_page_quality_runs

  • 记录一次文档级检测任务
  • 保存任务状态、总页数、问题页统计、摘要状态

leaudit_page_quality_results

  • 记录每一页的检测结果
  • 每页只保留一条结果

这版不新增图片明细表,不做图级索引。

6.2 Service 职责

PageQualityServiceImpl

  • DispatchForDocument
    • 创建 run
    • 投递 Celery 异步任务
  • ExecuteRun
    • 读取文件
    • 转为页级图片
    • 逐页检测
    • 落库结果
    • 汇总文档级状态
  • GetDocumentSummary
    • 返回文档的页级检测摘要
  • GetDocumentDetail
    • 返回页级问题页详情
  • RecheckDocument
    • 手工重跑

6.3 Controller 路由

当前建议保留 3 个接口:

  • GET /documents/{DocumentId}/page-quality/summary
  • GET /documents/{DocumentId}/page-quality
  • POST /documents/{DocumentId}/page-quality/recheck

这样够前端做:

  • 列表轻提示
  • 详情展开
  • 手工重检

6.4 Celery 任务链路

当前任务入口:

  • leaudit.page_quality.process_document

队列配置:

  • LEAUDIT_PAGE_QUALITY_QUEUE_NORMAL
  • LEAUDIT_PAGE_QUALITY_QUEUE_URGENT

它和当前 OCR / 评查队列分开,避免互相影响。

7. 与现有 DocumentService 的集成方式

按当前项目代码风格,集成点放在 DocumentServiceImpl

7.1 上传成功后自动触发

接入点:

  • DocumentServiceImpl.Upload

处理方式:

  • 文档主文件落库成功后
  • 使用 try/except 异步投递页级质量检测
  • 失败只记日志,不抛阻断异常

7.2 补充附件后重跑

接入点:

  • DocumentServiceImpl.AppendAttachments

处理方式:

  • 附件写入完成后
  • 触发一次 Force=True 的重跑任务
  • 仍然不影响主链路返回

7.3 文档接口回填摘要

当前需要在这些返回对象上挂页级质量摘要字段:

  • DocumentUploadVO
  • DocumentListItemVO
  • DocumentStatusItemVO
  • DocumentDetailVO

建议统一补这些字段:

  • pageQualityRunId
  • pageQualityRunStatus
  • pageQualitySummaryStatus
  • pageQualityIssueCount
  • pageQualityWarningText

详情页额外补:

  • pageQualitySummary

8. 页级检测执行逻辑

8.1 输入统一

统一转成“按页检测”的输入:

  • pageNum
  • pageImageBytes

这样后面的检测器不关心文件来源,只关心这一页图像本身。

8.2 文件处理策略

建议如下:

  • pdf:直接渲染每页
  • png/jpg/jpeg/bmp/tiff/webp:按 1 页处理
  • doc/docx/wps:先转 PDF,再逐页渲染

8.3 并发策略

第一版可以做“页级并发”,但不建议过度并发。

建议原则:

  • 只在单文档内部做有限并发
  • 队列级别仍由 Celery 控制
  • 优先保证稳定,不追求极限吞吐

8.4 检测结果汇总

汇总规则固定如下:

  • 只要有 reject 页,文档摘要状态就是 reject
  • 否则只要有 review 页,文档摘要状态就是 review
  • 否则是 pass

页码列表只展示 review/reject 页。

9. 前端改造建议

这次前端不要做复杂交互,保持轻量。

9.1 列表页

增加一个“图片质量”状态展示位:

  • 通过
  • 疑似模糊
  • 建议重拍

如果已有问题页,hover 或轻提示展示:

  • 第2页、第5页疑似模糊

9.2 详情页

增加一个“图片质量预警”卡片即可。

卡片内容只展示:

  • 状态
  • 问题页数
  • 页码提示文案
  • 手工重检按钮

第一版不要做跳图,不要做页内图片定位。

9.3 上传完成提示

上传返回里如果已经拿到 run 信息,可以轻提示:

  • 图片质量检测中

等异步任务完成后,再通过详情或列表刷新展示结果。

10. 第一版不做的内容

明确不纳入本次版本:

  • 图片级定位
  • 第几张图模糊
  • OCR visual_manifest 细粒度关联
  • 页内坐标框
  • 图片裁剪回显
  • 基于模糊结果阻断上传
  • 基于模糊结果阻断评查
  • 基于模糊结果自动退件

11. 当前版本的实现价值

这一版的好处很明确:

  • 复杂度大幅降低
  • 能快速上线验证业务价值
  • 不改现有 OCR / 评查主链核心逻辑
  • 前后端联调成本低
  • 后续如果业务真要升级,再往图级定位扩展也有落点

12. 最终结论

按当前仓库和你已经确认的需求,最合适的落地方案就是:

  • 独立页级图片质量检测模块
  • 只做页码级模糊预警
  • 异步执行
  • 不阻断主流程
  • 列表页和详情页只展示“第几页疑似模糊 / 建议重拍”

这就是第一版最稳、最省、最适合推进开发的模块计划。