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中文教程。