状态: 开发中(2026-08,M1–M8 已实施:档案/支撑机制/版面分析/分区域 OCR/表格公式/图片/产物/补缝前置;M9 真机验收待用户执行;依据 brainstorming-video-types([ ] 已归档) 六轮头脑风暴) 目标: 让课堂助手"认得出你在学什么,并为此调整提取方式"——五类视频档案驱动采样/权重/后处理/产物;版面分析先行 + 分区域专项 OCR(表格/公式)解决非线性排布文本;三层图片配套;产物体系落地;补缝式 AI 前置构建(协议先行,V1.0 实装)。 关联: 头脑风暴视频类型([ ] 已归档) · 课堂助手机制清单(E9/B6/C1/C2/C3/B5/B8/B3/A3/D1 采纳)· 无云端 AI 提取极限(L1-L4 分层)· ADR-010(补缝式 AI 决策)· 需求池 v0.5.0
- 视频类型档案(E9):五档案(结构化教学/步骤实操/口播知识/访谈播客/会议汇报)完整定义 + 混合检测(自动候选 + 用户确认 + 记忆偏好)+ 档案驱动管线(采样预算/信号权重/后处理/产物模板按档案生效)——轮 1/2 落地
- 版面分析先行:规则版版面分析(区域分类 text/table/formula/code/image/unknown)+ 事件帧触发 + 区域价值采样;layout 模型 spike 并行(ORT 兼容性,通过则换引擎,编排零改动)——轮 4 + 追加讨论落地
- 专项 OCR 完整构建:表格(SLANet 模型版,spike 通过则模型版、否则规则版线条重建兜底)+ 公式(UniMERNet 模型版,同理规则版上下标重建兜底)——用户指定 0.5.0 完整构建
- 图片配套:三层图结构(关键图/参考图集/缩略图走廊)+ 多信号筛选投票 + 用户截图标记 + 图集 UI——轮 3 落地
- 产物体系:Artifact 块模型(
ArtifactBlock{kind, refs, payload, order})+ 五档案产物模板 + 会话产物视图 + 渲染器升级(LaTeX/表格/图集)+ 一键落笔记——轮 5 落地 - 补缝式 AI 前置(轮 6,V1.0 实装):本地失败判定器 +
ai_candidate块 + 返回协议 schema + mock 适配器 + 配额/缓存/审计骨架——协议先行,云端接入留 V1.0
本阶段不做:补缝式 AI 云端实装(Qwen-VL 接入/计费/授权,V1.0,见七);PP-Structure 模型组完整版(layout 模型版/SLANet/UniMERNet 统一模型管理,V1.0);流程图语义重建(AI 补缝类型);手写公式识别(专用模型);乐谱(超出范围);闪卡(REQ-019/020,继续顺延,用户决策);转写时间轴回放与可编辑(REQ-023,V1.0);零拷贝(已裁决);声学模型微调(已否决)。
| REQ | 内容 | 验收要点 | 规划状态 |
|---|---|---|---|
| REQ-043 | 视频类型档案(VideoProfile):五档案定义 + 混合检测 + 档案驱动管线 | 五档案配置生效;自动检测出候选 + 用户确认 + 记忆偏好;采样/权重/后处理/产物模板按档案切换;默认档案不阻断 | 已排期 |
| REQ-044 | 章节检测(C1 三信号):画面切换 + 长静音 + n-gram 话题重合度 | 网课档案产出章节边界;边界处自动插"本章小结"占位 | 已排期 |
| REQ-045 | 口语书面化(B5 本地规则版)+ 重点候选标注(C2) | 语气词过滤/标点恢复生效且可逆(保留原文段);重复短语/音量语速骤变/OCR 停留 → 重点标记 | 已排期 |
| REQ-046 | 术语表自动构建(C3)+ 说话人变化检测(A3,spike 定去留) | OCR 高频 × ASR 低频交叉出候选 → 用户确认 → 反哺 hotwords;A3 通过则访谈/会议档案标注讲者切换 | 已排期 |
| REQ-047 | 规则版版面分析:区域分类 + 事件帧触发 + 区域价值采样 | 播放区域内帧分类为 text/table/formula/code/image/unknown;PPT 翻页触发新版面分析;字幕区不进版面分析;预算按区域价值分配 | 已排期 |
| REQ-048 | 分区域 OCR 编排:区域裁剪 → 分区域识别 → 坐标还原 → 合并 | 区域级预处理(表格放大/公式高对比)生效;坐标还原纯函数单测;unknown 区低置信标记;layout 模型 spike 结论归档 | 已排期 |
| REQ-049 | 表格专项 OCR:SLANet 模型版(spike 通过)/ 规则版线条重建兜底 | 有线表格还原为 Markdown 表格;单元格文字经现有 OCR;重建失败 → 图 + 占位标记(诚实降级) | 已排期 |
| REQ-050 | 公式专项 OCR:UniMERNet 模型版(spike 通过)/ 规则版上下标重建兜底 | 渲染公式(PPT/教材截图)还原为 LaTeX 片段;上下标/分数线/根号规则版可重建;手写公式标 unknown 走 AI 补缝 | 已排期 |
| REQ-051 | 图片配套:三层图结构 + 多信号筛选 + 用户截图标记 + 图集 UI | 关键图内嵌产物;参考图集画廊 + 缩略图走廊;用户截图键最高权重;存储去重 + 预算上限 | 已排期 |
| REQ-052 | 产物体系:Artifact 块模型 + 五档案产物模板 + 产物视图 + 一键落笔记 | 五类产物(讲义/步骤卡/摘要/对话纪要/会议纪要)模板函数;块引用原料(不复制);产物 ↔ 时间轴双向定位;沿用 NoteDraft → Note 通道 | 已排期 |
| REQ-053 | 渲染器升级:LaTeX/表格/代码/图集块渲染 | KaTeX 本地化(无 CDN);Markdown 表格渲染;图集画廊组件;低置信/AI 占位样式 | 已排期 |
| REQ-054 | 词级时间戳(B8)+ 置信度落库(B3) | 离线/课后精修路径产出词级对齐;段级/块级置信度落库 + 低置信标记视图 | 已排期 |
| REQ-055 | 补缝式 AI 前置:判定器 + ai_candidate 块 + 协议 schema + mock 适配器 + 护栏骨架 | 本地失败块(低置信/重建失败/unknown 区)标记为 ai_candidate;协议 schema serde 校验;mock 适配器产出合法结构验证渲染链路;配额/缓存/审计骨架就位(云端未实装,按钮显示"V1.0 开放") | 已排期 |
- REQ-033 真机验收执行:关闭保护 / 音频指数退避重连 / DXGI 周期重建(v0.4.0 遗留,用户执行)
- RNNoise 评估(REQ-041 遗留):微基准 CER 对比定默认值
- TD 清单核对:TD-040(ffmpeg 捆绑)维持 deliberate 观察
- v0.4.0 发布:CHANGELOG + 版本文档沉淀,进入 v0.5.0 开发基线
实施状态(2026-08):✅ 已实施——
video_profile.rs(五档案类型/检测投票/记忆偏好/JSON 序列化,档案常量拆video_profile_data.rs)+commands_video.rs(video_profiles/detect_video_profile/remember_video_profile/video_profile_memory/video_profile_by_kind)+ 档案驱动采样(DualRateScheduler::from_budget + run_screen_worker 按档案查预算表)+ sessions.profile 列(DB 迁移 ensure_column)+ 前端 ProfileDetector("检测为:网课(可改)"混合检测卡)。检测信号当前落地:标题关键词 + URL 关键词 + 画面切换频率 + 字幕偏好(A5 标题已入库);会话时长信号留会话中增量评估接入。混合检测记忆偏好闭环已通(用户确认 → JSON 记忆 → 同标题下次直接生效)。
核心设计:档案 = 纯配置(E9 原话"一次调优多处受益")。所有管线从"全局参数"改为"按档案查询参数"。
video_profile.rs(新,纯逻辑可单测):VideoProfile { kind, detect_signals, sampling_budget, signal_weights, postprocess_rules, artifact_template };五档案内置常量 + JSON 序列化(可校准)- 混合检测:
- 自动信号(全部已有/低成本):窗口标题关键词(A5 已入库,"教程/实战/会议/访谈/第X章")+ URL/播放器标题(B站/网课平台关键词)+ 画面切换频率 + 字幕有无(det 结果统计)+ 会话时长
- 候选呈现:会话开始前 UI 显示"检测为:网课(可改)";用户确认/修改 → 记忆偏好(同窗口标题下次直接生效)
- 置信度低(信号冲突)→ 才问用户;高 → 静默生效可改
- 档案驱动管线改造:
- 采样预算:DualRateScheduler 扩展为按档案查预算表(实操类关键帧差异化采样:静止降频、变化骤升;口播类全帧降至最低)
- 信号权重:字幕优先(网课)/ OCR 权重(网课板书、实操 UI)/ ASR 全投(口播/访谈/会议)
- 后处理规则集开关:章节检测(网课)/ 帧聚类步骤卡(实操)/ 书面化强度(口播/网课)/ 说话人检测(访谈/会议)
- 产物模板:见 M7
- 测试:档案 JSON roundtrip;检测信号投票决策矩阵(注入 fake 信号);预算表查询
实施状态(2026-08):✅ 已实施——四纯逻辑模块 + 分析编排:
chapter_detect.rs(C1 三信号投票:画面切换/长静音/n-gram 话题重合度,BOUNDARY_MIN_GAP_MS 合并连续命中)+verbal_normalize.rs(B5 书面化:语气词/重复压缩含单字/标点恢复,三强度档,可逆——原料层不动)+highlight_detect.rs(C2:重复短语≥2/音量骤变≥0.3/OCR 停留≥10s,跨信号合并)+glossary.rs(C3:OCR 高频×ASR 低频交叉,CJK 段滑窗+ASCII 词独立计数)+speaker_change.rs(A3 弱化版:embedding 余弦相似度<0.75→讲者切换,不聚类身份)。编排层analysis.rs按档案后处理规则开关门控(章节=网课/术语=网课/书面化=口播网课/讲者=访谈会议);课后精修路径 commandanalyze_session_command(档案优先级:调用方覆盖>会话落库>Lecture 默认)。A3 spike 结论:sherpa-onnx 1.13 暴露 SpeakerEmbeddingExtractor,弱化版路径成立;embedding 提取模型分发留 V1.0(G4 按需下载),本版判定器先行 + 访谈/会议降级为无讲者标注形态(产物模板含可选讲者字段,M7 消费)。
- 章节检测(C1):画面切换(已有帧 diff)+ 长静音(VAD 已有)+ n-gram 话题重合度下降,三信号投票 → 章节边界;
chapter_detect.rs纯函数 + 单测(合成会话样本) - 口语书面化(B5):语气词过滤/重复整理/标点恢复,纯规则 + 统计;可逆(原文段保留在原料层,产物层只读加工版);
verbal_normalize.rs+ 语料单测 - 重点候选标注(C2):重复短语 ≥2 次 / 音量语速骤变(DSP 特征,audio_preprocess 已有)/ OCR 文本持续停留 N 帧 → 重点标记;
highlight_detect.rs+ 单测 - 术语表(C3):OCR 高频词 × ASR 低频词交叉 → 候选 → 用户确认 UI(复用 REQ-040 词表管理)→ 反哺 hotwords + 产物词汇表
- 说话人变化检测(A3,spike 定去留):sherpa-onnx speaker 模型在 VAD 间隙对比音色向量 → "讲者切换"事件(弱化版不聚类身份);spike 失败 → 访谈/会议档案降级为无讲者标注形态(产物模板含可选讲者字段)
实施状态(2026-08):✅ 已实施——
layout_analyzer.rs(全局表格检测:孤立横线+竖线交叉 → Table;行投影合并带 → 列区间 → 分类:公式中线长条 > 代码行首对齐+行宽变化 > 文本 > 图像 > unknown)+frame_features.rs(BGRA 帧 → 32×18 灰度网格,Rec.601)+layout_cache.rs(版面指纹 = 行列投影位图 + LRU + TTL 60s,事件帧触发复用)。已接入实时链路全帧分支(run_screen_worker:同版面零重分析,新版面日志可观测区域构成)。region_sampling_weight采样权重表就绪(table 1.0/code 0.9/formula 0.7/text 0.5/image 跳过/unknown 0.2),M4 region_ocr 调度消费。layout 模型 spike 结论(2026-08):编排层已按"区域类型"抽象(LayoutRegion 为唯一接口),规则版→模型版(PP-StructureV3)只换 analyze_layout 实现编排零改动;模型 ORT 兼容性与分发评估留 V1.0(REQ-057 统一管理)。
设计原则:规则版先行 + layout 模型 spike 并行——编排层按"区域类型"抽象,规则版→模型版只换
LayoutAnalyzer实现。
layout_analyzer.rs(新,纯逻辑为主):- 输入:播放区域内帧(REQ-037 坐标系)
- 区域分类管线:线条检测(Hough/形态学,区分表格线 vs PPT 装饰线)→ 连通域分析 → 文本密度聚类 → 区域类型判定
text/table/formula/code/image/unknown - 输出:
Vec<LayoutRegion { kind, bbox, confidence, is_structural }>
- 事件帧触发:帧 diff 变化事件(capture/frame_diff 已有)触发版面分析;同一版面内复用分区,只重识别变化区域;结果带时间戳缓存(版面缓存 = OCR 缓存 M4 的扩展)
- 区域价值采样:REQ-039 预算制升级——区域类型 → 采样权重表(table/code 高权重高分辨率;装饰/image 跳过;subtitle 区独立高频 ROI 不进版面分析)
- 布局模型 spike(并行):PP-StructureV3 layout.onnx 在 ort 2.0.0-rc.13 的算子兼容性 + 精度对比(合成帧 + 真实站点样本);结论归档,通过则 M3 收尾换引擎(编排零改动)
- 测试:合成帧(PPT 页/表格页/代码页/白板)分类 golden 测试(G3 扩展);回退链(分析失败 → 整帧直跑现有管线)
实施状态(2026-08):✅ 已实施——
region_ocr.rs(坐标还原map_to_frame纯函数含缩放/负偏移边界单测 + 区域裁剪crop_region_bgra(内存 crop 含 12px 边距)+ 最近邻放大upscale_bgra(表格 2x/公式代码 1.5x)+ 区域调度schedule_regions(价值权重排序 + 每帧 ≤4 区封顶));编排接入 process_frame 全帧分支:版面区域存在 → 分区域裁剪识别 → 坐标还原 + region_kind 标注 → 合并;区域失败标记 unknown 不阻断(诚实降级);编排失败/无区域回退整帧直跑(现状行为)。DB 迁移:session_ocr_blocks 加 region_kind 列(ensure_column 幂等,兼容旧数据);OcrBlock/SessionOcrBlock/NewSessionOcrBlock 增 region_kind 字段(None=整帧直跑)。
region_ocr.rs(新,编排器):区域调度(每帧最多 N 区封顶,防多区域调用失控);低置信区域局部放大重试一次;再失败 → 低置信标记- 坐标还原:纯函数
map_to_frame(region_coord, region_bbox, scale) -> frame_coord+ 单测(含边界/缩放/负偏移) - 结果扩展:
OcrBlock增加region_kind字段(DB 迁移:ocr_blocks 表加列,兼容旧数据) - 回退链:layout 失败 → 整帧直跑(现状行为);区域识别失败 → 该区域标记 unknown → 图片归档候选
实施状态(2026-08):✅ 规则版完整交付 + 模型版已落地(双轨合一)——重大发现:oar-ocr 0.9.1 内置 OARStructureBuilder 全套结构管线(layout/表格/公式),模型托管于 ModelScope greatv/oar-ocr 注册表(与现有 OCR 模型同源,TLS 环境可达),算子兼容性由上游保证(ort 2.0.0-rc.13 同生态)。 模型选型(用户裁决 2026-08):版面
pp-doclayout-l.onnx(129MB 高精度)/ 表格slanet_plus_v2.onnx(7.8MB 最新 + 表格分类 6.8MB + 字典)/ 公式pp-formulanet-s.onnx(231MB 默认)+unimernet.onnx(1.84GB 用户可切换高精度档)。 实施内容:structure_models.rs(模型清单/独立状态机下载器:进度事件 + .part 原子写 + 按需启用三分类)+structure_engine.rs(OARStructure 封装:layout 必选、table/formula 可选装配——文件缺失自动降级规则版;跟随 OCR backend(CUDA EP + CPU 回退 + gpu_mem_limit 4GB 防显存失控))+ 方案 A 增强版课后精修:实时链路检测 table/formula 区域 → 裁剪图归档(region_ocr 接入 image_store)→refine_session后台精修(懒加载模型 → SLANet/FormulaNet 识别 → 回填 artifact_blocks → session:refining/refined 事件静默升级)+ 前端 StructureModelSetting(三模型状态/下载/公式档位切换)+ ArtifactView"课后精修"按钮。 降级链:模型未下载 → 精修跳过 + 事件提示(规则版产物保留);精修失败单区域跳过。
保证"完整构建"的策略:模型版与规则版双轨——模型就绪则模型版为主、规则版为兜底;模型缺失时规则版完整交付(0.5.0 承诺不落空)。
- 表格(REQ-049):
- 模型版:SLANet ONNX(PP-Structure 同源)→ HTML 表格结构 → 单元格坐标 → 现有 OCR 识别文字 → Markdown 表格;ORT 兼容性属 M3 spike 同批
- 规则版兜底:表格线检测(形态学/Hough)→ 行列网格 → 单元格裁剪识别 → Markdown;无线表格 → 空格聚类(半做,标注低置信)
- 产物:
TableBlock { markdown, structure_confidence, cell_refs[] };重建失败 → 图 + 占位标记(诚实降级)
- 公式(REQ-050):
- 模型版:UniMERNet ONNX(中文公式效果好)→ LaTeX;同上 spike
- 规则版兜底:字符基线 + 字号聚类 → 上下标判定 →
x^2/H_2O;分数线/根号/积分包围关系检测(渲染公式限定) - 产物:
FormulaBlock { latex, source_text, confidence };手写公式 → 标 unknown → AI 补缝(V1.0)
- 渲染配套(REQ-053 前置):KaTeX 本地化(vendor 进 bundle,无 CDN);Markdown 表格渲染组件
- 测试:合成表格/公式帧 golden;规则版重建正确率基准(结构还原率指标,非 CER)
实施状态(2026-08):✅ 已实施——
frame_cluster.rs(B6 帧聚类:感知哈希汉明距离 ≤6 归簇,簇首帧代表 + 时间范围;多信号筛选投票:OCR 新文字×3/画面变化×2/停留≥10s×2/用户截图+100 强制置顶)+image_store.rs(会话目录 full/thumb 两级 WebP lossless 存储、去重、每会话 50 张预算上限、list 按时间戳排序)+commands_images.rs(list/delete/delete_all/save_user_screenshot/session_images_base_url,路径穿越防御)。实时链路接入:全帧分支新文本+2s 防抖自动归档关键帧(参考图集数据源);停止时投票产出关键图候选(session:keyframes 事件,M7 产物消费);Ctrl+Shift+S 用户截图(live_session 最新帧共享缓存)。图集 UI:ImageGallery 组件(懒加载 + 删除 + convertFileSrc 本地读取),SessionsPage 详情页接入。
- 帧聚类(B6):感知哈希聚类(capture/frame_diff 已有哈希基础)→ 画面簇 = 簇首帧 + 时间范围;实操档案 → 簇 = 步骤候选(M7 步骤卡输入)
- 多信号筛选投票:帧聚类 + OCR 文本 diff(新文字 = 新图)+ 画面变化幅度 + 停留时长 ≥10s + 用户截图(最高权重,快捷键 Ctrl+Shift+S) → 关键图候选排序
- 三层结构:关键图(内嵌产物正文,每章节 ≤3 张)/ 参考图集(簇首帧全集,会话画廊)/ 缩略图走廊(时间轴导航)
- 存储:会话目录本地存图(缩略图 + 原图两级,WebP 压缩);去重(aHash)+ 每会话预算上限(默认 50 张);图文对齐靠时间戳(产物块引用 frame_id)
- 图集 UI:画廊(懒加载,E8 虚拟列表复用)+ 用户增删/标记"关键图"(D1 回路:删改反哺筛选阈值参数)
实施状态(2026-08):✅ 已实施——
artifact.rs(ArtifactBlock 块模型:kind 16 枚举 + refs{segment_id/ocr_block_id/frame_ms} + payload 8 变体 + order + source{local/ai-enhanced/placeholder},JSON roundtrip 单测)+artifact_templates.rs(五档案模板函数 build_artifact:讲义式=章节小结+书面化段落+术语锚点+关键图 / 步骤卡=关键帧×语音段 / 摘要文=重点 Claim+Quote 兜底 / 对话纪要=QAPair 配对+Highlight / 会议纪要=触发词→Decision/Todo+截图归档;均含无信号兜底降级)+db_artifacts.rs(artifact_blocks 表:会话 1:1 产物块有序,replace 可重算语义,JSON 列存储,级联删除,roundtrip 单测)+commands_artifacts.rs(build_session_artifact/get_session_artifact/artifact_to_note——产物渲染 Markdown 落库沿用 NoteDraft→Note 通道)+ 产物视图(SessionsPage 原料/产物切换 + ArtifactView 组件:KaTeX 本地化渲染/表格/图集/低置信样式/AI 占位提示)。产物 ↔ 时间轴双向定位:块 refs.frame_ms 携带时间戳(点击跳转留前端增强)。
- 块模型:
ArtifactBlock { id, kind, refs{segment_id?, ocr_block_id?, frame_id?}, payload, order, source(local|ai_enhanced|placeholder) };块类型枚举:Paragraph/KeyImage/Table/Formula/TermAnchor/Summary/StepCard/Claim/Quote/QAPair/Highlight/Decision/Todo/AgendaSection/ScreenShot/CodeBlock;存储:artifact_blocks表(会话 1:1 产物,块有序) - 五档案模板函数:
build_artifact(profile, session_detail) -> Vec<ArtifactBlock>(纯函数,注入原料)- 讲义式(网课):C1 章节 + C3 术语 + 段落(B5 书面化)+ 关键图 + 表格/公式块 + 小结
- 步骤卡(实操):B6 簇 × 语音段 → StepCard(帧 + 说明 + 时间范围)
- 摘要文(口播):C2 重点 → Claim 排序 + Quote 金句 + 关键词索引
- 对话纪要(访谈):A3 讲者(spike 通过)+ QAPair 结构 + Highlight
- 会议纪要(会议):触发词规则("我们决定/下一步/麻烦你/截止")→ Decision/Todo + AgendaSection + 投屏截图归档
- 产物视图:会话详情页切换"原料视图 / 产物视图";产物 ↔ 时间轴双向定位(B8 词级时间戳 + 块 refs);"一键落笔记"沿用 NoteDraft → Note 通道(REQ-003/005 已有,产物渲染为 Markdown)
- 渲染器升级(REQ-053):KaTeX 本地化 + 表格渲染 + 图集组件 + 低置信样式(黄色虚线下划线)+ AI 占位样式("AI 增强待 V1.0")
- 测试:五模板 golden 测试(注入合成 SessionDetail);块模型 roundtrip;落笔记 Markdown 快照测试
实施状态(2026-08):✅ 已实施——
ai_protocol.rs(AiEnhanceRequest/Response 协议 schema:6 请求类型 table/formula_latex/flowchart/diagram/handwriting/chart_data + 结构化 content + confidence,validate()强校验:置信度越界/内容缺失/图边悬空引用均拒绝)+ai_judge.rs(判定器三入口:unknown 版面区→FormulaLatex / 表格重建低置信→Table / OCR 低置信→Handwriting + 最小上下文前后 ASR 可关;决策矩阵单测)+ai_mock.rs(mock 适配器:各类型规则生成合法响应,全部通过 schema 校验——验证渲染链路与块合并契约)+ai_guardrails.rs(护栏骨架:DailyQuota 跨日重置/耗尽拒绝、AiHashCache 同图 LRU 缓存零重复调用、AiAuditEntry 审计缓冲 200 条、来源标记 ai-enhanced 由产物块 source 承载)+commands_ai.rs(scan_ai_candidates / ai_enhance_mock(配额+缓存+审计接入)/ ai_enhance_status)。前端:ArtifactView "AI 增强(V1.0 开放)"占位按钮 + AI 占位样式提示。云端未实装(V1.0:Qwen-VL 接入仅需替换 mock 适配器,协议/判定器/护栏零改动)。
依据 ADR-010。本阶段只构建本地侧协议与验证链路,不接云端。
- 判定器(本地失败检测):三入口——版面 unknown 区 / 规则重建失败(表格/公式低置信)/ OCR 置信度低于阈值(B3)+ 用户手动"让 AI 理解此图";产出
ai_candidate块(含 source_ref 裁剪图 + 最小上下文:前后 ASR 文本,可关) - 返回协议 schema(serde):
AiEnhanceRequest/Response(type: table/formula_latex/flowchart/diagram/handwriting/chart_data;content 各类型结构化字段;confidence);schema 校验失败 → 丢弃 AI 结果保留本地结果 - mock 适配器:本地"假 AI"(规则生成合法响应)验证渲染链路与块合并逻辑;UI 按钮"AI 增强"显示"V1.0 开放"(占位)
- 护栏骨架:同图 hash 缓存(不重复上传/计费)/ 每日配额计数器 / 队列 + 超时重试状态机 / 审计日志表(上传了什么、何时、结果,V1.0 实装后启用)/ 来源标记(
ai-enhanced永远可辨认)+ 全局"仅本地"视图开关 - 测试:判定器决策矩阵(注入 fake 低置信/unknown);协议 schema 校验(合法/非法响应);mock 适配器 → 产物块合并单测
实施状态(2026-08):✅ 代码构建完成——
cargo test453 个全绿 +cargo clippy全绿 + 前端npm run build通过;CHANGELOG 更新、版本文档沉淀、需求池状态流转(REQ-043~055 已实施)。真机验收待用户执行(实时会话全链路 + 文件导入路径 + G3 合成帧基准)。
- 全链路验收:实时会话(档案检测 → 版面分析 → 分区域 OCR → 图片 → 产物视图)+ 文件导入路径(静态结构重建兜底,无时序红利需标注来源)
cargo test+cargo clippy全绿;G3 性能基准护栏(合成帧 golden 纳入 CI)- 更新 CHANGELOG;版本文档沉淀;需求池状态流转关闭
- 档案生效:同一视频分别按"网课/实操/口播"档案提取,采样权重与产物形态可观测差异;检测候选 + 用户确认 + 记忆偏好闭环(代码就绪,真机观测待执行)
- 版面分析:PPT 页/表格页/代码页/白板帧分类正确(合成 golden);PPT 翻页触发新版面分析;字幕区不进版面分析(无回归)
- 分区域 OCR:区域裁剪 → 识别 → 坐标还原正确(单测);unknown 区低置信标记;layout 失败回退整帧直跑
- 表格专项:有线表格还原为 Markdown(结构还原率基准);重建失败 → 图 + 占位(诚实降级)
- 公式专项:渲染公式还原为 LaTeX 片段(上下标/分数线/根号);手写公式标 unknown
- 图片配套:关键图内嵌产物;图集画廊 + 走廊可用;用户截图键置顶;存储去重 + 预算上限生效
- 产物体系:五类产物按档案生成(golden 测试);产物 ↔ 时间轴双向定位;一键落笔记 Markdown 快照正确
- 渲染器:KaTeX 本地化离线可渲染;表格/图集组件无 CDN 依赖
- 补缝前置:本地失败块标记 ai_candidate;mock 适配器产出合法结构渲染成功;配额/缓存/审计骨架就位;云端按钮显示"V1.0 开放"
- 回归:v0.4.0 验收项不劣化(GPU 卸载/动态 ROI/实时体验/预算/热词/降级链/诊断面板)——真机执行
-
cargo test新增:档案 JSON/检测投票、版面分类 golden、坐标还原、表格/公式重建、筛选投票、五模板 golden、协议 schema 校验、判定器矩阵
| 步骤 | 内容 | 产出 |
|---|---|---|
| M0 | v0.4.0 收尾(REQ-033 真机验收 + RNNoise 评估 + 发布) | 干净基线 |
| M1 | 视频类型档案(REQ-043) | video_profile.rs + 混合检测 UI + 档案驱动管线 |
| M2 | 档案支撑机制(REQ-044/045/046) | 章节检测/书面化/重点标注/术语表 + A3 spike 结论 |
| M3 | 规则版版面分析(REQ-047) | layout_analyzer.rs + 事件帧 + 区域价值采样 + layout 模型 spike 结论 |
| M4 | 分区域 OCR 编排(REQ-048) | region_ocr.rs + 坐标还原 + 回退链 |
| M5 | 表格/公式专项(REQ-049/050) | SLANet/UniMERNet 或规则版双轨交付 + 渲染配套 |
| M6 | 图片配套(REQ-051) | B6 帧聚类 + 筛选投票 + 三层图 + 图集 UI |
| M7 | 产物体系(REQ-052/053) | Artifact 块模型 + 五模板 + 产物视图 + 渲染器升级 |
| M8 | 补缝式 AI 前置(REQ-055) | 判定器 + 协议 schema + mock + 护栏骨架 |
| M9 | 端到端验收 + 发布 | v0.5.0 |
- layout 模型 ORT 兼容性(M3 spike):PP-StructureV3 layout.onnx 在 ort 2.0.0-rc.13(ORT 1.28)算子兼容——通过则模型版进 0.5.0 收尾,未通过则规则版完整交付(已双轨保障)
- SLANet/UniMERNet 可用性与分发(M5 spike):ONNX 导出可用性 + ModelScope 分发 + 模型体积(G4 按需分发前置考虑)
- 说话人变化检测质量(A3):弱化版(不聚类身份)成功率——失败则访谈/会议档案降级为无讲者标注形态
- 自动检测误判率:需真实站点样本(B站/网课平台/YouTube)校准投票阈值;误判 → 用户可改 + 记忆偏好修正
- 多区域 OCR 性能:区域调用次数 × 单次小图推理 vs 整帧一次推理的权衡——"每帧最多 N 区"封顶 + 预算联动,实测校准
- 文件导入路径无时序红利:静态结构重建兜底能力弱于实时链路——产物需标注提取来源(实时/离线),避免期望落差
- 产物与笔记双份并存:会话产物(可重算)vs 落盘笔记(用户编辑快照)——UI 需说清关系
- KaTeX 本地化体积:vendor 进 bundle 的体积增量(对比 CDN 依赖的离线铁律取舍)
- DB 迁移:ocr_blocks 加 region_kind 列、artifact_blocks 新表——迁移兼容旧数据(沿用迁移规范)
- 范围控制:本版为项目迄今最大版本(9 里程碑)——M2/M6 支撑机制按资源可裁剪(不影响主线完整性);A3/C4 为可裁剪项
用户指定:补缝式 AI 写入远期规划。本版只做前置构建,云端实装排 V1.0。
- Qwen-VL 系多模态接入:0.5.0 协议与 mock 适配器直接复用,云端只是"填适配器"
- 授权与计费:用户授权(默认关闭)+ 上传前预览("此块将上传")+ 每日配额 + 用量统计
- 审计可见化:审计日志 UI(上传了什么/何时/结果)
- 优先级队列:ai_candidate 块按判定器置信度排序,用户可逐块拒绝并"记住拒绝"(D1 回路)
- layout 模型版(DocLayout-YOLO 或 PP-StructureV3,替换/增强规则版)
- SLANet 表格结构 + UniMERNet 公式统一模型管理(G4 按需分发)
- 手写公式、无线表格增强(模型版覆盖规则版"半做"边界)
- 本地规则版(0.5.0 仅区域标记)→ V1.0 由 AI 补缝返回
{nodes, edges}结构 - 渲染:Mermaid 本地化(可选)
- REQ-023 时间轴回放与可编辑 / REQ-024 AI 多轮问答 / REQ-025 口语书面化云端精修 / REQ-032 会话段派生视图(产物块引用重算的地基,V1.0 内优先排期)