dsh-crop-zoom:在模型读图前把截图小字放大

前言

在 DeepSeek Harness(dsh)里让模型读截图时,常见路径是整图送入视觉能力。大图往往会在入模前被缩小,游戏里 10–11px 的物品名、状态栏数字在缩小后笔画会糊在一起,模型反复读同一张图也换不回已经丢失的像素细节。crop-zoom 走另一条路:在模型阅读之前,本地裁剪指定区域并按整数倍放大,再把新图交给 read_image,用几何预处理换可读性,而不是依赖 OCR 或二次整图推理。

这是什么

dsh-crop-zoom(GitHub:07210905/crop-zoom)是社区维护的 dsh 插件,同时提供同名独立 CLI。它在 Harness 中注册 crop_zoom 工具;处理全程在本地完成,不联网、不调用模型、也不内置 OCR。依赖只有 sharp(libvips),且懒加载,避免原生模块缺失时拖垮 Harness 启动。运行环境要求 Node ≥ 22,许可证 MIT。插件在 SkillHub 目录中归类为「模型推理」。

核心功能

下面介绍插件实际提供的能力,均来自官方 README。

crop_zoom 工具:对本地图片按源图像素坐标裁剪 1–8 个矩形区域,用所选插值核做整数倍放大(单次最高 16×),输出 PNG 并返回路径;模型侧应再用 read_image 读结果。工具返回的文本只描述几何与写出路径,刻意不作为「答案」。

自动倍率:可省略 scale,由 target(默认 1600)推算放大倍数,使区域长边达到目标像素,且不超过 16×。

多区域拼 sheet:默认把多个区域自上而下叠成一张带标注的 PNG,一次跟进阅读即可;也可关闭 sheet,每个区域单独文件。

插值模式:bicubic(默认,保字形轮廓)、nearest(整像素复制,利于区分等宽字形如 0 与 D)、lanczos、mitchell。README 建议两种模式互补查看仍含糊的字形。

预览坐标校正:若坐标是在缩小预览上量的,可传 previewWidth,自动映射回源图尺寸。

CLI:与插件共用同一套引擎,适合脚本或调试。

安装与启用

作为 dsh 插件安装时,使用资料中的命令(不要用 github:owner/repo 自行拼接):

dsh plugin --profile <profile> add dsh-crop-zoom     # from a registry
dsh plugin --profile <profile> add ./dsh-crop-zoom   # from a local checkout

安装后重启应用;crop_zoom 会随请求提供给模型。

独立 CLI:

npm install -g dsh-crop-zoom
crop-zoom -i shot.png -r 1178,588,64,24 -s 16 -o label.png

插件以当前 dsh 进程权限访问本地文件。安装前请自行查看仓库源码与 MIT 许可证,确认符合你的环境策略。

典型用法

单区域、自动放大到长边约 1600px:

{ "path": "C:\\shots\\raid.png", "regions": [{ "x": 1178, "y": 588, "width": 64, "height": 24 }] }

两个区域拼成一张 sheet,提高目标长边:

{ "path": "C:\\shots\\raid.png",
  "regions": [{ "x": 80, "y": 430, "width": 540, "height": 300, "label": "rank board" },
              { "x": 875, "y": 155, "width": 450, "height": 660, "label": "gear" }],
  "target": 2400 }

固定 16× 且用 nearest 分离易混字形:

{ "path": "C:\\shots\\raid.png", "regions": [{ "x": 1444, "y": 373, "width": 96, "height": 42 }],
  "scale": 16, "mode": "nearest" }

工具写出文件后,典型返回会说明内核、各区域源坐标与放大倍数,并提示用 read_image 读 sheet 路径,不要仅凭几何摘要作答。

主要参数

名称 类型 默认 含义
path string — 源图绝对路径,必填
regions array — 1–8 个区域,sheet 顺序;每项 {x, y, width, height, label?},单位为源图像素
scale integer — 整数倍率 1–16;省略时由 target 推算
target integer 1600 无 scale 时长边目标像素,倍率上限 16×
mode enum bicubic bicubic | nearest | lanczos | mitchell
sheet boolean true 是否叠成一张标注 PNG
outPath string 临时目录 输出路径,须以 .png 结尾
previewWidth integer — 预览图宽度,用于坐标换算

CLI 支持 -i、重复 -r、-s、-t、-m、-o、--preview-width、--no-sheet、--json 等,与上表语义一致。

工作原理与限制

经过上面的步骤,引擎大致做三件事:按 EXIF 旋转后的显示尺寸解码源图一次;对每个区域 extract 再按整数因子 resize,减少重采样对细笔画的干扰;可选合成带几何说明的 sheet。

需要注意的限制:

  • 仅本地文件,path 不支持远程 URL。
  • 输出恒为 PNG;单次最多 8 个区域、单区域最多 16×。
  • Sheet 标注为 ASCII;非拉丁说明宜放在 region 的 label 字段,而非指望画在图上(依赖 fontconfig / librsvg)。

结尾

若你的智能体经常因截图降采样而误读小字,crop-zoom 把「先裁再放大、再读图」固定成 Harness 工具,成本通常低于反复整图推理。社区目录页:crop-zoom on SkillHub;源码与完整说明:07210905/crop-zoom。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜