通过从 word 文档中提取文本,用户可以轻松获取文档中包含的文字信息,对文本进行处理、分析和组织等操作,从而完成文本挖掘、情感分析和自然语言处理等任务。另一方面,提取图像可以获取 word 文档中嵌入的视觉元素,并用于完成图像识别、内容提取或创建图像数据库等任务。本文将介绍如何使用 通过 python 程序提取 word 文档中的文本和图像。
安装 spire.doc for python
本教程需要用到 spire.doc for python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 vs code 中。
pip install spire.doc
如果您不确定如何安装,请参考:如何在 vs code 中安装 spire.doc for python
用 python 提取 word 文档指定段落中的文本
可以使用 section.paragraphs[index] 属性从特定节中获取特定段落,接着通过 paragraph.text 属性提取该段落的文本内容。具体操作步骤如下:
- 创建 document 类的对象。
- 使用 document.loadfromfile() 方法加载 word 文件。
- 通过 document.sections[index] 属性获取指定节。
- 通过 section.paragraphs[index] 属性获取指定段落。
- 通过 paragraph.text 属性从该段落中提取文本。
- python
from spire.doc import *
from spire.doc.common import *
# 创建一个document对象
doc = document()
# 加载一个word文档
doc.loadfromfile("示例.docx")
# 获取指定的节(section)
section = doc.sections[0]
# 获取指定的段落(paragraph)
paragraph = section.paragraphs[1]
# 从段落获取文本
text = paragraph.text
# 保存提取的段落为txt文件
with open("output/提取段落.txt", "w", encoding="utf-8") as file:
file.write(text)
用 python 提取 word 文档中的所有文本
如果需要获取 word 文档中的所有文本,可以使用 document.gettext() 方法直接提取。具体操作步骤如下:
- 创建 document 类的对象。
- 使用 document.loadfromfile() 方法加载 word 文件。
- 使用 document.gettext() 方法提取文档中的所有文本。
- python
from spire.doc import *
from spire.doc.common import *
# 创建一个document对象
doc = document()
# 加载一个word文档
doc.loadfromfile("示例.docx")
# 获取文档所有文本
text = doc.gettext()
# 保存获取的文本为txt文件
with open("output/提取文本.txt", "w", encoding="utf-8") as file:
file.write(text)
用 python 提取 word 文档中的所有图像
spire.doc for python 还支持提取 word 文档中的所有图像,只需要遍历文档中的子对象,并保存其中为 docpicture 类的实例的子对象即可。详细操作步骤如下:
- 创建 document 类的对象。
- 使用 document.loadfromfile() 方法加载 word 文件。
- 循环遍历文档中的子对象。
- 判断特定子对象是否为 docpicture 类的实例。如果是,则通过 docpicture.imagebytes 属性获取图像数据。
- 将图像数据写入 png 文件。
- python
import queue
from spire.doc import *
from spire.doc.common import *
# 创建一个document对象
doc = document()
# 加载一个word文件
doc.loadfromfile("示例.docx")
# 创建一个队列对象
nodes = queue.queue()
nodes.put(doc)
# 创建一个列表
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 = "图片-{}.png".format(i)
with open("output/images/" filename,'wb') as imagefile:
# 将图片写入指定路径
imagefile.write(item)
doc.close()
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。