# AI 识别与图片/OCR 数据说明

更新日期：2026-07-05

本文说明「财米有盐记账」如何处理截图、文字、语音和 OCR/LLM 数据。

## 1. 识别流程

1. 用户上传付款截图、输入一句话或提交语音转写文本。
2. 后端创建 AI 识别日志，并按订阅权益消耗一次 `ai_recognition` 用量。
3. OCR/LLM/本地规则解析生成候选账单。
4. 用户在确认页核对和修改。
5. 用户确认后才创建正式 `transactions`。

当前代码中真实 OCR provider 尚未接入。单张图片识别如果未传本地联调用 `ocr_text`，会创建 `OCR_NOT_CONFIGURED` 失败日志，不会伪装识别成功。

## 2. 计数规则

- 免费用户按用户时区自然月计算 AI 次数，默认 `Asia/Shanghai`。
- text、voice、image 都计入 `ai_recognition`。
- 成功创建识别任务或明确失败的识别任务会计数。
- 文件缺失、格式不支持、图片保存失败等任务未创建错误不计数。
- Pro/monthly/yearly active 且未过期时不受免费额度阻断，但仍记录使用量用于成本观察。

## 3. 保存的数据

AI 日志可能保存：

- source_type、status、模型 provider、模型名、prompt 版本。
- 输入文本、语音转写文本或 OCR 文本。
- 结构化候选结果、字段置信度、总置信度。
- 图片 hash、图片 URL、疑似重复候选。
- 错误码和错误摘要。

埋点和崩溃日志不会保存完整 OCR 文本、完整截图 URL、token、支付凭证或银行卡号。

## 4. 第三方处理

生产接入 OCR、LLM 或 ASR 服务时：

- API key 必须放在服务端环境变量。
- 只发送完成识别必需的数据。
- 不把第三方 key 写入移动端、前端包或仓库。
- 第三方错误只记录 provider、错误码、耗时和脱敏摘要。

## 5. 用户控制

用户可以取消识别，取消不会创建正式账单。用户也可以在确认页删除或修改 AI 候选字段。账号注销和数据删除流程上线前需要明确保留期限、删除范围和客服处理方式。
