翼度科技»论坛 编程开发 python 查看内容

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

6

主题

6

帖子

18

积分

新手上路

Rank: 1

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

  • 从 Word 文档中提取文本内容并写入 TXT 文件
  • 从 Word 文档中提取图片并保存
 
Python库安装: 在操作之前,需要先将Spire.Doc for Python 引入到项目中。可以下载后安装,或直接通过 pip 安装。
  1. pip install Spire.Doc
复制代码
 

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

Spire.Doc for Python中的 Document.GetText() 方法可以获取Word文档中的所有文本并返回字符串,我们可以将返回的字符串写入到文本文件中进行保存。
代码示例:
  1. from turtle import st
  2. from spire.doc import *
  3. from spire.doc.common import *
  4. def WriteAllText(fname:str,text:List[str]):
  5.         fp = open(fname,"w")
  6.         for s in text:
  7.             fp.write(s)
  8.         fp.close()
  9. inputFile = "示例.docx"
  10. outputFile =  "获取的文本.txt"
  11.      
  12. #创建Document的对象
  13. document = Document()
  14. #载入Word文档
  15. document.LoadFromFile(inputFile)
  16. #获取文档中的文本
  17. text = document.GetText()
  18. #将文本写入文本文件
  19. WriteAllText(outputFile, text)
  20. document.Close()
复制代码
提取结果

 
Python 提取Word文档中的图片

提取图片的操作相对复杂一些,需要判断文档元素子对象是否为图片或复合对象,如果是图片则保存,如果是复合对象则继续判断其中的子对象是否为图片。
代码示例:
  1. import queue
  2. from spire.doc import *
  3. from spire.doc.common import *
  4. import os
  5. outputPath = "Images/"
  6. inputFile = "示例.docx"
  7. if not os.path.exists(outputPath):
  8.     os.makedirs(outputPath)
  9. #创建Document的对象
  10. document = Document()
  11. #载入Word文档
  12. document.LoadFromFile(inputFile)
  13. #创建一个队列并将文档元素放入其中
  14. nodes = queue.Queue()
  15. nodes.put(document)
  16. #创建一个列表
  17. images = []
  18. #循环遍历文档元素
  19. while nodes.qsize() > 0:
  20.     node = nodes.get()
  21.     for i in range(node.ChildObjects.Count):
  22.         #获取文档元素的子对象
  23.         child = node.ChildObjects.get_Item(i)
  24.         #判断子对象是否为图片
  25.         if child.DocumentObjectType == DocumentObjectType.Picture:
  26.             picture = child if isinstance(child, DocPicture) else None
  27.             dataBytes = picture.ImageBytes
  28.             #添加到列表中
  29.             images.append(dataBytes)
  30.         #判断子对象是否为复合对象
  31.         elif isinstance(child, ICompositeObject):
  32.             #添加到队列中
  33.             nodes.put(child if isinstance(child, ICompositeObject) else None)
  34. #保存图片
  35. for i, item in enumerate(images):
  36.     fileName = "Image-{}.png".format(i)
  37.     with open(outputPath+fileName,'wb') as imageFile:
  38.         imageFile.write(item)
  39. document.Close()
复制代码
提取结果:

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

来源:https://www.cnblogs.com/Yesi/p/17911301.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具