> ## Documentation Index
> Fetch the complete documentation index at: https://docs.oneee.cn/llms.txt
> Use this file to discover all available pages before exploring further.

# 图片识别

> 通用看图问答、文字提取、小票记账的视觉分析链路

## 概览

系统支持多模态图片处理，用户上传图片后，系统先做通用预分析，再结合文字需求决定下一步动作。

```
图片上传
    ↓
Router 预分析（analyze_image）
    ↓
判断意图
    ├→ 通用问答: "图里是什么" → 直接回答
    ├→ 文字提取: "识别图片文字" → OCR 结果
    └→ 记账: 小票/支付截图 → analyze_receipt → ledger_insert
```

***

## 处理流程

<Steps>
  <Step title="图片预分析">
    Router 节点收到带图片的消息时，调用 `analyze_image` 工具：

    * 提取 `image_kind`（通用/小票/截图等）
    * 生成 `summary`（图片描述）
    * 提取 `ocr_text`（文字内容）
    * 给出 `confidence` 评分

    分析结果存入 `state.extra.image_analysis`
  </Step>

  <Step title="意图路由">
    Router 综合图片分析结果 + 用户文字内容决定路由：

    * 图片像小票/支付截图 + 用户提到记账 → `ledger_manager`
    * 其他情况 → `chat_manager`（通用回答）
  </Step>

  <Step title="执行动作">
    * **通用问答**：chat\_manager 直接基于图片分析结果回答
    * **记账**：ledger\_manager 调用 `analyze_receipt` 提取结构化数据，再 `ledger_insert`
  </Step>
</Steps>

***

## 工具

### analyze\_image

通用图片分析，由 Router 自动调用。

| 参数         | 说明       |
| ---------- | -------- |
| `url`      | 图片 URL   |
| `question` | 用户问题（可选） |

返回：image\_kind, answer, summary, ocr\_text, confidence

### analyze\_receipt

小票/收据专用提取。

| 参数           | 说明 |
| ------------ | -- |
| （自动从消息中获取图片） |    |

返回结构化数据：金额、商户名、交易日期、支付方式等

***

## 支持场景

| 场景   | 用户输入示例             | 系统行为      |
| ---- | ------------------ | --------- |
| 通用看图 | "图里是什么" "帮我看下这张图"  | 描述图片内容    |
| 文字提取 | "识别图片文字" "翻译图里的英文" | OCR + 处理  |
| 小票记账 | "这张小票帮我记一下"        | 提取金额→记账   |
| 支付截图 | （上传微信支付截图）"记一笔"    | 识别→记账     |
| 追问上文 | 上条发图 → "这张图里写了什么"  | 复用最近图片上下文 |

<Info>
  记账关键词检测：记账、入账、账单、小票、发票、支付截图、付款截图、消费截图、金额、花了、支出、收入、报销
</Info>

***

## 配置

| 环境变量              | 默认值                         | 说明     |
| ----------------- | --------------------------- | ------ |
| `VISION_MODEL`    | `gpt-4o`                    | 视觉分析模型 |
| `OPENAI_BASE_URL` | `https://api.openai.com/v1` | API 地址 |

***

## 跨消息图片上下文

用户在同一会话中先发图片、再发文字追问时，系统会尝试复用最近的图片上下文，无需重新上传。

```
用户: [上传图片]
Agent: "收到图片"
用户: "这张图里写了什么"
Agent: （复用上条图片）"图片中的文字是..."
```
