测试与发布证据

CameraX 旋转与 EXIF 方向:验证本地图像 AI 坐标

分别追踪像素方向和坐标变换,不把几何错误与 ImageProxy 生命周期混为一谈。

审核状态: 内容已校验;中文稿供用户审核 · 2026-10-04 · Fact IDs: OCR-DEDICATED-01, COVE-OCR-01

直接回答

方向错误通常发生在送给模型的像素、描述方向的元数据以及应用绘制坐标三者不一致时。CameraX ImageAnalysis 可提供拍摄帧的旋转信息;导入图片则可能依赖 EXIF 方向元数据。预览看起来正向,并不能证明推理输入或 OCR 坐标使用了相同变换。应将源像素、旋转元数据、裁剪、缩放、模型输入、检测框、UI 覆盖层和导出图像分成不同阶段,每个阶段注明坐标空间。 不能假设所有图像都已物理旋转成显示方向。相机路径可能提供未旋转像素和旋转元数据;导入路径可能依赖 EXIF;预处理库可能应用其中一种,同时清除或保留元数据。要记录实际使用的路径和变换。变换应用两次会让图片转错;坐标映射漏掉变换,则可能出现文本识别正确但文字框位置偏移。 建立合成方向夹具,在四角放置清晰标签和不对称形状,并覆盖纵向、横向及不同 EXIF 方向。对 CameraX 按所选用例暴露的旋转值建立捕获夹具;对导入文件则测试应用声明支持的 EXIF 方向。比较解码像素、变换像素、模型输入尺寸、识别框坐标、覆盖层位置、裁剪与导出结果。预期几何应记录在有版本的测试清单中,不能依赖测试者回忆预览画面。 使用单一且有文档的变换流水线,例如获取像素/图像平面、应用方向、裁剪、缩放、构造模型输入,再把结果坐标映射回源图或显示图。准确顺序必须匹配应用实现和任务。涉及裁剪坐标时,旋转和缩放通常不能任意交换顺序。应保存变换矩阵或足以复现的操作序列,而不只用一个“已旋转”布尔值。模型输出采用归一化坐标时,还要注明参考的是哪一组图像尺寸。 导出也要单独验证。显示覆盖层可能用变换后的视图坐标,而保存的原图仍保留原始像素矩阵和 EXIF。产品需决定导出写入纠正后的图像、保留原图及元数据,还是另存结果叠加图,并对实际字节和元数据测试。项目事实只说明 Cove Photo 有结构化可见文本结果,不证明每条相机/导入方向路径都正确。本文是几何测试方法,不主张 OCR 准确率、相机支持或设备兼容。 测试夹具应使用非对称图形。如果仅用中心对称图案,旋转 180 度后仍可能看起来一致,漏掉双重变换。框坐标应包含左上、右上等方向标记,并验证缩放比例及原图坐标逆映射。若 UI 在设备方向变化后重新构造预览,还要确认分析帧旋转元数据与布局方向不是两次独立且互相覆盖的变换。每项都固定输入文件和变换版本。 回归报告应把像素朝向、文字内容、检测框、裁剪和导出分别评分。内容正确但框错误时归类为坐标变换问题;源像素已错误或解码器没应用 EXIF 时则属于输入前处理边界。通过一张图片不等于支持所有设备相机方向或图片来源。任何广泛声明都需要相应原始测试样例及配置记录。

导入照片中的文字框旋转,但相机预览正常

用户导入一张图库中看起来正向的纵向图片。OCR 识别到文字,但结果框横着显示,裁剪导出的方向又与预览不同。应用既支持 CameraX 拍摄也支持文件导入。

决策

对拍摄和导入分别追踪像素与坐标变换,用带已知方向标记的不对称夹具复现。

预期结果

团队可定位旋转、EXIF、裁剪/缩放、坐标映射或导出中的首次偏差,而不必改模型或 ImageProxy 生命周期。

需要收集的证据

只有将以下证据与同一模型文件和测试运行关联起来,结论才可复核:

  • OCR-DEDICATED-01:官方 OCR 结构包含块、行和元素,可用于分层验证识别结果。
  • COVE-OCR-01:Cove Photo 将可见文本解析为结构化字段,但不证明所有图像方向路径正确。

发布结论只对所记录的配置和验收集有效;扩大适用范围需要更多记录。

实施流程

  1. 盘点每种图像入口. 记录来源是 CameraX 还是导入文件、原始尺寸、可用旋转元数据、EXIF 方向、解码器行为和应用构建。拍摄与导入是不同夹具,即便图片视觉相同。
  2. 建立不对称方向夹具. 在四角放置合成标签和形状,覆盖纵横方向及 EXIF 变体。保存预期源坐标与显示方向;对称图片无法发现重复旋转。
  3. 追踪变换与坐标空间. 逐项记录解码像素、方向操作、裁剪、缩放、模型输入形状、模型输出坐标约定、逆映射和覆盖层坐标。每阶段标明宽高与变换版本。
  4. 分别比较显示和导出. 独立核对预览、OCR 框、裁剪、保存图像字节及 EXIF。先决定导出保留原图,还是写入纠正方向,再断言符合所选契约。
  5. 注入变换回归. 测试缺失 EXIF、像素已旋转、双重旋转、裁剪与缩放顺序、导航和错误元数据。一次只改一个规则,将识别文本正确性与几何对齐分开。

让每个阶段的状态都可观察。失败信息应指出阶段、模型、运行时和恢复动作,同时避免记录用户私密内容。

验收标准

  • CameraX 拍摄与导入图片分别记录像素尺寸和方向元数据。
  • 从源像素到模型输入、覆盖层、裁剪及导出的变换顺序和坐标空间有版本记录。
  • 不对称合成夹具能发现漏旋转/重复旋转,并验证裁剪缩放后的框坐标。
  • 不从几何测试推导 OCR 准确率、相机兼容或设备支持结论。

决策对照表

维度选择或证据解读方式
预览方向用户在相机/图库画面看到的结果不能单独证明模型收到相同方向的像素。
模型输入几何解码像素加明确方向/裁剪/缩放变换定义推理所用图像和坐标基准。
导出几何保存像素矩阵、框坐标映射与 EXIF 策略需独立测试,因为显示变换不一定修改保存字节。

需要避免的失败模式

  • 预览看起来方向正确,就假设模型收到同方向像素。
  • 只验证 OCR 文本,不验证框坐标、裁剪和导出。

还要避免静默回退、版本未固定、缺少取消处理,以及把不同配置的结果混在一起下结论。失败运行也应与成功记录一并保存。

最小复现记录

层级记录内容
设备厂商、型号、芯片、内存档位、操作系统版本
软件应用版本和 Git 提交号
模型系列、变体、版本、格式、文件长度、摘要、量化方式
运行时名称、版本、请求后端及实际后端证据
工作负载样例版本、输入摘要、提示词摘要、输出策略
结果完成、失败、取消、回退及保护隐私的诊断信息

发布检查表

  • ☐ 主要搜索问题已回答,且没有未经支持的数字。
  • ☐ 所有模型文件和运行时版本均已固定。
  • ☐ 代表性任务和失败处理策略均有说明。
  • ☐ 生命周期、取消、清理和回退均已测试。
  • ☐ 用户内容与网络边界均有说明。
  • ☐ 结论只适用于被记录的配置。
  • ☐ 新增测试结果时链接到原始方法或证据。

来源与相关证据

中文部署与排错专题见。奇连 AI 端侧专题。

常见问题

预览正向就说明模型输入也正向吗?

不一定。预览渲染可能另有变换,而 analyzer 收到的仍是原始像素加旋转元数据。检查真实输入、相机分析方向和预览变换,并核对实际像素尺寸。

EXIF 应该在缩放前还是后应用?

应选择有文档的变换顺序并验证裁剪及坐标映射。旋转、裁剪和缩放会改变坐标基准,不能随意互换;记录矩阵、尺寸与变换版本。

OCR 文本正确是否代表边框坐标也正确?

不代表。文字识别与几何映射是不同结果。应用不对称夹具验证框、显示和导出坐标,并覆盖拍摄和导入两种来源与方向,记录变换版本。