Vision Review(读图 / OCR / 视觉检查)
用于显式视觉审查工作流:截图 QA、图片内容描述、OCR、水印/Logo 检测、界面布局问题检查,以及给程序化流程输出结构化证据。DSH v0.1.6 的原生多模态附件可直接对话;本技能适合需要脚本、故障转移链或 JSON 证据时使用。
用法
从本技能目录运行:
python3 scripts/vision.py <图片路径...> [--prompt="..."] [--provider=NAME] [--structured] [--doctor]
常用示例:
python3 scripts/vision.py screenshot.png
python3 scripts/vision.py a.png b.png --structured
python3 scripts/vision.py page.png --provider=siliconflow-qwen
python3 scripts/vision.py page.png --prompt="检查标题、按钮和图表是否重叠,并指出位置"
python3 scripts/vision.py --doctor
行为
- 可一次传多张图;每张图会压缩成 JPEG,边长随批内张数自适应:1–2 张 1024px,3–4 张 768px,5 张 512px。
- GLM-4V-Flash 单请求最多 5 张图;超过 5 张自动分批。
- 默认 prompt 检查渲染完整性、文字重叠/溢出/错位、配色层次、水印和明显视觉 bug。
--structured输出结构化 JSON:summary、ocr.full_text、layout.regions、semantics、visual、uncertainty;多批时输出results数组。--provider=NAME固定单个引擎,不做故障转移。可用名包括zhipu-glm、deepseek、siliconflow-qwen、sensenova、gemini和自定义 fallback 名称。--doctor检查 Pillow、已配置 key、候选模型和端点连通性。遇到引擎异常时先运行它。
引擎链
脚本按以下顺序尝试;可选引擎只有检测到对应 key 时才加入:
- 智谱
glm-4v-flash(主引擎,GLM_API_KEY;输出上限 1024)。 - DeepSeek 视觉模型(
DEEPSEEK_API_KEY,付费可选;默认deepseek-v4-flash-vision-exp,可用DEEPSEEK_VISION_MODEL覆盖)。 - SiliconFlow Qwen3-VL(
SILICONFLOW_API_KEY;默认Qwen/Qwen3-VL-8B-Instruct,可用SILICONFLOW_VISION_MODEL覆盖)。 - SenseNova(
SENSENOVA_API_KEY;默认sensenova-6.8-flash-lite,可用SENSENOVA_VISION_MODEL覆盖)。 - Gemini OpenAI-compatible endpoint(
GEMINI_API_KEY;默认gemini-3.6-flash,可用GEMINI_MODEL覆盖)。 VISION_FALLBACKS中声明的任意 OpenAI 兼容多模态引擎。
VISION_FALLBACKS 是 JSON 数组,每项包含 name、baseUrl、model,可选 apiKeyEnv、maxTokens、jsonObject。
密钥来源
按顺序读取:
- 进程环境变量;
~/.dsh/secrets/media-tools.env;~/.codex/secrets/media-tools.env(历史兼容);~/.dsh/.credentials.yaml中的顶层 key 或refs子映射。
Secrets 文件每行一个 KEY=value,建议权限 600。永远不要把 key 提交到仓库、写入技能文件或粘贴到公开产物中。
网络和隐私
- 图片只发送给实际调用的服务商 API;本仓库和插件本身不提供中转端点。
- Gemini 可通过
GEMINI_PROXY或HTTPS_PROXY走代理;其他引擎仍可直连。 - Google AI Studio 免费档的数据条款可能允许用请求改进产品;内部文档、证件、客户资料等敏感图片应优先使用组织批准的国内引擎。
- 不要在公开仓库或摘要中复现图片里的个人信息、证件号、电话、客户数据或内部材料。
依赖
Python 3.9+。图片压缩使用 Pillow;缺失时脚本会提示安装:
python3 -m pip install Pillow