Python 提取 Word 文档中的文本和图片

将内容从 Word 文档中提取出来可以方便我们对其进行其他操作,如将内容储存在数据库中、将内容导入到其他程序中、用于 AI 训练以及制作其他文档等。第三方库 Spire.Doc for Python 提供了一个简单的方法直接提取 Word 文档中的内容,包括文本和图片,而不需要大量的复制粘贴操作,也不需要复杂的代码。本文将介绍如何使用简单的代码实现从 Word 文档中提取文本和图片内容并保存。

  • 从 Word 文档中提取文本内容并写入 TXT 文件
  • 从 Word 文档中提取图片并保存

Python库安装: 在操作之前,需要先将Spire.Doc for Python 引入到项目中。可以下载后安装,或直接通过 pip 安装。

复制代码
pip install Spire.Doc

Python 提取Word文档中的文本内容

Spire.Doc for Python中的 Document.GetText() 方法可以获取Word文档中的所有文本并返回字符串,我们可以将返回的字符串写入到文本文件中进行保存。

代码示例:

复制代码
from turtle import st
from spire.doc import *
from spire.doc.common import *

def WriteAllText(fname:str,text:List[str]):
        fp = open(fname,"w")
        for s in text:
            fp.write(s)
        fp.close()

inputFile = "示例.docx"
outputFile =  "获取的文本.txt"
     
#创建Document的对象
document = Document()

#载入Word文档
document.LoadFromFile(inputFile)

#获取文档中的文本
text = document.GetText()

#将文本写入文本文件
WriteAllText(outputFile, text)
document.Close()

提取结果

Python 提取Word文档中的图片

提取图片的操作相对复杂一些,需要判断文档元素子对象是否为图片或复合对象,如果是图片则保存,如果是复合对象则继续判断其中的子对象是否为图片。

代码示例:

复制代码
import queue
from spire.doc import *
from spire.doc.common import *
import os

outputPath = "Images/"
inputFile = "示例.docx"

if not os.path.exists(outputPath):
    os.makedirs(outputPath)

#创建Document的对象
document = Document()

#载入Word文档
document.LoadFromFile(inputFile)

#创建一个队列并将文档元素放入其中
nodes = queue.Queue()
nodes.put(document)

#创建一个列表
images = []

#循环遍历文档元素
while nodes.qsize() > 0:
    node = nodes.get()
    for i in range(node.ChildObjects.Count):
        #获取文档元素的子对象
        child = node.ChildObjects.get_Item(i)
        #判断子对象是否为图片
        if child.DocumentObjectType == DocumentObjectType.Picture:
            picture = child if isinstance(child, DocPicture) else None
            dataBytes = picture.ImageBytes
            #添加到列表中
            images.append(dataBytes)
        #判断子对象是否为复合对象
        elif isinstance(child, ICompositeObject):
            #添加到队列中
            nodes.put(child if isinstance(child, ICompositeObject) else None)

#保存图片
for i, item in enumerate(images):
    fileName = "Image-{}.png".format(i)
    with open(outputPath+fileName,'wb') as imageFile:
        imageFile.write(item)
document.Close()

提取结果:

以上是关于如何使用Python 从Word文档中提取文本和图片的介绍。该Python Word库还支持非常多的文档操作,具体可以查看 Spire.Doc for Python中文教程

相关推荐
努力还债的学术吗喽几秒前
PyTorch nn.Linear 终极详解:从零理解线性层的一切(含可视化+完整代码)
人工智能·pytorch·python·深度学习·基础组件·线性层·nn.linear
宸津-代码粉碎机1 小时前
Redis 进阶:跳出缓存局限!7 大核心场景的原理与工程化实践
java·人工智能·redis·python
极客代码1 小时前
第五篇:后端优化——位姿图的灵魂--从图优化到滑动窗口的联合状态估计
python·深度学习·计算机视觉·视觉里程计·slam·回环检测·地图构建
程序员小白条2 小时前
度小满运维开发一面
java·运维·python·职场和发展·运维开发
全栈派森5 小时前
BI数据开发全攻略:数据仓库、模型搭建与指标处理
数据仓库·python·程序人生
铁手飞鹰7 小时前
从零复现论文:深度学习域适应1
linux·pytorch·python·深度学习·ubuntu·ai·迁移学习
会飞的小菠菜7 小时前
怎样将PPT幻灯片中所有的元素图片一键提取保存?
powerpoint·批量·jpg·提取图片·导出图片
薰衣草233310 小时前
力扣——位运算
python·算法·leetcode
两只程序猿10 小时前
数据可视化 | Violin Plot小提琴图Python实现 数据分布密度可视化科研图表
开发语言·python·信息可视化
大模型真好玩11 小时前
架构大突破! DeepSeek-V3.2发布,五分钟速通DeepSeek-V3.2核心特性
人工智能·python·deepseek