Python提取Word中图片的实现步骤

以下是Python提取Word中图片的实现步骤的攻略:

1. 安装Python-docx库

Python-docx是一个用来读取、查询和修改Microsoft Word文档的Python库。它支持docx和doc文件格式,在使用之前先安装该库。

pip install python-docx

2. 读取Word文档

使用Python-docx库,可以轻松地读取Word文档。首先使用以下代码打开文档。

import docx

doc = docx.Document('example.docx')

其中,'example.docx'为需要读取的文档文件名。通过这个对象,我们可以进一步遍历文档内容。

3. 遍历文档内容

遍历文档包括获取将要提取的图片位置和名称。

for paragraph in doc.paragraphs:
    for run in paragraph.runs:
        if run.element.xml.startswith('<w:drawing'):
            inline = run.inline_shapes[0]
            if inline.has_image:
                image = inline._inline.graphic.graphicData.pic.nvPicPr.cNvPr.name
                print(image)

在以上代码中,我们首先遍历文档的段落和文本格式信息,通过判断是否含有drawing元素,进一步获取图片信息。如果获得的inline对象有图片,那么我们就可以通过对应的graphicData获取图片名称。

4. 获取图片二进制数据

获取图片名称后,我们进一步提取图片二进制数据。

from docx.shared import Inches

for paragraph in doc.paragraphs:
    for run in paragraph.runs:
        if run.element.xml.startswith('<w:drawing'):
            inline = run.inline_shapes[0]
            if inline.has_image:
                image = inline._inline.graphic.graphicData.pic.nvPicPr.cNvPr.name
                image_data = inline._inline.graphic.graphicData.pic.blipFill.blip
                with open(f"{image}.png", 'wb') as f:
                    f.write(image_data)

在以上代码中,我们使用了docx库中的shared.Inches类来控制图片大小。对于每个带有有效图片的文本段落,我们通过图形的名称获取对应的二进制数据,并将其写入到本地文件中,以PNG格式保存。

示例1

如果你需要从letter.docx文档中提取所有图片数据,可以使用以下代码实现。

import docx
from docx.shared import Inches

doc = docx.Document('letter.docx')

for paragraph in doc.paragraphs:
    for run in paragraph.runs:
        if run.element.xml.startswith('<w:drawing'):
            inline = run.inline_shapes[0]
            if inline.has_image:
                image = inline._inline.graphic.graphicData.pic.nvPicPr.cNvPr.name
                image_data = inline._inline.graphic.graphicData.pic.blipFill.blip
                with open(f"{image}.png", 'wb') as f:
                    f.write(image_data)

该代码运行后,会在代码所在目录下生成所有图片的PNG格式文件。

示例2

如果你只需要提取某一个特定的Word文档中的图片,可以通过修改文档名称和图片名称信息,使用以下代码解决。

import docx
from docx.shared import Inches

doc = docx.Document('example.docx')

for paragraph in doc.paragraphs:
    for run in paragraph.runs:
        if run.element.xml.startswith('<w:drawing'):
            inline = run.inline_shapes[0]
            if inline.has_image:
                image = inline._inline.graphic.graphicData.pic.nvPicPr.cNvPr.name
                if image == 'image.png':
                    image_data = inline._inline.graphic.graphicData.pic.blipFill.blip
                    with open(f"{image}.png", 'wb') as f:
                        f.write(image_data)

运行该代码后,只有example.docx文档中名为image.png的图片数据会被提取。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python提取Word中图片的实现步骤 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • django项目运行因中文而乱码报错的几种情况解决

    当Django项目运行时,由于中文字符集与ASCII字符集的编码方式不同,可能会出现乱码问题。下面介绍几种可能出现的情况及其解决方法。 1. 数据库中文问题 如果Django项目中涉及到数据库中文的读写操作,可能会出现乱码错误。这时需要注意以下两个问题和相应的解决方案。 问题: 数据库中存储的中文字符无法正常读取。 解决方案: 修改数据库的字符集编码为UTF…

    python 2023年5月20日
    00
  • 【0基础学爬虫】爬虫基础之自动化工具 Pyppeteer 的使用

    大数据时代,各行各业对数据采集的需求日益增多,网络爬虫的运用也更为广泛,越来越多的人开始学习网络爬虫这项技术,K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章,为实现从易到难全方位覆盖,特设【0基础学爬虫】专栏,帮助小白快速入门爬虫,本期为自动化工具 Pyppeteer 的使用。 概述 前两期文章中已经介绍到了 Selenium 与 Playwright 的使…

    python 2023年5月9日
    00
  • python -v 报错问题的解决方法

    在Python中,我们可以使用-v选项来查看程序的详细输出。但是有时候,当我们使用-v选项时,会遇到一些报错问题。以下是解决-v报错问题的完整攻略: 1. 检查Python版本 在使用-v选项时,我们该确保使用的是正确版本的Python。有时候,当我们使用-v选项时,会遇到版本不兼容的问题。我们可以使用以下命令来检查Python版本: python –ve…

    python 2023年5月13日
    00
  • 如何使用Python查询某个列中的最大值?

    以下是如何使用Python查询某个列中的最大值的完整使用攻略。 步骤1:导入模块 在Python中,我们需要导入相应的模块来连接数据库和执行查询操作。以下是导入mysql-connector-python模块的基本语法: import mysql.connector 以下是导入psycopg2模块的基本语法: import psycopg2 步骤2:连接数据…

    python 2023年5月12日
    00
  • 详解如何用PIL将一个透明的PNG图像与另一个图像合并

    请看下面的攻略。 PIL将透明PNG图像与其他图像合并 1.解释PIL? Pillow 是 Python 图像处理库,可用于打开、操作及保存多种图像格式,包括但不限于 PNG、JPEG、BMP、GIF、WebP、PPM、TIFF。 2. 什么是透明PNG图片? PNG 图像文件格式支持透明度,这意味着您可以使用 PNG 图像作为遮罩或将其与其他图像合并,以使…

    python-answer 2023年3月25日
    00
  • Python语法学习之进程池与进程锁详解

    Python语法学习之进程池与进程锁详解 进程池 在Python中,可以通过multiprocessing模块来实现多进程的编程。当我们需要创建多个进程的时候,就需要使用到进程池。 进程池的使用 要使用Python中的进程池,可以使用multiprocessing.Pool类来创建进程池。具体的使用方法如下: from multiprocessing imp…

    python 2023年5月19日
    00
  • Python 可视化神器Plotly详解

    Python 可视化神器Plotly详解 简介 Plotly 是一个开源的可视化工具,支持许多语言,包括Python、R和MATLAB等,并且支持在线编辑和分享图表。因此,Plotly 是一个非常流行的可视化神器,被广泛应用于数据分析与可视化领域。本篇文章将详细讲解 Plotly 的使用方法,以及使用示例。 安装 在使用 Plotly 之前,需要先安装相关依…

    python 2023年5月19日
    00
  • Python导入模块时遇到的错误分析

    作为Python的作者,我可以为您提供“Python导入模块时遇到的错误分析”的完整攻略,具体如下: 导入模块时的报错 在使用Python编程的过程中,当我们导入模块时,遇到不同的错误类型,有时会不知道该如何解决。下面我们将会详细分析一下常见的导入模块时遇到的错误以及对应的解决方法。 报错1:ModuleNotFoundError ModuleNotFoun…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部