睦壹 發表於 2025-8-4 11:44:00

国产化Word处理控件Spire.Doc教程:Python提取Word文档中的文本、图片、表格等

<p><img src="https://image.evget.com/attachment/keditor/image/20250804/105249_4.png"></p>
<p>在现代办公场景中,Word文档已成为信息存储与交流的重要载体,承载着关键的业务数据、结构化表格、可视化图表以及协作批注等重要内容。面对日益增长的文档处理需求,传统的人工操作方式已难以满足效率与准确性的双重标准。采用Python实现Word文档内容的自动化解析,不仅能显著提升处理效率、降低人为错误率,还能实现数据集成、内容迁移及智能分析等多种应用。</p>
<p>E-iceblue旗下Spire系列产品是国产文档处理领域的优秀产品,<strong><em>支持国产化</em></strong>,帮助企业高效构建文档处理的应用程序。本文将详细介绍如何使用<strong>&nbsp;</strong><strong>Spire.Doc for Python</strong><strong>&nbsp;</strong>库<strong>在 Python 中读取 Word 文档</strong>(包括 .doc 和 .docx 格式),并演示如何提取文本、图片、表格、批注、列表以及文档的元数据等信息。无论您是进行文档内容抓取、自动化报告生成,还是开发文档解析工具,本教程都将提供清晰的代码示例和实用指导。</p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong>Spire.Doc for Python试用下载,请联系Spire授权代理商<span style="color: rgba(35, 111, 161, 1)">慧都科技</span></strong></span></p>
<p style="text-align: center"><strong><span style="color: rgba(230, 126, 35, 1)">加入技术交流Q群(125237868),与更多开发者一起提升文档开发技能</span><br></strong></p>
<h2>为什么使用 Python 读取 Word 文档?</h2>
<p>Python 作为一门灵活且功能强大的编程语言,广泛应用于自动化、数据处理及内容分析等领域。使用 Python 读取 Word 文档,可以实现以下重要应用:</p>
<ul>
<li><strong>批量提取数据</strong>:从报告、合同、简历等文档中快速抓取关键信息,无需手工复制粘贴。</li>
<li><strong>结构化内容解析</strong>:将文本、表格和图片等内容整理成数据库或分析模型,便于后续处理。</li>
<li><strong>自动化工作流集成</strong>:将 Word 文档读取功能嵌入到 Web 服务、API 或后台系统,实现端到端自动化。</li>
<li><strong>支持多格式文档处理</strong>:同时兼容现代 .docx 和传统 .doc 文件,保证业务场景的全面覆盖。</li>
</ul>
<h2>安装 Python Word 文档解析库</h2>
<p>要在 Python 中读取 Word 文档,首先需要安装支持 .doc 和 .docx 格式的解析库。<strong><u>Spire.Doc for Python</u></strong>&nbsp;是一款功能完善且独立于 Microsoft Office 的第三方库,支持提取文本、图片、表格、批注、列表及元数据等多种内容。</p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong>Spire.Doc for Python试用下载,请联系Spire授权代理商<span style="color: rgba(35, 111, 161, 1)">慧都科技</span></strong></span></p>
<p style="text-align: center"><strong><span style="color: rgba(230, 126, 35, 1)">加入技术交流Q群(125237868),与更多开发者一起提升文档开发技能</span></strong></p>
<p>通过以下命令即可安装 Spire.Doc:</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>pip install Spire.Doc</code></pre>
<p>安装完成后,即可在 Python 代码中导入并使用 Spire.Doc 进行 Word 文档的读取和处理。</p>
<h2>使用 Python 读取 Word 文档中文本</h2>
<p>提取文本是解析 Word 文档的基础需求。根据不同场景,你可能需要获取整篇文档的全部文本,或仅针对特定节、段落进行读取。</p>
<h3>获取整个文档的文本</h3>
<p>在文档管理系统中,提取全文文本有助于建立搜索索引,使用户能够通过关键词快速定位文档内容,从而提升查询效率和使用体验。</p>
<p><strong><u>Spire.Doc&nbsp;</u></strong>提供了 Document.GetText() 方法,可一次性提取 Word 文档中的所有文字信息,涵盖正文、表格及列表等内容。</p>
<p>以下示例展示了如何加载 Word 文档,获取全文文本,并将其保存为独立的文本文件,便于后续处理与分析:</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>from spire.doc 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)

document.Close()</code></pre>
<p><img src="https://image.evget.com/attachment/keditor/image/20250804/105447_2.png"></p>
<h3>获取特定节或段落的文本</h3>
<p>在许多结构化文档(如报告、合同或说明书)中,内容通常被划分为多个节或段落。若只需提取文档中某一部分的文本信息,可以直接访问指定节,并逐段读取内容,实现更具针对性的处理。</p>
<p>以下示例展示了如何访问 Word 文档中的指定节,并提取其中所有段落的文本内容:</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>from spire.doc import *

# 加载 .docx 或 .doc 文件
document = Document()
document.LoadFromFile("示例.docx")

# 访问指定节
section = document.Sections

# 获取该节段落文本
with open("output/节文本.txt", "w", encoding="utf-8") as file:
    for paragraph in section.Paragraphs:
      file.write(paragraph.Text + "\n")

document.Close()</code></pre>
<h2>使用 Python 读取 Word 文档中的特定元素</h2>
<p>除了纯文本,Word 文档中还可能包含图片、表格、批注、列表及元数据等多种元素。Spire.Doc 提供丰富且便捷的接口,帮助开发者高效地提取这些内容,实现对文档结构和数据的全面访问。</p>
<h3>提取图片</h3>
<p>Word 文档中常包含图片元素,例如公司 Logo、插图、图表等。若需提取这些图片以便进行分析、存档或再利用,可通过遍历文档结构并识别图片对象(DocPicture)来实现。</p>
<p>以下是提取 Word 文档中所有图片并将其保存为本地文件的完整示例:</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>import queue
from spire.doc import *

# 创建Document对象
doc = Document()

# 加载Word文件
doc.LoadFromFile("示例.docx")

# 创建队列对象
nodes = queue.Queue()
nodes.put(doc)

# 创建列表
images = []

while nodes.qsize() &gt; 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()</code></pre>
<p><img src="https://image.evget.com/attachment/keditor/image/20250804/105559_9.png"></p>
<h3>获取表格数据</h3>
<p>在 Word 文档中,表格常用于组织结构化数据,如报表或物品清单。使用 Spire.Doc,开发者可以遍历文档中的所有表格,访问表格中的每个单元格,并提取单元格的内容。</p>
<p>以下代码展示了如何提取Word文档中所有表格的数据,并将结果保存为文本文件:</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>from spire.doc import *
import os

# 加载 Word 文档
document = Document()
document.LoadFromFile("示例.docx")

# 指定输出文件夹存在
output_dir = "output/Tables"
os.makedirs(output_dir, exist_ok=True)

# 遍历所有节并提取表格数据
for s in range(document.Sections.Count):
    section = document.Sections
    tables = section.Tables

    for i in range(tables.Count):
      table = tables
      table_data = ""

      for j in range(table.Rows.Count):
            row = table.Rows

            for k in range(row.Cells.Count):
                cell = row.Cells
                cell_text = ""

                for p in range(cell.Paragraphs.Count):
                  para_text = cell.Paragraphs.Text
                  cell_text += para_text + " "

                table_data += cell_text.strip()
                if k &lt; row.Cells.Count - 1:
                  table_data += "\t"
            table_data += "\n"

      # 将提取的表格数据写入文本文件
      output_path = os.path.join(output_dir, f"Word表格_{s+1}_{i+1}.txt")
      with open(output_path, "w", encoding="utf-8") as output_file:
            output_file.write(table_data)

document.Close()</code></pre>
<h3>读取列表</h3>
<p>Word 文档中的项目列表(如编号列表和项目符号列表)常用于展示条款、步骤或要点等结构化内容。借助<strong><u>&nbsp;Spire.Doc</u></strong>,开发者可以轻松识别并提取文档中的列表。</p>
<p>以下代码示例展示了如何加载 Word 文件,查找所有列表项,并将项目编号(如数字或符号)和其对应的文本内容写入本地文本文件:</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>from spire.doc import *

# 加载 Word 文档
document = Document()
document.LoadFromFile("示例.docx")

# 创建文本文件,用于存放列表内容
with open("output/列表内容.txt", "w", encoding="utf-8") as output_file:
    # 遍历文档中的节
    for s in range(document.Sections.Count):
      section = document.Sections
      # 遍历节中的段落
      for p in range(section.Paragraphs.Count):
            paragraph = section.Paragraphs
            # 找到列表,提取其内容并保存至文本文件
            if paragraph.ListFormat.ListType != ListType.NoList:
                output_file.write(paragraph.ListText + paragraph.Text + "\n")

document.Close()</code></pre>
<h3>提取批注</h3>
<p>Word 支持添加批注,用于提供修改建议或评论。通过访问 Comments 集合,可以获取文档中所有批注的信息,包括批注作者和具体内容,便于实现审阅流程的自动化管理。</p>
<p>以下代码展示了如何提取所有批注,包括批注作者与内容,并保存到文本文件中:</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>from spire.doc import *

# 加载 Word 文档
document = Document()
document.LoadFromFile("示例.docx")

# 创建文本文件,用于存放批注内容
with open("output/批注内容.txt", "w", encoding="utf-8") as output_file:
    # 遍历文档中的所有批注,获取每个批注的作者和内容
    for i in range(document.Comments.Count):
      comment = document.Comments
      output_file.write(f"批注 {i + 1}:\n")
      output_file.write(f"作者:{comment.Format.Author}\n")

      comment_text = ""
      for j in range(comment.Body.Paragraphs.Count):
            paragraph = comment.Body.Paragraphs
            comment_text += paragraph.Text + "\n"

      output_file.write(f"内容: {comment_text.strip()}\n\n")

document.Close()</code></pre>
<h3>获取元数据(文档属性)</h3>
<p>Word 文档通常包含作者、标题、主题、关键字等元数据信息,这些数据保存在文档的 BuiltinDocumentProperties 属性中。提取这些属性有助于文档的归档管理、分类整理以及搜索优化。</p>
<p>以下示例代码展示了如何读取 Word 文档的标题、作者、主题等属性,并将其保存到本地文本文件:</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>from spire.doc import *

# 加载 Word 文档
document = Document()
document.LoadFromFile("示例.docx")

# 获取文档属性
props = document.BuiltinDocumentProperties

# 将文档属性信息写入到本地文本文件
with open("output/元数据.txt", "w", encoding="utf-8") as output_file:
    output_file.write(f"标题: {props.Title}\n")
    output_file.write(f"作者: {props.Author}\n")
output_file.write(f"主题: {props.Subject}\n")

document.Close()</code></pre>
<h2>总结</h2>
<p>使用 Python 读取 Word 文档,不仅能够显著提升文档处理效率,还能实现数据提取与自动化工作的深度集成。通过<strong><u>&nbsp;Spire.Doc for Python</u></strong>,开发者可以轻松完成 .doc 和 .docx 文件中的文本提取、表格读取、图片导出、批注解析、列表识别以及元数据获取等多种常见操作。</p>
<p>除了读取内容,Spire.Doc 还支持创建和编辑 Word 文档、设置样式格式、插入图片、执行文档合并,以及将 Word 转换为 PDF和图片等格式,满足从读取到输出的全流程需求,适用于报告生成、合同解析、批量文档处理等多种业务场景。</p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong>Spire.Doc for Python试用下载,请联系Spire授权代理商<span style="color: rgba(35, 111, 161, 1)">慧都科技</span></strong></span></p>
<p style="text-align: center"><strong><span style="color: rgba(230, 126, 35, 1)">加入技术交流Q群(125237868),与更多开发者一起提升文档开发技能</span></strong></p>
<h2>常见问题解答</h2>
<p><strong>Q1:Python 如何读取 Word(.doc/.docx)文档内容?</strong></p>
<p>A1:可以使用&nbsp;<strong><u>Spire.Doc for Python&nbsp;</u></strong>来读取 Word 文件。该库支持加载 .doc 和 .docx 格式,并提取文档中的文本、图片、表格、批注等内容。</p>
<p><strong>Q2:使用<u>&nbsp;Spire.Doc for Python&nbsp;</u>是否需要安装 Microsoft Office?</strong><br>A2:不需要。Spire.Doc 是一款独立运行的 Word 处理库,无需安装 Microsoft Word 或 Office ,即可在 Python 项目中实现 Word 文件的读取与编辑功能。</p>
<p><strong>Q3:除了读取 Word 内容,Spire.Doc 是否支持写入和生成 Word 文件?</strong><br>A3:支持。<strong><u>Spire.Doc for Python</u></strong>&nbsp;不仅可以读取 Word 文档内容,还支持以编程方式创建、编辑和保存 Word 文件。用户可以添加段落、设置样式、插入图片和表格,甚至将 Word 转换为 PDF 或图片格式,满足多样化的文档生成需求。</p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong>Spire.Doc for Python试用下载,请联系Spire授权代理商<span style="color: rgba(35, 111, 161, 1)">慧都科技</span></strong></span></p>
<p style="text-align: center"><strong><span style="color: rgba(230, 126, 35, 1)">加入技术交流Q群(125237868),与更多开发者一起提升文档开发技能</span></strong></p><br><br>
来源:https://www.cnblogs.com/software-Development/p/19021235
頁: [1]
查看完整版本: 国产化Word处理控件Spire.Doc教程:Python提取Word文档中的文本、图片、表格等