前言¶
在 DSH 这类插件化运行环境里,一个常见的问题是:文本模型本身不接收图片,但开发者经常需要把截图、票据、界面文字交给模型处理。常见做法是把模型配置成多模态,或者直接把图片字节发给远端模型 API。本文介绍的 maxwell-feng/dsh-windows-ocr 是另一个做法:在 Windows 本机先用 Windows.Media.Ocr 识别图片,再把识别出的文本发送给模型。下面介绍它的功能、安装方式和注意事项。
这是什么¶
maxwell-feng/dsh-windows-ocr 是 DeepSeek Harness (dsh) 插件,由 maxwell-feng 维护,采用 MIT 许可证。
它的作用是:让 text-only 模型接受附加图片;插件先用 Windows 内置 OCR 引擎 Windows.Media.Ocr 在本地识别图片,再把识别文本发给模型。对于真正的视觉模型,是否透传原始图片字节是可选行为。
核心功能¶
下面这些是已核实的插件能力:
- 让
text-only模型接受附加图片。 - 使用
Windows.Media.Ocr在本地识别图片。 - 默认只向模型 API 发送识别出的文本,不发送原始图片字节。
- 支持可选
passthrough: true,让真正的视觉模型接收原始图片字节。 - 不需要在
settings.yaml中把模型改成input: [text, image]。 - 支持
dsh中任意provider/model;默认在请求离开本机前对附加图片做 OCR。 fail-closed:插件未加载时,模型保持text-only并拒绝图片附件。- 缺失附件会被替换为 refusal text block,而不是保留 raw image。
- 提供
language、passthrough、ocrScript、timeoutMs、maxCacheEntries配置项。 - 从 npm 安装的版本预构建并带 Sigstore provenance,无需源码构建或
allowBuilds。
安装与启用¶
安装前先确认环境满足:Windows 10/11,Windows PowerShell 5.1+,目标语言的 Windows OCR 语言包;中文需要可用的 Chinese language pack;已有 dsh 和 profile,package.json 声明 Node.js >= 20。README 说明测试版本为 dsh 0.1.0-rc.8。
从 npm 安装¶
先执行下面命令,将插件安装到 web profile:
dsh plugin --profile web add @maxwell-feng/dsh-windows-ocr
如果使用的是其他 profile,把 web 替换为 tui 等 profile 名。
npm 安装版本会自行注册 windows-ocr loader entry,不要再手动添加同一个 entry id。
永久安装¶
如果是源码或手动文件方式,先准备插件文件路径。下面示例追加到 profile 的 cordis.patch.yml:
- insert:
- id: windows-ocr
name: 'file:///C:/absolute/path/to/windows-ocr/lib/index.js'
config:
language: ''
passthrough: false
Windows 文件路径必须使用 file:// URL;裸 C:/... 路径会被 loader 拒绝。
配置 passthrough 时,false 表示默认 OCR 所有图片;true 才让视觉模型接收未处理图片。
修改后重启 dsh web。
临时安装¶
临时安装可以先准备同样的 rows 到 overlay 文件,再执行:
dsh --profile web --patch C:/path/to/overlay.yml
这种方式不会修改 profile。
覆盖配置¶
如果 windows-ocr row 已存在,用 id-targeted row 覆盖配置,而不是再 insert 一个同名 row。示例:
- id: windows-ocr
config:
language: zh-Hans
典型用法¶
下面从安装到验证按顺序做。
1、安装完成后,启动 dsh web,在启动日志中查看 windows-ocr。
2、给一个文本模型会话附加图片。
3、观察模型是否用识别出的文本回答。
模型看到图片时,每个 image block 会被替换为类似下面的文本块:
<image_ocr>
...
</image_ocr>
如果启动 dsh web 时出现 EADDRINUSE,先执行下面命令找到占用 3080 端口的旧实例并停止它:
netstat -ano | findstr :3080
适用场景与注意¶
适合的场景:
- 在 Windows 10/11 上运行
dsh,并希望文本模型能处理本地图片中的文字。 - 希望默认不把原始图片字节发送到模型 API,而只发送本地 OCR 后的文本。
- 需要在
dsh中切换不同provider/model,但不想逐个修改模型能力配置。
注意:
- 不要同时使用 npm bundle 和手动 insert 注册同一个
windows-ocrentry id;否则dsh启动会失败,报错为duplicate loader entry id: windows-ocr。 passthrough: false是默认行为,OCR 所有图片;只有显式设置passthrough: true,真正的视觉模型才接收未处理图片。- 插件未加载时是
fail-closed:模型保持text-only并拒绝图片附件,缺失附件会被替换为 refusal text block,而不是保留 raw image。 - 插件以当前
dsh进程权限运行;安装前应检查源码、依赖和MIT许可证。 - 中文 OCR 需要可用的 Chinese language pack;其他语言也需要对应的 Windows OCR 可用语言包。
结尾¶
maxwell-feng/dsh-windows-ocr 的价值在于:把“文本模型处理图片”这件事落成本地 OCR 与文本注入,默认只向模型 API 发送识别文本。下面链接可用于查看项目:
- 插件目录页:
https://www.skillhub.cn/plugins/maxwell-feng/dsh-windows-ocr - GitHub 仓库:
https://github.com/maxwell-feng/dsh-windows-ocr