Install
openclaw skills install vision-ocr用于识别图片和 PDF 文档,调用你已配置的 OCR 与多模态服务输出 Markdown 结果,并可按需发送到飞书。适合截图、扫描件、表格、票据和技术文档。
openclaw skills install vision-ocrvision-ocr 是一个用于 OpenClaw 的文档识别技能,支持图片和 PDF 输入,输出结构化 Markdown 结果,并在机器人会话中优先发送到当前飞书会话。
识别图片 /path/to/image.jpg
识别 PDF /path/to/file.pdf --pdf-option=ocr_full
OCR 这个截图
目标: 在飞书/集成场景下实现「发送图片/PDF → 自动识别 → 按需发送结果到当前会话」
| 场景 | 调用方式 | 能否自动发送 |
|---|---|---|
| ✅ 飞书集成 | 直接在主会话调用 vision-ocr.run(context) 并显式开启发送 | ✅ 可以 |
| ❌ 子会话 | 通过子会话调用 vision-ocr.run(context) | ❌ 无法发送 |
| ❌ 命令行 | node index.js --image ... | ❌ 无法发送 |
主会话(飞书集成)
↓
子会话(隔离环境)
↓
vision-ocr 尝试获取会话上下文
↓
❌ 当前上下文未传入 session.chatId / session.openId
↓
❌ 无法确定发送目标,跳过自动发送
解决方案: 直接在主会话中调用 vision-ocr.run(context),确保能获取到 chatId 和 openId 或 senderId。
// ✅ 正确:在主会话中直接调用
const visionOcr = require('/home/node/.openclaw/workspace/skills/vision-ocr');
await visionOcr.run({
session: {
chatId: 'chat_xxx',
openId: 'ou_xxx',
isGroup: false
},
message: {
text: '识别图片 /path/to/image.jpg'
},
replyText: async (msg) => {
// 显式开启发送后,可发送到当前飞书会话
console.log(msg);
}
});
// ❌ 错误:通过子会话调用会丢失当前会话上下文
在使用 vision-ocr 实现自动发送前,确认:
run(context) 传递会话上下文(不是命令行)session.chatId 和 session.openId / session.senderId推荐在技能目录 config.json 或当前进程环境变量中提供以下内容:
{
"ocr": {
"imageocr": {
"token": "你的 ImageOCR Token",
"endpoint": "你的 ImageOCR 端点"
},
"multimodal": {
"baseUrl": "你的多模态 API 地址",
"token": "你的多模态 Token",
"model": "你的模型名称"
}
},
"autoSendToFeishu": false
}
如果技能运行在 OpenClaw 会话中,并且你显式开启了飞书发送,同时运行时提供了当前群聊或私聊上下文,则发送飞书文件时会优先发到当前会话。若要发送给其他对象,可直接在对话中明确指定,例如:发给 open_id:ou_xxx 或 发给 chat:oc_xxx。
CLI 模式下,只有显式开启 --resolve-openclaw-session 或设置 VISION_RESOLVE_OPENCLAW_SESSION=true 时,技能才会尝试从 OPENCLAW_CHAT_ID、OPENCLAW_SENDER_ID、OPENCLAW_OPEN_ID 等环境变量,以及 ~/.openclaw/runtime.json 中恢复当前会话信息。机器人模式默认只信任 context.session 或消息中显式指定的接收者。
node index.js --update-config 只会把当前 shell 中的 VISION_* 环境变量写入技能目录 config.json,不会读取或改写 OpenClaw 全局配置。
如果 OpenClaw 需要发送到当前会话,必须调用导出的机器人入口 run(context) 并显式开启发送,而不是只执行命令行。例如:
const visionOcr = require('/home/node/.openclaw/workspace/skills/vision-ocr');
await visionOcr.run({
session: {
chatId: 'chat_xxx',
openId: 'ou_xxx',
isGroup: false
},
message: {
text: '识别图片 /path/to/image.jpg'
},
replyText: async (msg) => {
console.log(msg);
}
});
如果仅执行 node index.js --image ...,识别会成功,但不会有当前会话信息,因此不会自动发送到当前飞书会话。
node index.js --image /path/to/image.jpg --confirm=true
node index.js --image /path/to/file.pdf --pdf-option=ocr_full --confirm=true
node index.js --image /path/to/image.jpg --confirm=true --no-send-to-feishu
node index.js --image /path/to/image.jpg --confirm=true --send-to-feishu --resolve-openclaw-session
当前版本:1.1.2
maxBuffer 与 PYTHON_PATH 支持。