Skip to content

Commit 60e7ff1

Browse files
committed
docs(versions): v0.12.1 版本文档与索引、CHANGELOG
OCR 引擎回归修复版本文档:根因(auto-download 误关)+ 修复(Cargo.toml 恢复 + engine_ready 四处落地 + 图文讲者分析)+ 验证记录 + 已知问题后续。
1 parent d18d024 commit 60e7ff1

3 files changed

Lines changed: 68 additions & 0 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,13 @@
55

66
## [Unreleased] - 2026-08-21
77

8+
### v0.12.1 OCR 引擎回归修复(2026-08-23 交付,详见 [docs/versions/v0.12.1.md](docs/versions/v0.12.1.md))
9+
10+
- **P0 回归修复**:`oar-ocr` 恢复 `auto-download` feature(v0.12.0 构建修复关 default 时误关独立 feature——模型注册名不再解析为 ModelScope 缓存路径,OCR 引擎 CUDA/CPU 双后端读字典均失败,全链路不可用);模型已在本机 `~/.oar` 缓存,恢复后零网络命中
11+
- **引擎就绪状态真实化(engine_ready)**:OcrDeviceStatus 新增 engine_ready(worker 加载成功/失败回写);就绪清单(ReadyCheckCard)/ 模型管理面板 / OCR 设备设置 / 系统徽标四处改用——不再用线程心跳冒充引擎就绪(v0.12.0 验收误报根因:OCR 全挂仍显示 ✓)
12+
- **图文会话讲者分析误报修复**:SpeakerSwitchCard 按 `kind=photo` 跳过分析,输出"不适用"灰态——修复每个图文会话详情页误报红色"讲者分析不可用:会话音频缺失"
13+
- 验证:device_config 单测补充(engine_ready 缺省 + 往返 + 旧载荷兼容);tsc / vite 构建通过;真机验收回归路径待执行
14+
815
### v0.12.0 图文与窗口捕获重塑(2026-08-23 规划定稿,详见 [docs/versions/v0.12.0.md](docs/versions/v0.12.0.md))
916

1017
- **正文源多态(M1)**:filter_note 增加 detect_body_source 抽象层——图文会话 OCR 文本直接进笔记 markdown(修复纯图文会话转笔记空内容);OCR 走精简净化链(跳过口语净化)

‎docs/versions/README.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
| v0.11.6 | [v0.11.6.md](./v0.11.6.md) — AI 平台化:Provider 抽象 + 能力声明化 + 产出策略定制(三层;M1→M3 排期) | 版本文档(规划中 2026-08-22) |
3131
| v0.11.7 | [v0.11.7.md](./v0.11.7.md) — 图文会话:截屏导入 + 跨链路采集体验同步(kind 字段 + 5 命令 + 框选遮罩;排期于 v0.11.6 之后) | 版本文档(规划中 2026-08-22) |
3232
| v0.12.0 | [v0.12.0.md](./v0.12.0.md) — 图文与窗口捕获重塑:正文源多态 + WGC 抗遮挡 + 系统级截屏覆盖层 + DeepSeek 默认化 + vision 精修 + 采集浮窗化(M1-M7,七项改进修正五个断裂) | 版本文档(规划定稿 2026-08-23;**M1-M7 全部已交付**,真机验收待执行) |
33+
| v0.12.1 | [v0.12.1.md](./v0.12.1.md) — OCR 引擎回归修复:oar-ocr auto-download 误关(v0.12.0 构建修复连带)+ 引擎就绪状态真实化(engine_ready 四处落地)+ 图文会话讲者分析误报修复 | 版本文档(代码已交付 2026-08-23,真机验收回归路径待执行) |
3334

3435
## 沉淀规则
3536

‎docs/versions/v0.12.1.md‎

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# v0.12.1:OCR 引擎回归修复——auto-download 误关 + 引擎就绪状态真实化
2+
3+
> 状态:代码已交付(2026-08-23,真机验收发现的回归即修;0.12.0 真机验收期间)
4+
> 依据:用户对话 2026-08-23(OCR 引擎加载失败重发:CUDA/CPU 双后端均读不到 `ppocrv6_tiny_dict.txt` · 就绪清单仍显示 ✓ · 图文会话误报"讲者分析不可用")
5+
> 前置:v0.12.0(M1-M7 交付)真机验收中
6+
7+
## 一句话
8+
9+
v0.12.0 构建修复(`2f13308`)把 `oar-ocr` 关成 `default-features = false` 时**误关了独立的 `auto-download` feature**——OCR 模型注册名不再解析为 ModelScope 缓存路径,引擎以裸文件名读字典直接 `os error 2`,CUDA 构建失败 → CPU 回退也失败,OCR 全链路不可用;而就绪检查按"线程心跳"判定仍显示 ✓。本版恢复 auto-download(模型已在本机 `~/.oar` 缓存,零网络恢复),并新增 `engine_ready` 就绪状态,让"引擎加载失败"在就绪清单 / 模型面板 / 设备设置 / 系统徽标四处真实可见,同时修正图文会话(无音频)误报讲者分析错误的展示。
10+
11+
## 范围
12+
13+
| # | 项目 | 类型 | 落点 |
14+
|---|------|------|------|
15+
| 1 | oar-ocr `auto-download` 误关回归 | **P0** 回归修复 | `app/src-tauri/Cargo.toml`——`features = ["simd", "auto-download"]`(保持 `default-features=false`,`download-binaries` 仍关闭) |
16+
| 2 | OCR 引擎就绪状态真实化 | **P1** 可观测性 | `OcrDeviceStatus.engine_ready`(Rust worker 回写)+ 就绪清单 / 模型管理面板 / OCR 设备设置 / 系统徽标四处改用 |
17+
| 3 | 图文会话讲者分析误报 | P1 体验修复 | `SpeakerSwitchCard` 按 `kind=photo` 跳过分析,输出"不适用"灰态而非红色错误 |
18+
| 4 | 文档与治理 | 伴随 | 本版本文档 + CHANGELOG + 索引 |
19+
20+
## 根因(P0)
21+
22+
- 提交 `2f13308`(build(deps): sherpa-onnx shared + oar-ocr 本地 ORT 动态链接)的目标只是关闭 `download-binaries`(ort-sys 会去 `cdn.pyke.io` 拉 onnxruntime,被本机 TLS 拦截),写法却是 `default-features = false, features = ["simd"]`。
23+
- `auto-download` 是**独立 feature**(`auto-download = ["oar-ocr-core/auto-download"]`,不在 default 集),被一起关掉了。
24+
- oar-ocr-core `resolve_asset_path` 按该 feature 编译门控:关闭时模型标识 `"pp-ocrv6_tiny_det.onnx"` / `"ppocrv6_tiny_dict.txt"` 原样当本地路径;构建顺序中字典最先读取 → 报 `Failed to read character dictionary from 'ppocrv6_tiny_dict.txt': 系统找不到指定的文件。(os error 2)`;CUDA 失败 → CPU 回退同因失败 → 引擎整体不可用(det/rec 实际同样缺失,只是字典先暴露)。
25+
- 实证:`C:\Users\Administrator\.oar\` 下 det/rec/dict 三文件 + sha256 sidecar 齐全(早前 auto-download 已缓存)——恢复 feature 后命中缓存、零网络即恢复。
26+
27+
## 交付内容
28+
29+
### M1 · 依赖修复
30+
31+
- `Cargo.toml`:`oar-ocr = { version = "0.9", default-features = false, features = ["simd", "auto-download"] }`;注释记录回归背景与缓存路径约定(`$OAR_HOME`,默认 `~/.oar`;文件存在且 sha256 校验通过时零网络命中)。
32+
33+
### M2 · 引擎就绪状态真实化(engine_ready)
34+
35+
- `device_config.rs`:`OcrDeviceStatus` 新增 `engine_ready: bool`(`#[serde(default)]`——旧 JSON 载荷零回归);`new()` 初始 false。
36+
- `engine_worker.rs`:加载成功回写 `engine_ready=true`(与 actual/fallback_reason 同写);加载失败显式 `engine_ready=false` + 失败原因附可行动提示("重启应用自动重试")。
37+
- `commands_diag.rs`:`DiagSnapshot` 增 `ocr_engine_ready`;health_status 注释口径更新(OCR 模型由 oar-ocr 托管在 `$OAR_HOME`,就绪经 engine_ready 暴露,不在 app 模型目录查文件)。
38+
- 前端四处改用(就绪判定不再用"线程心跳"——线程活着 ≠ 引擎可用,这是 v0.12.0 验收里"OCR 全挂仍显示 ✓"的误报根因):
39+
- `ReadyCheckCard`:OCR 行 `ok = engine_ready`;未就绪标签显示"(未就绪)"而非请求态后端,详情含失败原因。
40+
- `ModelManagementPanel`:OCR 行"✗ 引擎未就绪" + 修复提示(重启应用自动重试)。
41+
- `OcrDeviceSetting`:未就绪红色提示条("模型缺失或下载失败——重启应用自动重试");"当前后端"改"请求后端"避免冒充生效态;历史基准标注。
42+
- `SystemStatusBadge`:`ocr_engine_ready=false` 计入系统告警 + 面板"OCR 引擎:未就绪"行。
43+
44+
### M3 · 图文会话讲者分析误报修复
45+
46+
- `SpeakerSwitchCard` 新增 `kind` 入参:`kind=photo` 不发起 `analyze_session_speakers`,渲染"👥 讲者分析不适用(图文会话无音频)"灰态——此前每个图文会话详情页都报红色"讲者分析不可用:会话音频缺失",把预期降级渲染成错误。
47+
48+
## 验证
49+
50+
- Rust:`device_config` 单测补充——`status_new` 断言 `!engine_ready`;`status_roundtrip_keeps_engine_ready`(往返一致 + 旧载荷缺字段默认 false)。
51+
- 前端:`tsc --noEmit` 零错误;`vite build` 通过(vitest 无前端测试文件,未新增)。
52+
- 真机验收回归路径:启动应用 → 设置页「OCR 推理设备」显示"✓ 引擎就绪(GPU/CPU)";就绪清单 OCR 行 ✓;会话页正文识别可出结果(复用 `~/.oar` 缓存)。
53+
- 故障路径验证(故意断网/清缓存后启动):就绪清单 OCR 行 ✗ + 原因;模型面板"✗ 引擎未就绪";系统徽标告警;恢复网络/重启后引擎自动重试成功。
54+
55+
## 已知问题与后续
56+
57+
- **图文会话笔记正文为 OCR 原文直出**("治愈纪录片:""七、 能量管理"等章节标题与实操练习重复出现、引号错乱)——note-rules v0.7.8 结构化仍弱;已归入笔记净化链(note-filter)后续版本,非本版范围。
58+
- **同名会话/笔记多条**(同一窗口多次采集 → 标题相同):待会话列表区分度改进(标题追加日期或时长)。
59+
- **拼接跨块去重**:现有"相邻精确去重"(note_filter_ocr `normalize_and_dedup`)对"尾/头字符重叠"未处理;需真实数据复现(本机 DB 实证 ocr 块本身无重复字符,问题疑似发生在 det 断行合并/上游),归入后续版本专项。
60+
- **CR 备注**:v0.12.0 交付记录中"本地 OCR 下线(仅保留字幕/图文采集)"与本次修复不冲突——本版修的是字幕/图文采集依赖的 OCR 引擎本身。

0 commit comments

Comments
 (0)