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日

相关文章

  • 详解Python 重学requests发起请求的基本方式

    以下是关于Python重学requests发起请求的基本方式的攻略: 详解Python重学requests发起请求的基本方式 requests是一个流行的HTTP库,用于向Web服务器发送HTTP请求和接收响应。以下是Python重学requests发起请求的基本方式的攻略: 发送GET请求 以下是使用requests库发送GET请求的示例: import …

    python 2023年5月14日
    00
  • Python for Informatics 第11章之正则表达式(四)

    以下是“PythonforInformatics第11章之正则表达式(四)”的完整攻略: 一、问题描述 在PythonforInformatics第11章中,我们学习了如何使用Python的re模块进行正则表达式匹配。本文将详细讲解PythonforInformatics第11章之正则表达式(四),并提供两个示例说明。 二、解决方案 2.1 re模块中的su…

    python 2023年5月14日
    00
  • Python中的取整、取余运算方法

    下面是Python中取整和取余运算方法的详细攻略。 取整运算 在Python中有两种取整运算方法,分别是向下取整和向上取整。 向下取整 向下取整就是将数字往下取整到最接近的整数,比如将3.8取整后得到的结果是3. 在Python中,可以使用math.floor()函数进行向下取整操作。示例如下: import math num = 3.8 result = …

    python 2023年6月3日
    00
  • 分享Python 的24个编程超好用技巧

    分享Python的24个编程超好用技巧攻略 在分享Python的24个编程超好用技巧时,我们可以采取以下步骤。 1. 确定分享目的和受众 在分享技巧前,首先需要明确自己的目的和受众。分享的目的是要鼓励更多人使用Python、提升编程技巧;而受众则是那些对Python技术有一定了解但想更深入了解Python技巧优化的人群。 2. 确认分享样式与工具 选择我们要…

    python 2023年5月18日
    00
  • python 针对在子文件夹中的md文档实现批量md转word

    下面是针对在子文件夹中的md文档实现批量md转word的完整攻略: 1. 安装pandoc 首先需要安装pandoc,pandoc是一个文档转换工具,支持多种格式之间的转换。 可以通过以下命令在终端里安装: brew install pandoc 或者到pandoc的官网下载安装包进行安装。 2. 编写脚本文件 创建一个python脚本,其目的是遍历指定目录…

    python 2023年6月5日
    00
  • python调用接口的4种方式代码实例

    Python调用接口的4种方式代码实例 在进行Web开发时,我们经常需要调用接口获取数据。Python提供了多种方式来调用接口,本文将介绍4种常用的方式,并提供两个示例。 方式一:使用urllib库调用接口 以下是一个示例,演示如何使用Python的urllib库调用接口: import urllib.request import json url = ‘h…

    python 2023年5月15日
    00
  • 对Python 检查文件名是否规范的实例详解

    对于Python 检查文件名是否规范的实例详解,我们可以分为以下几个步骤: 获取文件名我们的第一步是获取文件名,可以通过Python内置的os模块中的listdir()函数获取指定路径下的所有文件名,然后通过一个for循环遍历每一个文件名。 判断文件名是否规范在判断文件名是否规范之前,我们需要先确定文件名规范的标准。一般来说,文件名包含以下几个要素: 文件名…

    python 2023年6月2日
    00
  • python中str内置函数用法总结

    Python中str内置函数用法总结 Python中str类是一种常用的数据类型,有很多内置函数可以帮助我们操作和处理字符串。下面是一些常用的str内置函数及其用法总结。 1. capitalize() 将字符串第一个字符变为大写。 示例代码: str = "hello world" new_str = str.capitalize() …

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