# UtiliVera OCR 独立审核报告（第六轮）

- 审核对象：UtiliVera OCR 0.7 冻结候选版
- 审核角色：独立软件审核师
- 审核日期：2026-08-08
- 固定参考基线：ABBYY FineReader PDF、Adobe Acrobat、Readiris PDF、Tungsten OmniPage、Nitro PDF Pro
- 最终结论：**PASS（当前约定审核范围内）**
- 评分：**100 / 100**
- 缺陷统计：**P0 = 0，P1 = 0，P2 = 0**

0.7 已关闭第五轮唯一 P1。冻结产品的真实 4×3 表格链、项目往返、人工 Table、非表格内容与孤词保留均通过；第五轮已关闭的低置信导航、透视校正、无边框保护和 Unicode 摘要也没有回退。满足“只有 P0=0 且 P1=0 才 PASS”的门禁。

## 1. 冻结身份与包一致性

| 对象 | 大小 | 版本 / SHA-256 | 结果 |
|---|---:|---|---|
| `utilivera-ocr/dist/UtiliVeraOCR.exe` | 346,624 bytes | FileVersion 0.7.0.0；`31E46DEC406F6FFF4A8CF68EB66E347234C2DB87EFAA32FAAC7A3EBF504C9784` | PASS |
| `outputs/UtiliVera-OCR/UtiliVera-OCR-0.7-portable.zip` | 700,477 bytes | `9E0705EC8F87A938CE137452314F267889C92FB7E29B894B2042AB567BF3A836` | PASS |

独立逐文件比对：dist 134 个文件、ZIP 134 个文件、缺失 0、额外 0、内容哈希不一致 0；dist 总大小 1,127,011 bytes。

证据：`work/audit-ocr-v07-package-f4039b65fb6a4c78baabf80edd98c48d/summary.json`。

审核结束前再次计算两项冻结哈希，仍与上表完全一致。审核期间没有修改冻结源码、dist 或 ZIP。

## 2. 评分明细

| 项目 | 得分 | 说明 |
|---|---:|---|
| 冻结包、构建与可靠性 | 10 / 10 | 身份、逐文件包比对、全新副本 140 项测试通过 |
| OCR、坐标与置信度 | 20 / 20 | 真实 OCR、词框、错误处理及低置信解释闭环通过 |
| 版面、项目与结构化导出 | 20 / 20 | 自动/往返/人工 Table 均保持精确 4×3，内容不丢 |
| 图像预处理 | 15 / 15 | 原失败梯形三档和无边框保护通过 |
| UI、无障碍与本地化 | 15 / 15 | UIA、真实高对比度、125% DPI、10 语言和 Unicode 通过 |
| 批处理、计划任务与 WIA | 10 / 10 | 已关闭链路及 140 项回归无退化，延期边界不计缺陷 |
| PDF/A 与归档输出 | 10 / 10 | 精确表格标签及官方 veraPDF PDF/A-3u 通过 |

## 3. 第五轮 P1 精确关闭

### 3.1 冻结产品真实 OCR → 自动 Regions → JSON

直接复用第四、第五轮原始样本：

`work/audit-ocr-v05-table-6c6c63ace1dd4f6ba19c6f0ca73414d6/table.png`

没有使用手工构造的 OCR 结果代替真实产品链。冻结 0.7 的独立结果：

- OCR 词数：15；
- Regions：2，类型为 Text、Table；
- Table Regions：1；
- Table 行数：**4**；
- 每行词数：**3,3,3,3**；
- Table 文本：
  - `Product Units Revenue`
  - `Alpha 120 12500`
  - `Beta 85 9200`
  - `Gamma 210 28400`
- 非表格标题区域：`Quarterly Revenue Table`，3 个词；
- JSON 中导出总词数：15，和 OCR 总词数一致，没有丢词。

证据：`work/audit-ocr-v06-table-9f0cc35786904d44952dd5c5f8e3c65b/automatic-table.json` 和 `summary.json`。

### 3.2 真实 PDF/A 精确结构

同一冻结 EXE、同一原始 `table.png` 直接生成 PDF/A。不是只检查标签存在，而是检查精确计数：

| 标签 | 期望 | 实际 |
|---|---:|---:|
| `/S /Table` | 1 | **1** |
| `/S /TR` | 4 | **4** |
| `/S /TH` | 3 | **3** |
| `/S /TD` | 9 | **9** |

官方 veraPDF 1.30.2 以 flavour 3u 验证，退出码 0，结果：

`PASS ... automatic-table-pdfa3u.pdf 3u`

证据：`work/audit-ocr-v06-table-9f0cc35786904d44952dd5c5f8e3c65b/automatic-table-pdfa3u.pdf`、`verapdf.txt`。

### 3.3 自动 Regions 往返、人工 Table 与孤词

为避免再次出现“第一次分析正确、保存 Regions 后导出错误”的盲点，本轮直接加载冻结 0.7 程序集中的 `ProjectStore` 和 `LayoutAnalyzer`，执行真实项目往返：

1. 冻结 CLI 识别原始 `table.png` 并保存 `.uvocr`；
2. 加载自动 Regions 再分析：Table 仍为 4 行、每行 3 词；
3. 把 Table Region 设为 `UserEdited=true`；
4. 在非表格区域附近增加独立词 `ISOLATED`；
5. 保存项目并重新加载；
6. 再分析并检查所有内容。

结果：

- 自动 Regions 往返：4×3；
- 人工 Table 保存前：4×3；
- 人工 Table 保存/重载后：4×3；
- `TableUserEditedAfterLoad=True`；
- Regions 数量仍为 2；
- 重载词数 16；
- 原非表格标题保留；
- 新增孤词 `ISOLATED` 保留，并进入非表格 Text 区域；
- Table 没有因孤词变成第 5 行，也没有丢失单元格。

证据：`work/audit-ocr-v07-table-roundtrip-380ee0f493654f30870e313426e3f623/summary.json`、自动和人工项目文件。

第五轮 P1 判定：**完全关闭**。

## 4. 全新副本测试

将项目复制到独立目录：

`work/audit-ocr-v07-copy-e106586cf8594b64a82f6d9ba352be02`

重新构建并运行测试，结果：**TOTAL PASS 140，退出码 0**。

新增门禁实际覆盖：

- 自动独立 OCR 单元格聚成 4×3；
- 自动 Regions 往返仍为 4×3；
- edited Table 从碎片原生 Line 重聚为视觉行；
- Regions 往返后的真实 Tagged PDF/A 精确保持 4 TR、3 TH、9 TD。

重建 EXE 的哈希因重新编译而不同；所有产品级验证均使用第 1 节冻结哈希对应的原始 EXE。

## 5. 已关闭缺陷无回退

### 5.1 低置信导航：PASS

直接运行第四轮原 UIA 脚本。冻结 0.7 点击 **Review suspect** 后最终可见：

`1/2 suspect words — "Tum" — Confidence 71% — stability:text=0.50;geometry=1.00;probe=Turn`

`HasConfidencePercent=True`、`HasReason=True`、`HasSuspectProgress=True`，没有后续覆盖。

证据：`work/audit-ocr-v05-confidence-ui-398a299754614d9dadd09e0147d14513/summary.json` 和截图。

### 5.2 透视三档与无边框保护：PASS

直接复用原始失败梯形：

`work/audit-ocr-v05-preprocess-564f16c0ad4a4cd08085cbeb4a80cdf6/fixed-trapezoid-600dpi.png`

| 目标 DPI | 输出尺寸 | 方向 / 比例 | OCR |
|---:|---:|---|---|
| 150 | 481×245 | 横向，1.963 | PERSPECTIVE、Invoice、Total、USD 全部存在 |
| 300 | 962×491 | 横向，1.959 | 全部存在 |
| 600 | 1923×981 | 横向，1.960 | 全部存在 |

无边框样本普通模式与 `--perspective` 输出均为 1200×700，像素级完全相同，差异边界为空。

证据：`work/audit-ocr-v06-perspective-412ffc998f4a4cb8b645f5fe96b2b8ae/summary.json`。

### 5.3 Unicode 摘要：PASS

直接从冻结 0.7 EXE 反射调用已编译 `BuildSummary`，实际返回：

`Dimensions and estimated compression  2400×1400 @ 600 DPI  →  1923×981 @ 600 DPI  ·  JPEG 75% ≈ 240 KB`

`×`、`→`、`·`、`≈` 全部存在；`脳`、`鈫`、`鈮` 等乱码不存在。

## 6. 冻结 CLI、UIA、DPI、高对比度与语言

### 6.1 CLI / UIA

- `--list-languages`：退出码 0，枚举 2 个已安装 OCR 语言；
- 真实 OCR：`Invoice 2026 Total 123.45 USD`；5 个词、5 个正尺寸词框；
- 无效 `zz-ZZ`：退出码 2，返回可操作 `OCR-E103`；
- UIA：36 Button，其中 28 产品 Button、8 滚动 RepeatButton；4 Edit、6 ComboBox、10 CheckBox、1 List；可见未命名交互控件 0。

证据：`work/audit-ocr-v07-cli-4dd341d3c5f74451936c7ecfc9a288aa/summary.json`、`work/audit-ocr-v06-uia-2386cf2ce59e405780c5883ead4adc62/summary.json`。

### 6.2 DPI 与真实高对比度

- 本机真实 DPI 120（125%）；工作区 1920×1030；窗口 `48,20,1825,990`；上下均未越界。
- 真实 Windows 高对比度、820×620 DIP 最小窗口：35 Button、4 Edit、6 ComboBox、10 CheckBox；未命名交互控件 0；标题、tagline、privacy、status 均可达。
- 高对比度测试后已恢复为 False。

证据：`work/audit-ocr-v04-defaultdpi-a09ba6a184d441528bb7e5be859f5f27`、`work/audit-ocr-v04-highcontrast-bdf1bbcf83e64efa91bdf1699b79c6ae`。

本机仍只有真实 125% 显示缩放；100/150/200/300% 通过 WPF DIP 工作区公式与自动化布局路径覆盖，不伪称为四台物理显示器实测。该环境限制按既定口径不计缺陷。

### 6.3 十种语言

English、简体中文、繁體中文、Español、Français、Deutsch、日本語、한국어、Português (Brasil)、Русский 全部实际启动；标题、tagline、privacy 均可见，未命名交互控件均为 0。本地化未回退。

## 7. 审核边界

按用户既定范围，下列项目不计 P1：

- Windows 代码签名、安装器与旧版升级迁移；
- 实体 WIA 扫描硬件；
- 五个真实竞品在同一机器、同一数据集上的准确率和性能对测。

本报告的 PASS 是当前约定技术门禁内的结论。它不等同于已经完成签名/安装验证、实体扫描仪认证或真实竞品实验，也不应被引用为这些延期项目已经通过。

## 8. 最终门禁

**PASS（100 / 100，P0=0，P1=0，P2=0）。**

冻结 0.7 可进入当前流程的下一阶段。发布时必须保持本报告所列 EXE/ZIP 哈希；任何代码、资源或打包变化都应视为新候选版本并重新审核。

