Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
44ce274
feat: add P9-C.1 rule-diff post-conversion verification layer
Vantalens May 29, 2026
c70f48b
feat: add P9-C.2 SSIM visual-loopback verification layer
Vantalens May 29, 2026
17b4726
feat: add P9-C.3 OCR-readback layer, completing three-layer verification
Vantalens May 29, 2026
018f78c
feat: add high-quality test-sample corpus generator (all formats, 3MB+)
Vantalens May 29, 2026
ad3ce3b
feat: surface three-layer verification results in the workbench UI (P…
Vantalens May 29, 2026
4dae477
fix: re-export getKnownInputFormats so the landing page renders
Vantalens May 29, 2026
8ca4e0f
feat: P9-D.1 PP-OCRv5 advanced-OCR engine skeleton + direction pivot
Vantalens May 29, 2026
1b8cc9c
feat: P9-D.2 onnxruntime-web vendor + PP-OCRv5 runtime loader skeleton
Vantalens May 29, 2026
c530cf2
feat: P9-D.3 PP-OCRv5 model import in security center + frozen-engine…
Vantalens May 29, 2026
012b1ef
feat: P9-D.2.b PP-OCRv5 inference pipeline (det + DB + CTC)
Vantalens May 29, 2026
bfe9e62
feat: P9-D.4 priority-aware OCR routing (PP-OCRv5 preferred over tess…
Vantalens May 29, 2026
fc00e68
docs: add PP-OCRv5 browser end-to-end verification checklist
Vantalens May 30, 2026
667c86f
feat: install real PP-OCRv5 models + out-of-box OCR auto-load
Vantalens May 30, 2026
efb43c9
feat: LaTeX math rendering ($...$ / $$...$$) via vendored KaTeX
Vantalens May 30, 2026
37b62be
fix: route image/PDF conversions through the async OCR pipeline
Vantalens May 30, 2026
7e89462
fix: PP-OCRv5 pipeline tuned on real models — DB unclip makes OCR acc…
Vantalens May 30, 2026
5428d8e
feat: OCR orientation correction (cls 180 + vertical 90) + quality co…
Vantalens May 30, 2026
0636882
feat: adaptive median denoise for OCR (clean images untouched, noisy …
Vantalens May 30, 2026
c36b2c7
feat: OCR auto-deskew for slanted/rotated documents
Vantalens May 30, 2026
a20a157
feat: OCR layout structure recognition (headings + paragraphs)
Vantalens May 30, 2026
150c41e
feat: surface OCR recognition quality in the verification report UI
Vantalens May 30, 2026
60c0d5c
chore(release): v2.3.0 — local OCR (PP-OCRv5), LaTeX, three-layer ver…
Vantalens May 30, 2026
23cd73a
fix: green the release gate — tesseract local-only, PP-OCRv5 availabi…
Vantalens May 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,18 @@ Thumbs.db
/releases/
/artifacts/

# Generated sample corpus (programmatically regenerable; `npm run samples:generate`)
/samples/generated/

# Heavy OCR runtime + model vendors (reproducible via vendor scripts + local download;
# bundled into the app build from disk, not committed):
# onnxruntime-web: `npm i onnxruntime-web && npm run vendor:onnx`
# tesseract.js: `npm i tesseract.js && npm run vendor:tesseract`
# PP-OCRv5 ONNX models: `npm run vendor:paddle` (pinned source + SHA-256, scripts/paddleocr-models.manifest.json)
/public/vendor/onnxruntime/
/public/vendor/paddleocr/
/public/vendor/tesseract/

# Test screenshots / debug captures
/test-results/
/playwright-report/
Expand Down
26 changes: 22 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,30 @@

## [Unreleased]

## [2.3.0] - 2026-05-30

### 新增

- **本地 OCR(PP-OCRv5)**:图片 / 扫描 PDF 经 ONNX Runtime + WebGPU(WASM 回退)在本机识别。完整管线含图像预处理(ImageNet 归一化 + limit_side_len + 32 倍数)、DB 检测后处理(连通域 + unclip 外扩)、CTC 贪心解码 + 字典对齐、cls 方向校正(180°)、竖排/侧向 90° 试转、任意角倾斜自动纠偏(错切投影估角)、自适应中值去噪(仅噪图去噪、净图不损)、版面结构识别(按字号/间距归并为标题+段落)与识别质量评分(grade / 置信度 / 低置信行 / 纠偏 / 去噪)。应用内置一套 PP-OCRv5 mobile 模型,启动时自动载入本地缓存,开箱即用;可在安全中心导入/替换。用真实模型实测验证(rec 解词图为 "PAIN"、产品标签 0.978、倒置 0.976、+10° 倾斜 8→16 行恢复)。
- **轻量 OCR(Tesseract.js)**:可选轻量 OCR engine,按需在安全中心导入 tessdata;与 PP-OCRv5 经优先级感知 `pickForTask` 路由(paddle 优先)。
- **转换后检验三层**:规则 diff(字段级结构对比)+ SSIM 视觉回环 + OCR 回读,统一写入 `qualityReport.{ruleDiff,ssim,ocrReadback}` + `verification` envelope;工作台「转换检验报告」可视,含 OCR 识别质量行。SSIM 核心、文本相似度、规则 diff 均为零依赖纯函数,Node 全覆盖。
- **LaTeX 数学渲染**:`$...$` / `$$...$$` 受保护 tokenization(反斜杠 / 下划线逐字保留,货币不误判),预览用本地 KaTeX 排版,零联网。
- **Repair Engine 与按需模型缓存**:RepairAction 契约 + 规则驱动 validator/handler + 复核循环;model-cache manifest / SHA-256 / 状态机 / 安全中心导入 UI。
- **优质测试样例生成器**:`npm run samples:generate` 程序化产出覆盖全格式、复杂排版、大小不一(large ≥ 3MB)的样例语料(gitignore)。

### 修复

- **P7-A Windows 桌面发布基线**:统一 `package.json`、Tauri 配置与 Rust crate 版本为 `2.2.0`,声明已入库的 Windows ICO 图标;新增配置门禁并通过真实 `npm run desktop:build` 产出 MSI 与 NSIS 安装包。
- **P8 路由损失可见性**:`RoutePlanner` 现在返回实际模型路径,跨模型转换将 `forcedWarnings` 和 `routeTemperature` 写入 QualityReport;工作台转换完成后展示带路径降级提示的转换模型。
- **P8-B 可执行 mapper 与路径真值**:`SemanticDoc <-> WorkbookModel` 首批 mapper 已进入实际转换链并记录 `executedMappers`;`PPTX` 生成型输出和 `OFD -> PDF` 受限路径通过 `routeClass` 与 `PATH_NOT_RECOMMENDED` 明示质量边界。
- **Markdown 导出原始 HTML 回归**:保留 task list 的 `[]` 字面语义,同时恢复文本节点 `<` / `>` 转义,避免纯文本输入导出 `.md` 时激活 HTML 标签。
- **首页空白**:`browser-transformer.js` 漏 re-export `getKnownInputFormats` 导致 `landing-view.js` 浏览器加载失败、首页空白;补导出并加模块图加载守门。
- **OCR 实际不触发**:转换走 Web Worker 同步路径绕过了 OCR;图片/PDF 改走主线程异步管线,OCR 真正执行。
- **冻结引擎导入失败**:`paddleOcrEngine`/`tesseractOCREngine` 就绪状态存于冻结对象,`ensureProbe()` 赋值在严格模式抛错、令安全中心导入静默失败;改为模块级状态。
- **OCR 质量数据被覆盖**:Repair Engine 的 `modelReview` 覆盖了 OCR stage 的,丢弃 `ocr/ocrQuality`;改为合并保留,识别质量得以在 UI 展示。
- **P7-A Windows 桌面发布基线**:统一 `package.json`、Tauri 配置与 Rust crate 版本,声明 Windows ICO 图标;配置门禁 + 真实 `npm run desktop:build` 产出 MSI/NSIS。
- **P8 路由损失可见性 / P8-B 可执行 mapper**:`RoutePlanner` 返回实际模型路径,`executedMappers` / `routeClass` / `PATH_NOT_RECOMMENDED` 写入 QualityReport。
- **Markdown 导出原始 HTML 回归**:保留 task list `[]` 字面语义,恢复文本节点 `<` / `>` 转义。

### 方向

- **高级 OCR 目标调整**:调研确认 PaddleOCR-VL / MinerU(VLM)在浏览器/Tauri 本地 + 零云端 + 轻量默认包约束下不可内嵌,把高级 OCR 内置目标定为 **PP-OCRv5(ONNX/WebGPU)**,VLM 标注为远期/外部资源。

## [2.2.0] - 2026-05-26

Expand Down
38 changes: 31 additions & 7 deletions DEVELOPMENT_TASKS.md

Large diffs are not rendered by default.

67 changes: 34 additions & 33 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
Trans2Former 是一个专业级的桌面文档转换工具,支持 12 种输入格式和 11 种输出格式的相互转换。所有转换在本地完成,零上传,保护您的数据隐私。

[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
[![Tests](https://img.shields.io/badge/smoke-46%20groups%20passing-brightgreen.svg)](#)
[![Version](https://img.shields.io/badge/version-2.2.0-blue.svg)](#)
[![Tests](https://img.shields.io/badge/tests-28%20scripts%20passing-brightgreen.svg)](#)
[![Version](https://img.shields.io/badge/version-2.3.0-blue.svg)](#)

---

Expand All @@ -16,8 +16,9 @@ Trans2Former 是一个专业级的桌面文档转换工具,支持 12 种输入
- 🚀 **高性能** - 基于 Web Worker 的并行处理
- 📦 **零依赖** - 不需要安装 Office、LibreOffice 或 Pandoc
- 🎨 **实时预览** - 转换前后实时预览文档
- 📝 **结构化编辑** - 支持编辑转换后的文档结构
- 🧩 **核心内置增强** - OFD、OCR、版面分析等能力代码核心内置;OCR 模型资源按需本地下载到 model-cache,不进入默认安装包
- 🔤 **本地 OCR** - 图片 / 扫描 PDF 用内置 PP-OCRv5(ONNX Runtime + WebGPU)本地识别,含方向校正、倾斜纠偏、自适应去噪、版面结构(标题/段落)与质量评分
- 🧮 **LaTeX 渲染** - 预览中用本地 KaTeX 排版 `$...$` / `$$...$$` 数学公式
- ✅ **转换后检验** - 规则 diff + SSIM 视觉对比 + OCR 回读三层组合统一写入 QualityReport,工作台可视
- 🌍 **多语言** - 支持中英文、RTL 文本等
- ⚡ **无大小限制** - 不设置人为文件大小上限

Expand Down Expand Up @@ -120,23 +121,24 @@ Trans2Former/
- **批量转换** - 同时转换多个文件
- **编辑输出** - 直接编辑转换后的文本
- **版本历史** - 查看和恢复历史版本
- **质量报告** - 查看转换质量和警告
- **质量报告** - 查看转换质量和警告
- **转换检验报告** - 规则 diff / SSIM / OCR 回读 + OCR 识别质量评分

---

## 🧩 核心本地增强

Trans2Former 不再提供插件安装模式,增强能力代码直接并入核心本地模块;默认安装包目标 30–80 MB,不内置 GB 级模型,相关模型资源按需本地下载到 model-cache
Trans2Former 不再提供插件安装模式,增强能力代码直接并入核心本地模块;模型资源不进入 git 仓库,由 vendor 脚本 + 本地下载重建,随应用打包

- **OFD 支持** - 政务格式支持
- **本地 OCR** - 扫描文档识别(首次启用时下载本地 OCR 模型到 model-cache,识别全程本机执行)
- **版面分析** - 复杂布局识别
- **表格恢复** - PDF 表格提取
- **转换后检验** - 规则 diff + SSIM 视觉对比 + OCR 回读三层组合写入 QualityReport
- **高级 OCR**(规划中)- PaddleOCR-VL / MinerU 等大模型作为独立本地资源按需获取
- **本地 OCR(PP-OCRv5)** - 图片 / 扫描 PDF 经 ONNX Runtime + WebGPU(WASM 回退)在本机识别;含 cls 方向校正(180°,可选模型)、任意角倾斜自动纠偏、自适应中值去噪、版面结构识别(按字号/间距归并标题+段落)、识别质量评分(grade / 置信度 / 低置信行 / 纠偏 / 去噪),全程零联网、零上传
- **轻量 OCR(Tesseract.js)** - 可选的轻量 OCR 引擎,按需在安全中心导入 tessdata
- **转换后检验三层** - 规则 diff + SSIM 视觉对比 + OCR 回读统一写入 QualityReport,工作台「转换检验报告」可视
- **LaTeX 数学渲染** - 本地 KaTeX,零联网
- **OFD 支持 / 版面分析 / 表格恢复** - 核心内置,持续攻坚
- **高级 OCR(远期)** - PaddleOCR-VL / MinerU 等 VLM 受浏览器/Tauri 本地运行时限制,作为远期/外部资源评估(详见 docs)

这些能力不通过插件包分发;后续实现必须继续保持本地执行、无上传、可解释降级和资源预算约束。
> 运行高级 OCR:`npm install onnxruntime-web && npm run vendor:onnx`。PP-OCRv5 mobile 检测/识别模型与字典由 `npm run vendor:paddle` 从钉定来源下载、SHA-256 校验(见 [scripts/paddleocr-models.manifest.json](scripts/paddleocr-models.manifest.json))并随 `release:prepare` 打包,启动自动载入、开箱即用;方向分类(cls)为可选,可在安全中心导入/替换。详见 [docs/PP_OCRV5_BROWSER_VERIFICATION.md](docs/PP_OCRV5_BROWSER_VERIFICATION.md)。

这些能力不通过插件包分发;实现继续保持本地执行、无上传、可解释降级和资源预算约束。

---

Expand All @@ -160,14 +162,14 @@ Trans2Former 严格遵守本地优先原则:
npm test
```

测试覆盖:
- ✅ 核心转换测试(44/44 通过)
- ✅ 快照测试
- ✅ 格式能力审计
- ✅ 安全测试
- ✅ 资源预算测试
- ✅ 本地安全测试
- ✅ 发布就绪测试
测试覆盖(28 个脚本全量通过)
- ✅ 核心转换 / 快照 / 格式能力审计
- ✅ 转换检验三层(规则 diff / SSIM / OCR 回读)
- ✅ OCR 管线(预处理 / DB 后处理 / CTC 解码 / 方向 / 倾斜 / 去噪 / 结构)+ 真实模型集成(onnxruntime-node,缺依赖优雅跳过)
- ✅ LaTeX 数学 tokenization
- ✅ 安全 / 资源预算 / 方向门禁 / 发布就绪

> 复杂/大体积样例语料:`npm run samples:generate` 程序化产出覆盖全格式、大小不一(large ≥ 3MB)的测试样例到 `samples/generated/`(gitignore)。

---

Expand Down Expand Up @@ -221,7 +223,7 @@ npm test

1. **复杂样式** - 部分复杂样式可能无法完全保留
2. **图表动画** - PPTX 动画和图表需要后续核心增强
3. **扫描 PDF** - 扫描文档需要后续核心 OCR 能力
3. **OCR 难例** - 强斜体 / 复杂艺术字识别仍受限(常规、倾斜、倒置、带噪文档已支持);真实 ONNX 推理在浏览器 / Tauri(WebGPU/WASM)执行
4. **ZIP64** - 暂不支持超大 ZIP 文件

这些限制将在后续版本中通过核心本地模块逐步解决。
Expand All @@ -231,20 +233,19 @@ npm test
## 🗺️ 路线图

### 已完成 ✅
- [x] P0-P8 核心功能
- [x] 12 种输入格式
- [x] 11 种输出格式
- [x] 核心本地能力路线
- [x] 桌面发布准备
- [x] P0-P8 核心功能 + 12 种输入 / 11 种输出格式
- [x] 转换后检验三层(规则 diff + SSIM + OCR 回读)+ 工作台可视
- [x] 本地 OCR(PP-OCRv5:识别 + 方向校正 + 倾斜纠偏 + 去噪 + 版面结构 + 质量评分)
- [x] LaTeX 数学渲染(KaTeX)
- [x] Windows 桌面发布(MSI / NSIS)

### 进行中 🚧
- [ ] 平台安装包构建
- [ ] SSIM 视觉对比
- [ ] 性能优化
- [ ] 跨平台安装包(macOS / Linux)+ 签名公证
- [ ] OCR 表格结构识别 → Markdown 表格

### 计划中 📋
- [ ] 本地 OCR 核心增强
- [ ] 版面分析核心增强
- [ ] 强斜体 / 艺术字识别增强
- [ ] 高级 OCR(PaddleOCR-VL / MinerU)本地运行时评估
- [ ] 更多格式支持

---
Expand Down
47 changes: 47 additions & 0 deletions RELEASE_NOTES_v2.3.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Trans2Former v2.3.0

本地优先的多格式文档转换器。本版把**本地 OCR**从骨架做到真机可用,新增 **LaTeX 数学渲染**与**转换后检验三层可视化**,全程零上传、零联网。

## 新增

### 本地 OCR(PP-OCRv5)
图片 / 扫描 PDF 经 **ONNX Runtime + WebGPU**(WASM 回退)在本机识别,应用内置一套 PP-OCRv5 mobile 模型,启动自动载入、开箱即用,可在安全中心导入/替换。完整管线:

- 图像预处理 + **DB 检测后处理(连通域 + unclip 外扩)** + **CTC 解码 + 字典对齐**
- **方向校正**(cls 180°)、**竖排/侧向 90° 试转**
- **任意角倾斜自动纠偏**(错切投影估角 → 旋正重检)
- **自适应去噪**(仅噪图去噪,干净图不受影响)
- **版面结构识别**(按字号/间距归并为标题 + 段落 + 阅读顺序)
- **识别质量评分**(grade / 置信度 / 低置信行 / 纠偏 / 去噪),工作台「转换检验报告」可视

> 真机实测:rec 解词图为 "PAIN";产品标签 0.978;倒置文档 0.976;+10° 倾斜 8→16 行恢复至 0.970;15% 椒盐噪点 4→16 行恢复。

### LaTeX 数学渲染
`$...$` / `$$...$$` 受保护识别(反斜杠 / 下划线逐字保留,货币不误判),预览用本地 **KaTeX** 排版,零联网。

### 转换后检验三层
规则 diff + SSIM 视觉对比 + OCR 回读,统一写入 `qualityReport` 并在工作台可视;核心算法零依赖、纯函数。

### 其他
- 轻量 OCR(Tesseract.js)可选引擎 + 优先级路由
- Repair Engine + 按需模型缓存(manifest / SHA-256 / 安全中心导入)
- `npm run samples:generate`:全格式、大小不一(≥3MB)测试样例语料生成器

## 修复

- 首页空白(缺 `getKnownInputFormats` re-export)
- OCR 实际不触发(转换绕过 OCR 异步管线)
- 冻结引擎导致安全中心模型导入静默失败
- OCR 识别质量被 Repair Engine 覆盖丢失

## 方向调整

高级 OCR 内置目标从 **PaddleOCR-VL / MinerU(VLM)** 调整为 **PP-OCRv5(ONNX/WebGPU)**——VLM 在浏览器/Tauri 本地 + 零云端 + 轻量默认包约束下不可内嵌,标注为远期/外部资源。

## 升级指南

从 v2.2.x 升级:直接覆盖部署即可,无破坏性 API 变更。运行高级 OCR 需 `npm install onnxruntime-web && npm run vendor:onnx`(应用已内置 PP-OCRv5 模型,开箱即用)。

## 全部测试通过

`npm test` 全套 **28 个脚本**通过;`git diff --check`、`npm run release:prepare` 通过。Windows MSI / NSIS 安装包经真实 `npm run desktop:build` 产出。
2 changes: 1 addition & 1 deletion docs/CONVERSION_ROUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,6 @@ P8-B 的首批执行链已闭环。后续按 2026-05-28 [lightweight-default-bun
- **P9-A OCR 基线**:PNG 与扫描 PDF 接入轻量 OCR(Tesseract.js / 轻量 PaddleOCR),OCR 模型资源按需下载到 model-cache,不进入默认安装包。
- **P9-B OCR → FixedLayoutModel**:OCRResult → FixedLayoutModel → SemanticDoc,保留 bbox / confidence / page index / reading order,让 Repair Engine 的 `fixedLayoutToSemantic` 路径获得真实证据。
- **P9-C 转换后检验**:规则 diff + SSIM 视觉对比 + OCR 回读三层组合统一写入 QualityReport,作为核心差异化能力提升。
- **P9-D 高级 OCR**:PaddleOCR-VL / MinerU 等大模型作为独立本地资源按需下载,明确体积、运行内存、降级路径
- **P9-D 高级 OCR**:内置目标为 PP-OCRv5(ONNX Runtime + WebGPU,WASM 回退),作为比 Tesseract 更高精度的本地 OCR engine 按需下载 ONNX 模型;PaddleOCR-VL / MinerU 等 VLM 为远期/外部资源(浏览器/Tauri 本地暂不可内嵌)

在 P9-A 启动前必须先完成 **S3 按需下载与本地缓存治理**:定义 model-cache 目录结构、manifest、checksum、可清理入口、断网降级提示和首次启用下载提示流程。`slide` / `fixedLayout` 路径的 writer 能力和视觉质量证据在 P9-B/C 推进过程中补齐;在证据成立前不将规划边提升为实际 mapper 执行。
3 changes: 2 additions & 1 deletion docs/DESKTOP_APP_ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,8 @@ Tauri + Web-GUI 是当前最合理的桌面路线。
| 重格式 | 核心本地按需加载 |
| 默认安装包 | 30–80 MB,不打包 GB 级模型 |
| OCR 模型 | 不进入默认安装包;首次启用时本地下载到 model-cache,可清理、可禁用 |
| 高级 OCR(PaddleOCR-VL / MinerU 等) | 独立本地资源,按需获取,明确体积与硬件要求 |
| 高级 OCR(PP-OCRv5 ONNX/WebGPU) | 内置目标:比 Tesseract 更高精度的本地 OCR engine,按需下载 ONNX 模型到 model-cache |
| VLM(PaddleOCR-VL / MinerU 等) | 远期/外部资源;浏览器/Tauri 本地暂不可内嵌,明确体积与硬件要求 |

## 当前实现

Expand Down
2 changes: 1 addition & 1 deletion docs/DESKTOP_RELEASE_PLAN.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ Trans2Former_<version>_checksums.sha256
- OCR 模型资源不进入默认安装包;首次启用时本地下载到 model-cache,必须提供 manifest、checksum、缓存路径、可清理入口、体积报告、断网降级提示和失败 fallback,处理过程不上传任何文档内容。
- `release:prepare` 必须依次执行 `sync-pdfjs-vendor` 与 `sync-tesseract-vendor`;后者在 `tesseract.js` optionalDependency 缺失时退出 0,不阻塞 CI/发布流程。
- Tauri CSP 必须保留 `'wasm-unsafe-eval'`(让本地 tesseract.js wasm 在 WebView 中可实例化),且 `connect-src 'self'` 不可放开 —— 模型资源仅同源 vendor 与本地 IndexedDB,禁止任何远程 URL。
- 高级 OCR 资源(PaddleOCR-VL / MinerU 等大模型)作为独立本地资源按需获取,启用前展示体积、运行内存、降级路径和失败提示。
- 高级 OCR 内置目标为 PP-OCRv5(ONNX Runtime + WebGPU,WASM 回退),ONNX 模型按需下载到 model-cache,启用前展示体积、运行内存、降级路径和失败提示;PaddleOCR-VL / MinerU 等 VLM 为远期/外部资源(浏览器/Tauri 本地暂不可内嵌)
- 转换后检验三层(规则 diff、SSIM 视觉对比、OCR 回读)必须可在断网状态运行,验证 Repair Engine 修复后的输出质量并写入 QualityReport。
- 文档处理模式始终禁止网络访问。

Expand Down
Loading
Loading