# 使用说明文档 (Usage Guide) [English](USAGE.md) | 简体中文 附加任意图片到**纯文本**模型会话并发送——插件在本地经 `Windows.Media.Ocr` 识别,并在请求构建前将 `image` 块替换为文本块。无需改动任何代码或模型配置; dsh 中所有 provider/模型均受益。 --- ## 1. 基本用法 1. 打开一个纯文本模型会话(如 DeepSeek-V3 / DeepSeek-R1)。 2. 附加一张带文字的图片,发送消息询问图片内容。 3. 模型引用识别出的文字作答。图片字节不会离开本机(除非你按第 3 节主动 开启视觉透传)。 --- ## 2. OCR 参数 以下 `windows-ocr` 配置项控制识别行为。默认值与 `cordis.patch.yml` 以及 `src/index.ts` 中经加载器校验的 `Config` schema 一致: | 键 | 默认 | 含义 | |---|---|---| | `language` | `""` | Windows OCR 的 BCP-47 语言标签,如 `zh-Hans`、`en-US`;空 = 用户配置文件语言 | | `passthrough` | `false` | `false`(默认):所有图片一律走 OCR;`true`:真视觉模型图片原样透传(见第 3 节) | | `ocrScript` | 自带 `lib/ocr.ps1` | PowerShell OCR 脚本的绝对路径覆盖 | | `timeoutMs` | `60000` | 单张图片 OCR 超时(毫秒) | | `maxCacheEntries` | `200` | 单次运行 OCR 缓存上限(按附件 id) | 覆盖示例(`~/.dsh/profiles/web/cordis.patch.yml`)——用**按 id 覆盖**的行 (不是 `insert:`)替换 `windows-ocr` 这一行的 config: ```yaml - id: windows-ocr config: language: zh-Hans timeoutMs: 30000 ``` 非法取值会带着可定位的错误启动失败,而不是被静默忽略。完整说明见 [配置说明文档](CONFIG.zh.md)。 --- ## 3. 模型看到什么 每个图片块变成一个文本块(**不转发本地文件名**): ``` …识别出的文字行… ``` - 识别结果按附件 id 在 dsh 进程生命周期内缓存(受 `maxCacheEntries` 限制), 重复轮次不会重复 OCR。 - 空识别结果降级为 `(OCR: no text recognized)`;引擎报错降级为 `(OCR: failed to recognize this image)`;缺失 attachment 引用的图片块降级 为拒绝文本——绝不会给适配器留下原始 `image` 块(fail-closed)。 ### 透传矩阵 | `passthrough` | 纯文本模型 | 真视觉模型 | |---|---|---| | `false`(默认) | OCR 文字 | OCR 文字 | | `true` | OCR 文字 | 原始图片字节 | --- ## 4. 仅 Windows 说明 - 仅支持 Windows 10/11。自带的 `lib/ocr.ps1` 通过 Windows PowerShell 5.1 驱动系统内置 `Windows.Media.Ocr` WinRT API——无需安装任何东西,也没有 Linux/macOS 路径。 - OCR 语言取决于系统安装的语言包(设置 → 时间和语言 → 语言;该语言需要带 OCR 组件)。配置的语言缺失时退出码为 2;系统完全没有可用 OCR 语言时退出 码为 3——两种情况都降级为占位文本,绝不会上传原图。 - GIF:Windows OCR 只识别第一帧。 - 每次 OCR 都会把输入图片和输出文本写入系统临时目录下**新建的临时目录** (`windows-ocr-*`),成功、报错、超时都会自动删除。插件启动时还会清扫 上次进程崩溃遗留的孤儿目录。 --- ## 5. 示例 OCR 引擎冒烟测试(不需要 dsh): ```powershell # 1x1 PNG——验证 WinRT 加载、语言包可用性、识别链路 powershell.exe -NoProfile -ExecutionPolicy Bypass -File lib/ocr.ps1 -ImagePath test.png -OutFile out.txt Get-Content out.txt ``` 对话示例——用户附加一张收据照片并发送: ``` What is the total on this receipt? ``` 模型收到的不是照片,而是 `` 标签包裹的识别文字行,并据此答出 总金额。 中文识别——按第 2 节设置 `language: zh-Hans`,附加一张中文截图,模型即引用 识别出的中文作答。需要系统安装带 OCR 组件的中文语言包。