余姚厂家高端网站设计,深圳设计公司办公室,seo0577,东莞 网站 建设 物流MaxKB开源企业级智能体平台的高级编排中提供了文档内容提取组件#xff0c;其主要输出的是Markerdown格式的文本内容。然而#xff0c;当文档内嵌架构图、流程图、图表等图片信息时#xff0c;这些视觉内容就无法被有效提取#xff0c;导致后续大语言模型#xff08;LLM其主要输出的是Markerdown格式的文本内容。然而当文档内嵌架构图、流程图、图表等图片信息时这些视觉内容就无法被有效提取导致后续大语言模型LLM在回答时可能会遗漏关键信息影响问答的准确性与完整性。本文为您介绍MaxKB图文混合文档分析工作流的搭建方案。该方案旨在利用MaxKB的高级编排功能通过自定义函数和图片理解节点构建一个能够将文档文本内容和图片视觉解析结果进行融合分析的工作流实现对图文混合文档的深度理解。一、 实现方案图文混合文档分析工作流的核心是实现文本内容中的图片提取和循环处理。整体流程说明如下:1.文档提取通过MaxKB的文档内容提取节点将用户上传的文档内容提取为Markdown格式文本并保存为会话变量。2.动态图片处理函数编写Python函数接收Markdown文本并执行以下逻辑① 从Markdown格式文本中解析出图片链接或标识② 将解析出的图片信息转换为MaxKB图片理解节点和图片位置提取节点所需的JSON数组结构。3.将数组内容倒序输出为避免正序插入导致图片混乱将数组倒序输出为后续在Markdown文本中插入图片做好准备。4.循环与图片解析及插入文本如果函数识别到图片则进入循环结构依次执行以下操作① 调用图片理解节点返回图片内容的文本描述② 调用提取图片位置信息节点返回图片在Markdown文本中的位置信息③ 编写Python函数将Markdown文本会话变量、图片理解结果和提取图片位置信息结果传入实现图片插入文本原位置。5.LLM分析调用大语言模型LLM分析节点以融合后的图文上下文作为输入执行用户定义的分析或其他任务。▲图1 MaxKB图文混合文档分析工作流流程图二、高级编排和组件本工作流由多个编排节点与自定义函数组成以实现从文档解析到图文融合的完整链路。各节点的输入、输出与功能说明如下表所示表1 MaxKB图文混合文档分析工作流节点说明▲图2 MaxKB图文混合文档分析工作流三、 核心函数工具为实现工作流中的关键步骤需要编写以下两个核心Python函数分别用于提取图片信息和将图片描述插回原文。1.图片提取函数在文档内容提取节点后需调用函数从Markdown文本中解析出所有图片信息。具体代码如下#codingutf-8import re import time from typing import List,Dict,Any defextract_images_from_markdown(markdown_text:str)-List[Dict[str,Any]]: 从Markdown格式的文本中提取所有图片引用并返回格式化的图片信息数组包括位置信息。 参数:markdown_text(str):Markdown格式的文本内容 返回:List[Dict[str,Any]]:包含图片信息的字典数组每个字典包含以下字段-name:文件名-percentage:上传百分比默认0-status:状态默认ready-size:文件大小默认0-raw:包含uid的字典-uid:唯一标识符-url:图片URL-file_id:文件ID如果URL包含./oss/file/-start:图片在文本中的起始位置新增-end:图片在文本中的结束位置新增 # 使用正则表达式匹配Markdown中的图片引用格式 image_patternr!\[(.*?)\]\(([^)])\)# 存储提取的图片信息 images_info[]# 使用finditer获取所有匹配项及其位置formatch in re.finditer(image_pattern,markdown_text):alt_textmatch.group(1)# 图片alt文本 urlmatch.group(2)# 图片URL startmatch.start()# 匹配起始位置 endmatch.end()# 匹配结束位置 # 处理文件名提取逻辑if/in url:# 从URL路径中提取文件名 filenameurl.split(/)[-1]# 如果URL中的文件名没有扩展名尝试从alt_text中获取if.not in filename:ifalt_text and.in alt_text:# 提取alt_text中的文件名部分 alt_filename_candidatesalt_text.split( )forcandidate in alt_filename_candidates:if.in candidate:filenamecandidatebreak# 如果还是没有扩展名使用默认扩展名if.not in filename:filenamef{filename}.pngelse:# 如果URL不包含路径使用默认命名ifalt_text and.in alt_text:alt_filename_candidatesalt_text.split( )filenameNoneforcandidate in alt_filename_candidates:if.in candidate:filenamecandidatebreakiffilename is None:filenamefimage_{start}.png# 使用位置确保唯一性else:filenamefimage_{start}.png# 从URL中提取file_id如果URL格式为./oss/file/xxx file_idif./oss/file/in url:file_idurl.split(./oss/file/)[-1]# 生成唯一标识符结合时间戳和位置避免冲突 uidint(time.time()*1000)start # 构建图片信息字典 image_info{name:filename,percentage:0,status:ready,size:0,raw:{uid:uid},uid:uid,url:url,file_id:file_id,start:start,# 新增在文本中的起始位置end:end # 新增在文本中的结束位置}# 验证所有必要字段都存在 required_fields[name,percentage,status,size,raw,uid,url,file_id,start,end]forfield in required_fields:iffield not in image_info:print(f警告: 图片信息缺少字段 {field})images_info.append(image_info)returnimages_info▲图3 图片提取函数配置参考在图片提取后调用图片列表倒序函数将数组进行倒序重排方便后续插入原文定位使用。具体代码如下import json defreverse_json_list(data_list): 将JSON列表倒序输出 # 使用切片反转列表返回新列表 reversed_listdata_list[::-1]returnreversed_list2.将图片描述插入Markdown文本中在循环处理完每张图片的描述与位置后需要调用函数将描述文本插入Markdown原文的对应位置。具体代码如下from typing import List,Dict,Any definsert_single_image_description(markdown_text:str,image_description:str,image_position:List[Dict[str,Any]])-str: 在Markdown文本的指定位置插入图片描述内容 参数:markdown_text:Markdown文本内容 image_description:图片描述文本 image_position:图片位置信息列表包含start、end、uid等键的字典列表 返回:插入图片描述后的新Markdown文本 # 获取第一个位置字典 position_dictimage_position[0]ifnotisinstance(position_dict,dict):raiseTypeError(f列表中的元素应为字典类型但得到 {type(position_dict).__name__})# 获取位置信息 startposition_dict.get(start)endposition_dict.get(end)# 获取当前位置的原始文本片段 original_snippetmarkdown_text[start:end]# 构建要插入的内容 insertionf\n\n{image_description}\n# 插入图片描述到指定位置 resultmarkdown_text[:end]insertionmarkdown_text[end:]returnresult▲图4 图片描述插入原文函数配置参考四、 效果展示和应用场景在MaxKB图文混合文档分析工作流搭建完成后我们来看下实现的具体效果。我们以包含多张分散图片的MaxKB产品介绍文档为例。例如此文档中的“MaxKB的设计理念和RAG工作原理”完全采用图片进行表述无文字内容说明▲图5 包含图片的示例文档在MaxKB图文混合文档分析小助手的对话页面上传此文档并提问“请理解文档内容”大模型能够基于图文理解够给出准确回答。▲图6 图文混合文档分析小助手的问答效果从执行过程可见图文混合文档分析工作流利用图片理解节点对DOCX文档中的图片进行理解并输出文字描述并且将图片插入了文档原位置。▲图7 图文混合文档分析小助手的执行过程除此之外图文混合文档分析工作流在MaxKB平台同样可以满足以下需要结合视觉和文字信息的复杂文档处理场景表2 图文混合文档分析应用场景五、总结本文为您介绍了MaxKB图文混合文档分析工作流通过“文本提取→图片提取→图片循环识别→多模态融合分析”的完整链路实现对复杂图文混合文档的自动化、智能化处理过程。该方案不仅可以有效提升文档信息提取的完整性与准确性更为大语言模型提供了强大的图文混合文档理解能力。在实际的应用中企业可以直接将该工作流应用在工程文档分析、财务数据处理、学术资料检索、操作手册指导等场景可以有效增强MaxKB平台的智能问答与内容分析的覆盖度与准确性降低多模态文档处理难度帮助企业加速构建具备全面语义理解能力的AI应用。