将内容从 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 stfrom 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 queuefrom spire.doc import *from spire.doc.common import *import osoutputPath = "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中文教程。