直接回答
摄像头隐私审计要追踪图像从取得到最后一个派生项的完整生命周期。“在设备上处理”只说明某一步运算的位置,并没有说明原始照片、预览、解码位图、OCR 文本、生成描述、缩略图、缓存或导出在之后是否保留。`ANDROID-PRIVACY-01` 与 `PRIVACY-01` 要求应用明确自己的访问与数据流边界。检查过的 Cove Photo 代码事实 `COVE-OCR-01` 记录了可见文本可能以结构化 Text 字段返回、保存为 `detectedText`、被复制,或包含在仅 OCR 历史导出中。该事实只适用于被检查的实现,不能推广成所有摄像头或模型路径的保证。 先画出数据生命周期:摄像头拍摄或系统选择器导入、临时 URI 或相机帧、预处理、推理输入、结构化文字/结果、历史数据库、缩略图、剪贴板/分享、备份和删除。每一步记录资源所有者、存储、生命周期,以及是否可能越过应用或设备边界。CameraX ImageAnalysis 可以通过 ImageProxy 提供帧,官方文档要求应用在处理后关闭代理,包括错误路径。这是一条资源释放要求,并不证明应用从未复制图像。要追踪所有转换,并且只保留完成用户功能需要的数据。 保留策略要具体。用户可能期望一次性拍照提问在返回结果后丢弃源图,而历史功能可能有意保存选定结果。这是不同模式,不应共用一个宽泛且含糊的“保存分析”开关。如果丢弃原图却保留 OCR 文本,应说明文本本身仍可能暴露敏感信息。历史缩略图也属于内容,而不是可以忽略的装饰。复制到剪贴板或系统分享是用户主动触发的边界转换;应展示复制或导出的内容,禁止后台偷偷传送。 使用带唯一可见金丝雀文字的合成图测试每条数据路径。拍照、分析、离开页面、在适用时强停或重建进程、重新打开历史、复制文字、导出和删除。使用受支持的开发工具检查应用专属存储和数据库记录。成功、取消和异常路径都要确认临时文件和缓冲区释放。备份规则另行检查,因为 Android 是否备份应用数据取决于具体配置。除非相应行为有测试与文档,不要承诺备份删除、物理安全擦除或没有任何远端请求。 OCR 和图像理解也应分开。结构化文字提取与生成式图像描述具有不同的内容和审核边界。如果任务只需读取可见文字,就不要顺便推断身份、食材或敏感属性。把提取文字显示成可编辑内容、保留不确定性,未经用户审核不要自动改写标识符。数据保留矩阵应独立说明源图、检测文本、解释结果和用户修订是否保存。 发布前要让实际代码路径和隐私说明一致。覆盖摄像头拒绝、文件选择器导入、拍摄取消、推理失败、历史开关、复制分享、删除、备份恢复与断网操作。最终说明应具体列出哪些项目会保留;只有保留期限有配置和验证依据时才写明时间;还应明确删除覆盖范围以及哪些动作会把数据交给其他系统。不能把单个应用的实现外推到整个“端侧 AI 摄像头应用”类别。
收据识别保存文字但不留原图
用户拍摄收据,让本地功能识别可见字段,之后在历史中查看结果。产品计划保留提取文字,但处理结束后丢弃原始图片。
决策
把像素、识别文字、解释结果、缩略图和用户修订分成不同保留项,并逐项测试存储路径。
预期结果
历史页面和隐私说明准确表示保留内容;删除记录时会移除该操作覆盖的全部应用自有派生项。
需要收集的证据
只有将以下证据与同一模型文件和测试运行关联起来,结论才可复核:
- ANDROID-PRIVACY-01:Android 数据访问和存储由应用负责
- PRIVACY-01:本地推理不证明其他数据流不存在
- COVE-OCR-01:已检查代码对可见文本及导出的处理
隐私声明需要数据清单和流量证据;“本地模型”标签本身不是证明。
实施流程
- 画出拍摄与导入入口. 记录相机帧、ImageProxy 所有权、选择器 URI 授权、临时副本、预处理结果和发送给模型的输入。标记每个可能保存字节的组件。
- 分类全部输出与派生项. 分开记录原图、检测文本、生成解释、缩略图、缓存、剪贴板内容、导出和备份,为每一项指定所有者、用途、期限和删除行为。
- 在所有退出路径执行清理. 成功、取消、解析失败和异常时都释放 ImageProxy、位图、文件句柄与临时文件。只有明确历史状态时才持久化结果。
- 测试历史与边界动作. 使用合成金丝雀图测试导航、进程重建、历史、复制、分享、备份配置和删除。检查存储并证明预期项目存在或已经消失。
- 让披露与真实行为一致. 对照拍摄、导入、网络、备份和导出代码审阅权限说明与隐私文案。只说明确认过的保留范围,不从本地推理推出全局删除或零网络。
让每个阶段的状态都可观察。失败信息应指出阶段、模型、运行时和恢复动作,同时避免记录用户私密内容。
验收标准
- 每条图像入口都分别列出像素、文字、解释、缩略图、缓存、剪贴板/导出和备份。
- ImageProxy 与临时资源在成功和所有失败/取消路径释放;合成测试覆盖历史和删除行为。
- 面向用户的说明区分图像保留和文字/结果保留,不承诺未经证实的安全擦除或零网络。
决策对照表
| 维度 | 选择或证据 | 解读方式 |
|---|---|---|
| 一次性分析 | 依策略在结果后丢弃源图 | 仍要检查文字、预览、缓存、日志和异常遗留文件。 |
| 历史条目 | 持久保存选定结果或派生项 | 需要清楚清单、用户控制和级联删除测试。 |
| 导出或分享 | 用户主动建立副本 | 越过应用边界;应展示导出字段,不能等同于本地推理。 |
需要避免的失败模式
- 把本地推理直接说成原图未保存
- 把关闭 ImageProxy 当成清理所有图像副本
- 遗漏历史记录中的识别文本与缩略图
还要避免静默回退、版本未固定、缺少取消处理,以及把不同配置的结果混在一起下结论。失败运行也应与成功记录一并保存。
最小复现记录
| 层级 | 记录内容 |
|---|---|
| 设备 | 厂商、型号、芯片、内存档位、操作系统版本 |
| 软件 | 应用版本和 Git 提交号 |
| 模型 | 系列、变体、版本、格式、文件长度、摘要、量化方式 |
| 运行时 | 名称、版本、请求后端及实际后端证据 |
| 工作负载 | 样例版本、输入摘要、提示词摘要、输出策略 |
| 结果 | 完成、失败、取消、回退及保护隐私的诊断信息 |
发布检查表
- ☐ 主要搜索问题已回答,且没有未经支持的数字。
- ☐ 所有模型文件和运行时版本均已固定。
- ☐ 代表性任务和失败处理策略均有说明。
- ☐ 生命周期、取消、清理和回退均已测试。
- ☐ 用户内容与网络边界均有说明。
- ☐ 结论只适用于被记录的配置。
- ☐ 新增测试结果时链接到原始方法或证据。
来源与相关证据
中文部署与排错专题见。奇连 AI 端侧专题。
常见问题
模型在本地运行,摄像头图像会自动删除吗?
不会自动删除。执行位置和数据保留是不同属性,需要检查文件、数据库、缓存、历史、备份和导出路径,并覆盖完整用户工作流。
OCR 文字会比照片不敏感吗?
不一定。文字可能包含姓名、地址、账户号或其他私人信息。应把它当作内容并单独规定保留和删除策略,让用户知道存了什么。
关闭 ImageProxy 能证明没有图像副本吗?
不能。它只释放 CameraX 帧资源。应用还要追踪解码位图、预处理输出、推理输入、缩略图、剪贴板副本、保存文件和历史派生项,并分别检查成功、取消与失败后的实际存储。