Python使用python-docx批量提取Word文档中的图片

半杯拿铁
半杯拿铁
发布时间:2026-10-11| 2人浏览过
原创

本文详细介绍如何利用Python的python-docx库从Word文档中批量提取所有嵌入图片。涵盖环境准备、核心代码编写、安全保存逻辑及常见报错排查,并提供后续图像二次处理的扩展建议,助力开发者高效实现文档内容自动化抓取。

原理与适用场景

Word文档中的图片分为嵌入式(Inline)与浮动式(Floating)。python-docx通过解析XML结构定位图片数据节点,读取二进制流后写入本地磁盘。该方案适用于报告归档、数据可视化素材收集、合同凭证管理以及自动化流水线的图像预处理环节。

第1步:安装依赖环境

操作入口为系统终端或虚拟环境命令行。确保Python版本不低于3.7,执行以下指令拉取官方维护的解析包:

pip install python-docx

完成后可通过import docx无报错即视为环境就绪。

第2步:编写图片提取脚本

目的为遍历文档对象并安全导出二进制数据。将以下代码保存为extract_images.py,修改源文件路径后即可运行:

import docx
import os

def extract_word_images(input_doc, output_dir):
    # 自动创建输出目录
    os.makedirs(output_dir, exist_ok=True)
    
    # 加载文档对象
    doc = docx.Document(input_doc)
    extracted_count = 0
    
    # 遍历所有内嵌图形对象
    for shape in doc.inline_shapes:
        extracted_count += 1
        # DOCX内部图片格式多为PNG或JPG,统一以.png后缀保存便于标准化处理
        filename = os.path.join(output_dir, f"img_{extracted_count}.png")
        with open(filename, "wb") as img_file:
            img_file.write(shape.blob)
            
    print(f"提取完成!共保存 {extracted_count} 张图片至目录: {os.path.abspath(output_dir)}")

# 替换为你的实际Word文件名
extract_word_images("source_report.docx", "output_images/")

关键点说明:
- 使用doc.inline_shapes可直接获取段落、表格及形状容器中的所有嵌入图,避免原稿中仅遍历paragraph.runs[0]导致的遗漏。
- 使用shape.blob读取原始字节流,配合os.path.join保障跨平台路径兼容性。

第3步:执行验证与结果核对

运行脚本后,打开指定输出文件夹检查文件列表。正常状态下,提取出的图片可按常规图像查看器打开,分辨率与原档一致。若需核对数量是否匹配,可在Word中使用「审阅」→「统计」查看媒体对象总数,并与控制台打印的计数进行比对。

常见问题排错

  • AttributeError: 'Document' object has no attribute 'inline_shapes':使用的python-docx版本过低。请升级至最新版pip install --upgrade python-docx。
  • 提取后的图片无法打开或显示为空白块:部分Word版本会将高压缩率图片存储为临时缓存格式。尝试在Word中将图片另存为高质量模式后重试,或引入Pillow库对导出文件执行Image.open()强制解码刷新头部。
  • 表格内的浮水印未导出:inline_shapes仅覆盖内嵌对象。若需抓取浮动型文本框或艺术字图片,需额外遍历doc.shapes并进行if shape.has_photo_frame:条件过滤。

总结

通过python-docx的标准API组合,可稳定实现Word多媒体资源的无损剥离。掌握上述路径与参数后,可进一步衔接pandas进行数据清洗,或使用Pillow批量裁剪、加水印及格式转换。以上就是Python使用python-docx批量提取Word文档中的图片的详细内容,更多关于Python办公自动化与文档解析的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。