当前位置: 首页 > news >正文

Word文档标题关联图片提取工具实现原理

一、核心功能概述

该代码实现从Word文档中精准提取指定标题章节下的所有图片,主要服务于以下场景:

  • 自动抓取需求文档"界面原型"章节的UI设计图
  • 提取测试案例文档中的流程图/架构图
  • 批量导出合规文档的签章图片
二、代码执行流程图解
加载Word文档
解析目标标题
遍历段落匹配标题
提取关联XML数据
递归搜索图片标识
解析图片二进制数据
解码保存图片文件
三、关键代码模块详解
  1. XML命名空间配置
namespace = {
    'w': 'http://schemas.openxmlformats.org/wordprocessingml/2006/main',
    'r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',
    'v': "urn:schemas-microsoft-com:vml",
    'wp': "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing",
    'a': "http://schemas.openxmlformats.org/drawingml/2006/main",
    'pic': "http://schemas.openxmlformats.org/drawingml/2006/picture"
}
  • 作用:定义Word文档底层XML结构的命名空间映射
  • 技术细节:兼容不同版本Office生成的文档格式,确保能正确解析微软和WPS等软件创建的文档
  1. 标题匹配逻辑
for par in doc.paragraphs:
    for title in target_title_list:
        if title in par.text and 'toc' not in par.style.name.lower() and is_heading_enhanced(par):
            found_start = True
            break
  • 执行流程
    1. 遍历文档所有段落(paragraphs)
    2. 检查段落文本是否包含目标标题关键字
    3. 通过is_heading_enhanced函数验证段落样式是否为真实标题
    4. 排除目录项('toc’样式)
  1. 递归图片搜索算法
def get_img(root_element, target_tag, target_attribute, out_list):
    for child in root_element:
        if tag in target_tag and target_attribute in child.attrib.keys():
            out_list.append(child.attrib[target_attribute])
        else:
            get_img(child, target_tag, target_attribute, out_list)
  • 设计亮点
    • 深度优先遍历XML节点树
    • 动态匹配两种图片标识格式:
      • VML格式:<v:imagedata r:id="rId8">
      • DrawingML格式:<a:blip r:embed="rId8">
  1. 图片二进制处理
img_part = doc.part.related_parts[id]
img_binary = img_part.blob  # 获取原始二进制数据
img = cv2.imdecode(np.frombuffer(img_binary, np.uint8), cv2.IMREAD_COLOR)
  • 关键技术点
    • 通过related_parts获取文档包内嵌资源
    • 使用OpenCV进行图片解码,兼容JPG/PNG/BMP等格式
    • 自动处理图片方向元数据
四、代码特性总结
  1. 格式兼容性
    支持解析以下图片嵌入形式:

    • 直接插入的本地图片
    • 复制粘贴的位图
    • 从其他文档链接的图片
    • 使用形状工具修饰的图片
  2. 样式过滤机制
    采用双重验证确保定位到真实内容区域:

    • 文本内容包含目标关键字
    • 段落样式通过标题特征校验(字号/加粗/样式名)
  3. 性能优化设计

    • 惰性加载:仅处理目标区域XML数据
    • 增量解析:遇到目标标题后开始采集,遇到下个标题停止
    • 内存复用:流式处理图片保存
五、输入输出说明

参数说明

def get_target_pic(file, target_title):
    """
    :param file: Word文档路径(.docx格式)
    :param target_title: 目标标题关键字,支持逗号分隔多个关键字
    :return: 图片本地路径列表 或 None
    """

输出示例

[
    '/docs/需求文档/img0.jpg',
    '/docs/需求文档/img1.jpg',
    '/docs/需求文档/img2.jpg'
]
六、扩展应用场景
  1. 自动化测试验证
    对比需求文档与测试环境的实际界面截图

  2. 文档合规检查
    验证敏感文档中的公司LOGO、签名章等图片是否符合规范

  3. 知识库构建
    自动抽取技术文档中的架构图生成图库索引

该实现方案直接操作Word底层XML结构,避免了GUI操作的不稳定性,特别适合集成到持续集成流水线中,实现文档图片的自动化验证流程。

相关文章:

  • React学习笔记15
  • MySQL行列转化
  • Vision Mamba论文精读笔记
  • 基于Redis实现限流的几种方式
  • MySQL 连接的使用
  • 嵌入式Zephyr RTOS面试题及参考答案
  • 【原创】springboot+vue校园外卖订餐网系统设计与实现
  • Kubeflow 2025 全栈式机器学习平台部署指南(云原生+量子混合计算)
  • 【Python办公自动化】—Excel中相同编号自动添加-1-2-3...
  • Linux--git
  • python学习笔记-mysql数据库操作
  • C语言刷题第三章(上)
  • Windows 系统下安装 RabbitMQ 的详细指南
  • word甲烷一键下标——宏
  • Echarts 柱状或折线或其他多数据图表自动向右滚动
  • centos没有ll
  • 【vue+excel】导出excel(目前是可以导出两个sheet)
  • dify+mysql的诗词助手
  • Appium高级操作--从源码角度解析--模拟复杂手势操作
  • cursor使用
  • 如何打开网站根目录/b站推广网站入口202
  • 济南企业网站搭建/企业建站用什么好
  • 青海西宁高端网站建设/项目外包平台
  • 上网站建设公司/怎么创建网站快捷方式
  • 网站定制化/网络营销模式下品牌推广研究
  • 网站建设基本流程是什么/爱站网 关键词挖掘工具站