Install
openclaw skills install feishu-doc-extended飞书文档扩展工具,提供图片下载和 OCR 识别功能。需要配合内置 feishu 插件使用。
openclaw skills install feishu-doc-extended飞书文档扩展工具,提供图片下载和 OCR 识别功能。
| 功能 | 说明 |
|---|---|
| get_image | 获取飞书文档中图片的下载 URL |
| image_ocr | 下载图片并进行 OCR 文字识别(需要 tesseract) |
# 安装 tesseract
brew install tesseract
# 安装中文语言包
brew install tesseract-lang
本技能需要修改 OpenClaw 内置的 feishu 插件:
文件路径: /usr/local/lib/node_modules/openclaw/extensions/feishu/src/doc-schema.ts
在 FeishuDocSchema 的 Union 类型末尾添加:
// Image download
Type.Object({
action: Type.Literal("get_image"),
image_token: Type.String({ description: "Image token (from block image.token)" }),
}),
文件路径: /usr/local/lib/node_modules/openclaw/extensions/feishu/src/docx.ts
uploadFileBlock 函数后)添加:async function getImage(client: Lark.Client, imageToken: string) {
const domain = client.domain ?? "https://open.feishu.cn";
const token = await client.tokenManager.getTenantAccessToken();
const res = await client.httpInstance.get<{ code?: number; data?: { image_url?: string } }>(
`${domain}/open-apis/image/v4/get`,
{
params: { image_token: imageToken },
headers: { Authorization: `Bearer ${token}` },
},
);
if (res.data?.code !== 0 && res.data?.code !== undefined) {
throw new Error(`Failed to get image: ${res.data}`);
}
return {
image_url: res.data?.data?.image_url,
image_token: imageToken,
};
}
case "get_image":
return json(await getImage(client, p.image_token));
openclaw gateway restart
使用 feishu_doc 工具的 list_blocks 获取文档中的图片 block:
{
"action": "list_blocks",
"doc_token": "文档Token"
}
从返回结果中获取图片的 token(在 block.image.token 中)。
{
"action": "get_image",
"image_token": "图片Token"
}
返回:
{
"image_url": "https://xxx...",
"image_token": "图片Token"
}
获取图片 URL 后,可以用浏览器打开并截图,然后用 tesseract 识别:
tesseract /path/to/screenshot.jpg - -l chi_sim
1. feishu_doc list_blocks → 获取图片 block 和 token
2. feishu_doc get_image → 获取图片下载 URL
3. 浏览器访问 URL → 截图
4. tesseract OCR → 识别文字
get_image 返回的 URL 是飞书临时 URL,有时效性get_imagebrew install tesseractbrew install tesseract-lang