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

在现代办公场景中,Word文档已成为信息存储与交流的重要载体,承载着关键的业务数据、结构化表格、可视化图表以及协作批注等重要内容。面对日益增长的文档处理需求,传统的人工操作方式已难以满足效率与准确性的双重标准。采用Python实现Word文档内容的自动化解析,不仅能显著提升处理效率、降低人为错误率,还能实现数据集成、内容迁移及智能分析等多种应用。

E-iceblue旗下Spire系列产品是国产文档处理领域的优秀产品,支持国产化,帮助企业高效构建文档处理的应用程序。本文将详细介绍如何使用 Spire.Doc for Python 库在 Python 中读取 Word 文档(包括 .doc 和 .docx 格式),并演示如何提取文本、图片、表格、批注、列表以及文档的元数据等信息。无论您是进行文档内容抓取、自动化报告生成,还是开发文档解析工具,本教程都将提供清晰的代码示例和实用指导。

Spire.Doc for Python试用下载

为什么使用 Python 读取 Word 文档?

Python 作为一门灵活且功能强大的编程语言,广泛应用于自动化、数据处理及内容分析等领域。使用 Python 读取 Word 文档,可以实现以下重要应用:

  • 批量提取数据:从报告、合同、简历等文档中快速抓取关键信息,无需手工复制粘贴。
  • 结构化内容解析:将文本、表格和图片等内容整理成数据库或分析模型,便于后续处理。
  • 自动化工作流集成:将 Word 文档读取功能嵌入到 Web 服务、API 或后台系统,实现端到端自动化。
  • 支持多格式文档处理:同时兼容现代 .docx 和传统 .doc 文件,保证业务场景的全面覆盖。

安装 Python Word 文档解析库

要在 Python 中读取 Word 文档,首先需要安装支持 .doc 和 .docx 格式的解析库。Spire.Doc for Python 是一款功能完善且独立于 Microsoft Office 的第三方库,支持提取文本、图片、表格、批注、列表及元数据等多种内容。

通过以下命令即可安装 Spire.Doc:

pip install Spire.Doc

安装完成后,即可在 Python 代码中导入并使用 Spire.Doc 进行 Word 文档的读取和处理。

使用 Python 读取 Word 文档中文本

提取文本是解析 Word 文档的基础需求。根据不同场景,你可能需要获取整篇文档的全部文本,或仅针对特定节、段落进行读取。

获取整个文档的文本

在文档管理系统中,提取全文文本有助于建立搜索索引,使用户能够通过关键词快速定位文档内容,从而提升查询效率和使用体验。

Spire.Doc 提供了 Document.GetText() 方法,可一次性提取 Word 文档中的所有文字信息,涵盖正文、表格及列表等内容。

以下示例展示了如何加载 Word 文档,获取全文文本,并将其保存为独立的文本文件,便于后续处理与分析:

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()

获取特定节或段落的文本

在许多结构化文档(如报告、合同或说明书)中,内容通常被划分为多个节或段落。若只需提取文档中某一部分的文本信息,可以直接访问指定节,并逐段读取内容,实现更具针对性的处理。

以下示例展示了如何访问 Word 文档中的指定节,并提取其中所有段落的文本内容:

from spire.doc import *# 加载 .docx 或 .doc 文件
document = Document()
document.LoadFromFile("示例.docx")# 访问指定节
section = document.Sections[0]# 获取该节段落文本
with open("output/节文本.txt", "w", encoding="utf-8") as file:for paragraph in section.Paragraphs:file.write(paragraph.Text + "\n")document.Close()

使用 Python 读取 Word 文档中的特定元素

除了纯文本,Word 文档中还可能包含图片、表格、批注、列表及元数据等多种元素。Spire.Doc 提供丰富且便捷的接口,帮助开发者高效地提取这些内容,实现对文档结构和数据的全面访问。

提取图片

Word 文档中常包含图片元素,例如公司 Logo、插图、图表等。若需提取这些图片以便进行分析、存档或再利用,可通过遍历文档结构并识别图片对象(DocPicture)来实现。

以下是提取 Word 文档中所有图片并将其保存为本地文件的完整示例:

import queue
from spire.doc 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 NonedataBytes = 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()

获取表格数据

在 Word 文档中,表格常用于组织结构化数据,如报表或物品清单。使用 Spire.Doc,开发者可以遍历文档中的所有表格,访问表格中的每个单元格,并提取单元格的内容。

以下代码展示了如何提取Word文档中所有表格的数据,并将结果保存为文本文件:

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[s]tables = section.Tablesfor i in range(tables.Count):table = tables[i]table_data = ""for j in range(table.Rows.Count):row = table.Rows[j]for k in range(row.Cells.Count):cell = row.Cells[k]cell_text = ""for p in range(cell.Paragraphs.Count):para_text = cell.Paragraphs[p].Textcell_text += para_text + " "table_data += cell_text.strip()if k < 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()

读取列表

Word 文档中的项目列表(如编号列表和项目符号列表)常用于展示条款、步骤或要点等结构化内容。借助 Spire.Doc,开发者可以轻松识别并提取文档中的列表。

以下代码示例展示了如何加载 Word 文件,查找所有列表项,并将项目编号(如数字或符号)和其对应的文本内容写入本地文本文件:

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[s]# 遍历节中的段落for p in range(section.Paragraphs.Count):paragraph = section.Paragraphs[p]# 找到列表,提取其内容并保存至文本文件if paragraph.ListFormat.ListType != ListType.NoList:output_file.write(paragraph.ListText + paragraph.Text + "\n")document.Close()

提取批注

Word 支持添加批注,用于提供修改建议或评论。通过访问 Comments 集合,可以获取文档中所有批注的信息,包括批注作者和具体内容,便于实现审阅流程的自动化管理。

以下代码展示了如何提取所有批注,包括批注作者与内容,并保存到文本文件中:

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[i]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[j]comment_text += paragraph.Text + "\n"output_file.write(f"内容: {comment_text.strip()}\n\n")document.Close()

获取元数据(文档属性)

Word 文档通常包含作者、标题、主题、关键字等元数据信息,这些数据保存在文档的 BuiltinDocumentProperties 属性中。提取这些属性有助于文档的归档管理、分类整理以及搜索优化。

以下示例代码展示了如何读取 Word 文档的标题、作者、主题等属性,并将其保存到本地文本文件:

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()

总结

使用 Python 读取 Word 文档,不仅能够显著提升文档处理效率,还能实现数据提取与自动化工作的深度集成。通过 Spire.Doc for Python,开发者可以轻松完成 .doc 和 .docx 文件中的文本提取、表格读取、图片导出、批注解析、列表识别以及元数据获取等多种常见操作。

除了读取内容,Spire.Doc 还支持创建和编辑 Word 文档、设置样式格式、插入图片、执行文档合并,以及将 Word 转换为 PDF和图片等格式,满足从读取到输出的全流程需求,适用于报告生成、合同解析、批量文档处理等多种业务场景。

常见问题解答

Q1:Python 如何读取 Word(.doc/.docx)文档内容?

A1:可以使用 Spire.Doc for Python 来读取 Word 文件。该库支持加载 .doc 和 .docx 格式,并提取文档中的文本、图片、表格、批注等内容。

Q2:使用 Spire.Doc for Python 是否需要安装 Microsoft Office?
A2:不需要。Spire.Doc 是一款独立运行的 Word 处理库,无需安装 Microsoft Word 或 Office ,即可在 Python 项目中实现 Word 文件的读取与编辑功能。

Q3:除了读取 Word 内容,Spire.Doc 是否支持写入和生成 Word 文件?
A3:支持。Spire.Doc for Python 不仅可以读取 Word 文档内容,还支持以编程方式创建、编辑和保存 Word 文件。用户可以添加段落、设置样式、插入图片和表格,甚至将 Word 转换为 PDF 或图片格式,满足多样化的文档生成需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/92492.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/92492.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring IOC 原理

Spring IoC&#xff08;控制反转&#xff09;是Spring框架的核心机制&#xff0c;其原理是通过容器管理对象生命周期和依赖关系&#xff0c;实现解耦。 1. 控制反转&#xff08;IoC&#xff09;核心思想 传统模式&#xff1a;对象主动创建依赖&#xff08;如new Service()&…

VSCode:基础使用 / 使用积累

官网 Visual Studio Code - Code Editing. Redefined 记录一、更新依赖 尝试删除yarn.lock文件 记录二、“解决冲突”的方式变了 更新后&#xff0c;“解决冲突”的方式变了&#xff0c;有的时候能选中两者&#xff0c;有的时候不能 现在又更新了&#xff0c;回复到了原来…

tcp 确认应答和超时时间

1. 确认应答之间的时间&#xff08;RTT&#xff09;这是指 从发送方发送数据到接收方返回确认&#xff08;ACK&#xff09;之间的时间。它反映的是数据传输的 往返延迟。例如&#xff0c;发送方发送一个数据包&#xff0c;接收方收到后&#xff0c;回传一个确认包&#xff08;A…

图的应用-最短路径

最短路径的典型用途&#xff1a;交通网络的问题——从甲地到乙地之间是否有公路连通&#xff1f;在有多条通路的情况下&#xff0c;哪一条路最短&#xff1f;交通网络用有向网来表示&#xff1a;顶点——表示地点&#xff0c;弧——表示两个地点有路连通&#xff0c;弧上的权值…

【qt5_study】1.Hello world

模板 作为初学者我们选择第一个Application(Qt)和 Qt Widgets Application,所谓的模板就是 Qt为了方便开发程序,在新建工程时可以让用户基于一种模板来编写程序,包括 cpp文件, ui文件都已经快速的创建,而不用用户手动创建这些文件。 基类 这里默认选择的基类为 QMainWin…

项目构想|文生图小程序

Date: August 4, 2025项目介绍 &#x1f44b;&#xff0c;我们通过 Vibe Coding 做一个文字生成图片的小程序。 我们会从需求分析、技术选型、UI设计、项目构筑到最后打包&#xff0c;一路尝试 Vibe Coding 实现。 创建项目 创建文件夹&#xff1a;ai-pic-mini-app 采用 Git 进…

TiDB/MongoDB/Taosdb存储引擎概览

数据库类型存储引擎数据结构源码位置tidbRockDBLSM树https://github.com/facebook/rocksdbmongodbWiredTigerB 树/LSM树https://github.com/wiredtiger/wiredtigerTDengineTSDBBRINhttps://github.com/taosdata/TDengine 1、tidb存储引擎概览 LSM树数据结构描述LSM树(Log Str…

qt窗口--01

文章目录qt窗口--01窗口概览菜单栏工具栏状态栏浮动窗口子窗口对话框model结语很高兴和大家见面&#xff0c;给生活加点impetus&#xff01;&#xff01;开启今天的编程之路&#xff01;&#xff01; 作者&#xff1a;٩( ‘ω’ )و260 我的专栏&#xff1a;qt&#xff0c;Li…

Neo4j 社区版 Mac 安装教程

最近用到了nebulagraph图数据库做金融反欺诈项目&#xff0c;虽然nebula属于分布式架构&#xff0c;但依然感觉nebula使用不太顺手&#xff0c;这里顺便研究一下neo4j这款数据库如何&#xff0c;这里先从安装开始&#xff1f; 一、 准备工作 确认 Java 版本要求&#xff1a; N…

Android Studio(2025.1.2)Gemini Agent 使用指南

Android Studio&#xff08;2025.1.2&#xff09;Gemini Agent 使用指南 文章目录Android Studio&#xff08;2025.1.2&#xff09;Gemini Agent 使用指南1. 什么是 Gemini Agent&#xff1f;2. 如何启用和配置 Gemini Agent2.1 获取 API Key2.2 在 Android Studio 中配置3. 实…

计算机视觉--opencv(代码详细教程)

在计算机视觉的广袤领域中&#xff0c;OpenCV 是一座极为关键的里程碑。无论是在前沿的学术研究&#xff0c;还是在蓬勃发展的工业界&#xff0c;OpenCV 凭借其强大的功能与高效的性能&#xff0c;为开发者提供了丰富的图像处理和计算机视觉算法&#xff0c;助力无数项目落地。…

Centos6停止服务后yum改用阿里云

环境: OS:Centos 6.9 1.进入到yum配置目录 cd /etc/yum.repos.d 2.备份 cp CentOS-Base.repo CentOS-Base.repo.bk 3.下载 wget -O CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-6.repo 问题1: 因为Centos-6早就停止了更新维护&#xff0c;阿里云镜像网站将其仓库…

putty+Xming(XLaunch) 远程登录VirtualBox中的Ubuntu24.04,显示图形化(GUI)界面

测试环境&#xff1a;VirtualBox 7,Ubuntu24.04 desktop,Ubuntu24.04 Server(no desktop)&#xff0c;均测试成功。 一、先测试putty远程登录VirtualBox中的Ubuntu&#xff0c;可以使用ssh、Telnet 等协议。参见拙文《ssh连接VirtualBox中的Ubuntu24.04&#xff08;win11、put…

SpringBoot微头条实战项目

一、项目概述 微头条是一个基于现代技术栈构建的新闻发布和浏览平台&#xff0c;旨在为用户提供便捷的新闻阅读体验和高效的新闻管理功能。该项目通过前后端分离的架构设计&#xff0c;实现了用户注册、登录、新闻浏览、搜索、发布、修改和删除等功能&#xff0c;同时通过JWT技…

如何给电脑换个ip地址?电脑换ip几种方法

更换电脑的IP地址的方法取决于你的具体需求和网络环境&#xff08;是换本地局域网IP还是换对外公网IP&#xff09;。以下是几种常见的方法&#xff1a; 一、更换本地局域网IP地址&#xff08;在同一个网络内&#xff09; 这个IP地址通常由你的路由器&#xff08;或公司的网络管…

Pytest项目_day04(Python做接口请求)

Requests包 在python中&#xff0c;可以使用requests包&#xff0c;用于做接口请求和接口测试request支持http和https简单的get函数调用如下&#xff1a;r.jsonr.status_coder.textget函数的带params用法post函数的带params用法 post也可以和get一样在url中传入参数在requests包…

Flink与Kafka核心源码详解-目录

Flink是Apache软件基金会下开源的分布式流批一体计算框架&#xff0c;具备实时流计算和高吞吐批处理计算的大数据计算能力。本专栏内容为Flink源码解析的记录与分享。 本文解析的Flink源码版本为&#xff1a;flink-1.19.0 以下为Flink-1.19.0-完整源码详解的目录导航。 Flink-…

【VLLM篇】:原理-实现

1、VLLM vLLM是一个建立在【PagedAttention】之上的高吞吐的【分布式服务引擎】&#xff0c;目标是【提高吞吐量】、【提高内存利用率】&#xff08;kv-cache内存利用率高达96%&#xff09;&#xff0c;它的内存管理分配方式从【固定分配】改进为【分页管理】&#xff0c;类似操…

什么是 TcpCommunicationSpi

&#x1f9e9; 一、核心定位&#xff1a;什么是 TcpCommunicationSpi&#xff1f; /*** <tt>TcpCommunicationSpi</tt> is default communication SPI which uses* TCP/IP protocol and Java NIO to communicate with other nodes.*/翻译&#xff1a;TcpCommunicat…

【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 词云图-微博评论用户词云图实现

大家好&#xff0c;我是java1234_小锋老师&#xff0c;最近写了一套【NLP舆情分析】基于python微博舆情分析可视化系统(flaskpandasecharts)视频教程&#xff0c;持续更新中&#xff0c;计划月底更新完&#xff0c;感谢支持。今天讲解词云图-微博评论用户词云图实现 视频在线地…