# 👁️ quasivision：给 LLM 装上一双"廉价的眼睛"，让它先"看见"再说

---

> **一句话总结**：quasivision 是一个用 Rust 写成的本地视觉理解引擎。它不跟你谈 AGI，不跟你比 VLM——它只做一件事：**把图片里的文字、物体、UI 组件、图标含义快速提取出来，喂给 AI。** 纯本地运行，零 Python 依赖，编译完一个二进制就能跑。

---

## 🤔 先讲一个"不对劲"的现象

你有没有发现——现在的 AI 圈有一个普遍的"认知偏差"：

> 只要提到"给 AI 看图片"，所有人的第一反应就是——"用 VLM 啊！GPT-4V！Claude Vision！"

但冷静想想，**绝大多数场景真的需要大模型来"理解"图片吗？**

举个常见的例子——

**场景 A**：一张截图里有一段文字，你懒得手动复制，想直接发给 AI 让它读。
- VLM 方案：上传图片 → 多模态大模型推理 → 理解图片 → 提取文字 → 返回结果
- quasivision 方案：本地 OCR → 文字提取 → 返回结果

**场景 B**：你有一千张 PDF 截图，想批量转成 Markdown。
- VLM 方案：传一千张图 → API 调用一千次 → 烧掉几百块钱 → 等半小时
- quasivision 方案：`cargo run -- -i ./screenshots/ --recursive` → 几秒钟出完结果 → 零成本

**场景 C**：你想让 AI 知道"这个页面有哪些按钮、分别在什么位置"。
- VLM 方案：大模型"看"图 → 它可能看对也可能看错 → 输出不稳定 → 每次都花钱
- quasivision 方案：本地结构化提取 → 稳定的坐标 + 分类 → 喂给 LLM 当上下文

发现没？

**很多场景根本不需要"理解"，只需要"看见"。**

就像你不需要一个哈佛毕业的博士帮你读路牌上的字——你需要的是一个视力 5.0 的路人，看一眼然后告诉你"前方 500 米右转"。

**quasivision 就是这个"视力 5.0 的路人"。**

---

## 🎯 核心定位：给 LLM 装一双"廉价的眼睛"

现在大模型圈最火的方向之一就是 **MCP（Model Context Protocol）** 和 **AI Tools**——让 AI 有"手"能调用工具，有"眼睛"能感知世界。

但问题来了：**VLM（视觉语言模型）太贵了。**

- 每次调用都是钱
- 需要网络传输图片（隐私风险）
- 响应延迟以秒计
- 不适合批量场景

而 quasivision 想做的是——**开源一套"AI Tools"级别的视觉感知层**。

```
┌─────────────────────────────────────────┐
│            LLM（GPT/Claude/本地模型）      │
├─────────────────────────────────────────┤
│         🔧 MCP / AI Tools 层            │
├─────────────────────────────────────────┤
│    👁️ quasivision（本地视觉感知引擎）     │
│    ├─ 文字识别（OCR）                    │
│    ├─ UI 组件检测（按钮/输入框/图标...）  │
│    ├─ 物体检测（860 类日常物体）          │
│    ├─ Icon 含义分类（81 种常见图标）      │
│    └─ 颜色提取                          │
├─────────────────────────────────────────┤
│            输入：一张图片                 │
│            输出：结构化JSON/Tree          │
└─────────────────────────────────────────┘
```

**quasivision 的眼睛是"假的"**——它看不懂"这个按钮的设计风格很现代"、"这张照片的情绪很悲伤"。它只能看到表面：
- 这里有文字："提交"
- 这里有按钮：坐标 [100,200, 300,250]
- 这里有物体：人（87%置信度），戴着帽子
- 这里有图标：搜索

**但很多时候，"看见了表面"就已经够了。**

---

## 🦀 为什么是 Rust？为什么不是 Python？

如果这只是一个"调一下 OpenCV"的小工具，用 Python 写也行。但 quasivision 的野心不止于此——它想做的是**系统级的 AI Tools 基础设施**。

### 🌱 零依赖部署

你部署一个 Python 视觉服务需要什么？

```
Python 3.x → pip install torch → pip install opencv →
pip install onnxruntime → pip install paddleocr →
... 可能还要解决 CUDA 版本冲突 ...
```

你部署一个 quasivision 需要什么？

```bash
cargo run -- --input 图片.png
```

或者编译完扔过去一个二进制文件。

**没有 Python 环境依赖、没有 Node.js 依赖、没有 `pip install` 地狱、没有环境冲突。** 编译完，一个文件，到处跑。

### 🏎️ 性能与体积

YOLOE-26n 物体检测模型只有 **11.1 MB**——比上一代 YOLO-World 的 49.5 MB 小了 **77%**。模型小意味着加载快、推理快、内存占用低。

再加上 Rust 的零成本抽象和 ONNX Runtime 的原生绑定，推理性能与 C++ 持平，但内存安全由编译器保障。

### 🔧 编译期搞定跨平台

```toml
[target.'cfg(target_os = "windows")'.dependencies]
oar-ocr = { version = "0.6", features = ["directml"] }

[target.'cfg(target_os = "macos")'.dependencies]
oar-ocr = { version = "0.6", features = ["coreml"] }
```

Windows 用 DirectML 加速，macOS 用 CoreML 加速，Linux 走 CPU 优化——**全是编译期自动选择，你只管写 `cargo run`。**

---

## 🧠 quasivision 的"五感"

如果说人靠五感感知世界，那 quasivision 也给自己装了五套感知器：

### 1️⃣ UI 元素检测（主视觉）

把一张截图"拆碎"成组件树——

| 类别 | 说明 |
|------|------|
| **Block** | 容器区块（卡片、列表项、导航栏） |
| **Button** | 可点击按钮 |
| **Text** | 文字标签 |
| **Icon** | 图标（小方形元素） |
| **Image** | 图片区域 |
| **Input** | 输入框 |
| **List Item** | 列表项（带勾选标记） |

输出示例（tree 格式）：

```
Root (1280×800)
├── Block: 导航栏
│   ├── Icon: logo
│   ├── Text: "首页"
│   └── Button: "登录"
├── Block: 搜索区域
│   ├── Input: 搜索框
│   └── Button: "搜索"
└── Block: 结果列表
    ├── Block: 结果项1
    │   ├── Text: "标题文字..."
    │   └── Text: "描述文字..."
    └── Block: 结果项2
```

### 2️⃣ OCR 文字识别（识字能力）

基于 PaddleOCR PP-OCRv5，支持中英文识别。在 UI 结构检测完成后，将识别到的文字合并到对应的 UI 元素中。

### 3️⃣ 物体检测（看物能力）

YOLOE-26n 识别 860 类日常物体，自动构建父子包含关系：

```
Objects — 6 found:
└─ person (87%)
   ├─ cap (39%) → hat (82%)
   │  └─ glasses (65%)
   ├─ glove (21%)
   └─ jacket (20%)
```

### 4️⃣ Icon 含义分类（看图识字）

81 种常见 UI 图标含义识别——设置、搜索、分享、返回、菜单、收藏……不是图像分类，而是**语义理解**层面的图标分类。

### 5️⃣ 颜色检测（辨色能力）

自动提取每个元素的前景色/背景色，输出十六进制值。

---

## ⚡ 5 种输出格式，每种都为特定场景设计

| 格式 | 说明 | 最佳场景 |
|------|------|----------|
| `standard` | 完整 JSON，id/parent/children 全层级 | 传统程序消费 |
| `compact` | 压缩 JSON，短键名，体积小 50% | 存储/传输优化 |
| `ai` | **归一化坐标 0-1000** | 📌 直接喂给 LLM |
| `text` | 纯文本摘要 | 粘贴到 prompt 里 |
| `tree` | 树形嵌套结构 | 人类阅读 + AI 阅读两相宜 |

**重点说说 `ai` 格式**——坐标全部归一化到 0-1000，和 LLM 的 token 空间对齐。这意味着你可以：

1. 先用 quasivision 把截图转成 AI 格式的结构化数据
2. 再把这个结构化文本作为上下文塞给 GPT/Claude
3. 让 LLM 基于**精确的结构化信息**做推理，而不是"看图猜"

**更精准、更省钱、更可控。**

---

## 🎯 实战：quasivision 的黄金场景

### 📌 场景 1：懒得复制文字 → 截个图发给 AI

这是最常见的"偷懒场景"——你在网页上看到一段文字想发给 AI 处理，但文字不能直接复制（比如截图里的代码、付费文档、视频字幕）。

**常规做法**：手动打字 → 太累 | 用 OCR 工具 → 还得装软件  
**quasivision 做法**：`cargo run -- --input 截图.png` → 文字自动提取 → 喂给 LLM

### 📌 场景 2：批量图片转文字

一百张 PDF 截图要提取文字？

```bash
cargo run -- -i ./docs/ --recursive
```

不用一张张上传云端 OCR 服务，不用花一分钱 API 费用。**本地一次跑完，结构化数据直接喂给下游。**

### 📌 场景 3：把 quasivision 做成 MCP Tool

这是我最看好的用法——将 quasivision 封装成一个 **MCP Server** 或 AI Tool，让 LLM 在需要"看图"时自动调用：

```
用户：这个页面的按钮在哪里？
LLM 调用 quasivision → 获取结构化 UI 树 → 告诉你按钮的坐标和文字

用户：这张照片里有什么？
LLM 调用 quasivision → 获取物体检测结果 → 告诉你照片里的人和物
```

**关键优势**：调用 quasivision 不需要网络、不需要 API Key、没有速率限制。LLM 可以"免费地、无限次地"调用本地的视觉能力。

### 📌 场景 4：系统级 AI Tools

因为 quasivision 是一个纯粹的 Rust 二进制，它可以直接集成到操作系统层面：

- **全局快捷键截图** → 自动 OCR 提取文字 → 粘贴到剪贴板
- **窗口内容监控** → 实时提取 UI 结构 → 驱动自动化脚本
- **文件管理器右键菜单** → "一键提取图片中的文字"

这些场景如果依赖 VLM，延迟和成本都不可接受。但 quasivision 可以——**它足够轻、足够快、足够便宜。**

---

## ⚖️ 诚实地说：quasivision 不是 VLM 的替代品

我必须要说清楚这一点：

**VLM（视觉语言模型）能做的事：**
- ✅ 理解图片的"含义"：这张照片的情绪是什么、这个设计的风格是什么
- ✅ 复杂的视觉推理：图表解读、逻辑推导
- ✅ 零样本适应：没见过的场景也能理解

**quasivision 能做的事：**
- ✅ **精确识别**：坐标精确到像素级，每次结果一致
- ✅ **本地运行**：不联网、不传图、不出网
- ✅ **极低成本**：一次编译，无限次使用，边际成本为零
- ✅ **批量处理**：几百张图一键跑完
- ✅ **零环境依赖**：一个二进制文件走天下
- ✅ **可编程性强**：输出结构化数据，易于下游处理

**结论**：VLM 是"博士生看图写作文"，quasivision 是"视力 5.0 的路人指路"。博士生能写诗，但指路这件事——又快又准还便宜的路人，才是日常刚需。

---

## 🏁 写在最后

quasivision 这个项目最让我心动的地方，不是它的技术深度（虽然确实不浅），而是它的**战略定位**。

在 AGI 狂热的当下，所有人都在往上走——更大模型、更强理解、更通用的智能。但 quasivision 选择往下走，去做最基础的"视觉感知层"。

它清楚自己的边界：
- 看不懂深层含义 → 没关系，先把表面信息精准提取
- 比不过 VLM 聪明 → 没关系，比 VLM 快 100 倍、便宜 1000 倍
- 不能理解复杂场景 → 没关系，90% 的场景只需要"看见"

**这是一个工具该有的清醒。**

如果你在做 MCP Tools、AI Agents、UI 自动化、或者只是想让你的 LLM 有双"眼睛"来感知这个世界——试试 quasivision。它不一定最聪明，但它一定是最务实的选择。

---

**🔗 项目地址**：[github.com/WeiChens/quasivision](https://github.com/WeiChens/quasivision)

**🦀 一行命令体验：**
```bash
git clone https://github.com/WeiChens/quasivision.git
cd quasivision
cargo run -- --input demo/ui.jpg
```

**☁️ 国内用户设置镜像加速模型下载：**
```bash
set QUASIVISION_MODELS_URL=https://hf-mirror.com/WeiChens/quasivision-models/resolve/main
cargo run -- --input demo/ui.jpg
```

---

*— 墨客，写博客的天才*

*"代码是给机器读的诗，Rust 是给匠人写的诗。"*
