随着协同办公与智能辅助编辑的需求增长,现代办公套件中的 AI 能力正在不断拓展。除了常规文本生成和语法检查等基础功能之外,开发者和高级用户希望让 AI 在更具体、定制化的场景中发挥作用,比如根据图像自动生成描述文字。办公文档平台ONLYOFFICE在其 AI 插件体系中提供了灵活的扩展机制,允许开发者定义自有功能并纳入其 AI 智能体处理流程。

AI描述图像的最终呈现
AI 描述图像的基本目标十分直观:选定文档中的一张图像,输入简要指令,然后得到由 AI 生成、写入到合适位置的文字。这个文字可以是图像标题、说明段落,也可以是面向辅助访问的替代文本。为了避免模型对用户意图做出模糊假设,这个功能依赖于明确的用户提示,从而确保生成结果与用户需求紧密对齐。

为了让 ONLYOFFICE 的 AI 引擎能够识别并调度该功能,需要将其提交为一个 RegisteredFunction。这个结构包含函数名称、参数定义和实际调用示例,是函数在插件体系中注册的基本格式。
函数定义与结构
函数被设定了一个输入参数 prompt(字符串类型),用于接收用户的指令,例如「为这张图生成一句简短说明」。该定义同样提供了多个典型调用示例,便于 AI 引擎和终端用户参考操作。
在代码层面,describeImage 定义如下:
let func = new RegisteredFunction({
name: "describeImage",
description:
"Allows users to select an image and generate a meaningful title, description, caption, or alt text for it using AI.",
parameters: {
type: "object",
properties: {
prompt: {
type: "string",
description:
"instruction for the AI (e.g., 'Add a short title for this chart.')",
},
},
required: ["prompt"],
},
examples: [
{
prompt: "Add a short title for this chart.",
arguments: { prompt: "Add a short title for this chart." },
},
{
prompt: "Write me a 1-2 sentence description of this photo.",
arguments: {
prompt: "Write me a 1-2 sentence description of this photo.",
},
},
{
prompt: "Generate a descriptive caption for this organizational chart.",
arguments: {
prompt:
"Generate a descriptive caption for this organizational chart.",
},
},
{
prompt: "Provide accessibility-friendly alt text for this infographic.",
arguments: {
prompt:
"Provide accessibility-friendly alt text for this infographic.",
},
},
],
});
图像提取逻辑
要生成针对图像的文本,第一步是获取用户选中的图像数据。在 ONLYOFFICE 中,文档中的图像被称为 “drawings”。通过插件 API 调用 GetImageDataFromSelection 方法可以获得当前聚焦图像的 Base64 编码和尺寸信息:
let imageData = await new Promise((resolve) => {
window.Asc.plugin.executeMethod(
"GetImageDataFromSelection",
[],
function (result) {
resolve(result);
}
);
});
其中返回的数据里包括如 "src":"data:image/png;base64,…" 格式的 Base64 字符串,这部分信息随后会作为 AI 请求的一部分发送出去。在处理过程中,还需要过滤掉占位符图像。例如 ONLYOFFICE 使用一个极小的白色矩形作为空白占位符,对这种情况要做特殊比对后跳过,否则会导致生成无意义的结果。
构建 AI 输入
一旦图像被成功提取,下一步是将图像数据和用户提示组合成 AI 引擎可理解的请求结构:
let messages = [
{
role: "user",
content: [
{ type: "text", text: argPrompt },
{
type: "image_url",
image_url: { url: imageData.src, detail: "high" },
},
],
},
];
在这段结构中,text提供了用户指令,例如“为该图生成解释性标题”;image_url则包含图像本身。通过detail:"high"表示希望模型尽可能以高分辨率分析图像。AI 模型通常能够处理 Base64 编码的数据,因此直接使用从文档中提取的字符串就足够,不需要先上传至服务器再传递 URL,这样的设计也减少了数据泄露或额外传输的风险。
发送请求与实时收集
构建好请求结构后,通过插件引擎的 chatRequest 方法发送消息,并实时收集 AI 输出:
let requestEngine = AI.Request.create(AI.ActionType.Chat);
await requestEngine.chatRequest(messages, false, async function (data) {
…
});
将输出写回到文档
AI 返回的文字最终要写入到文档中,这里会根据用户是否选中图像分为两种情况:
- 如果选中了图像,则在图像下方插入一段文字;
- 如果未选中,则在当前光标位置后的段落位置插入。
示例代码如下:
async function insertMessage(message) {
console.log("describeImage: insertMessage called", message);
Asc.scope._message = String(message || "");
await Asc.Editor.callCommand(function () {
const msg = Asc.scope._message || "";
const doc = Api.GetDocument();
const selected =
(doc.GetSelectedDrawings && doc.GetSelectedDrawings()) || [];
if (selected.length > 0) {
for (let i = 0; i < selected.length; i++) {
const drawing = selected[i];
const para = Api.CreateParagraph();
para.AddText(msg);
drawing.InsertParagraph(para, "after", true);
}
} else {
const para = Api.CreateParagraph();
para.AddText(msg);
let range = doc.GetCurrentParagraph();
range.InsertParagraph(para, "after", true);
}
Asc.scope._message = "";
}, true);
AI图像描述与金融行业
在金融行业的数据报告与分析流程中,这类利用 AI 自动识别图表并生成描述文字的能力具有显著价值。金融文档中通常包含大量图表,如价格趋势图、收益率曲线、资产配置饼图及季度指标柱状图等,人工手动编写与审校这些图表说明既耗时又易出现遗漏。
借助 ONLYOFFICE 的图像识别与文本生成机制,用户可以让系统根据图像内容自动生成清晰、可读的解释文字,进而加快季报、分析报告或策略建议书的撰写效率。对于投资研究,通过自动化生成图表标题与注释,不仅减轻了重复劳动,还能将注意力集中在深层次数据洞察上。
在合规审查场景中,图像识别功能还可辅助梳理图表关联的风险提示或合规要点,保持报告在不同时间段或业务单元之间表述的一致性,提升内容的沟通效果。

通过 ONLYOFFICE 提供的自定义 AI 功能,我们能够高效地将文档中的图像自动转化为精准的文字说明,从定义函数元数据、提取图像内容、构建提示结构,到校验模型支持、发送请求与写回结果,每一步都围绕提升办公编辑体验展开。特别是在财经报告、数据分析、信息无障碍支持等实际场景下,该功能不仅节省了传统手动编辑的时间,还增强了图表解释的清晰度和一致性。结合金融行业对图表说明的专业要求,这一能力能有效辅助风险分析、投资策略撰写和内部汇报等关键业务流程。
023-68661681
返回
发表评论