Word文档处理:用Python轻松提取Word文档图文数据

news2025/1/10 16:15:45

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

  • 从Word文档中提取文本内容并写入TXT文件
  • 从Word文档中提取图片并保存

引入Spire.Doc for Python

使用此工具操作Word文档之前,需要先将其引入到项目中。可以从Spire.Doc for Python官方网站下载,或直接pip安装。代码如下:

pip install Spire.Doc

从Word文档中提取文本内容并写入TXT文件

Spire.Doc for Python中的Document.GetText()方法可以获取Word文档中的所有文本并返回字符串,我们可以将返回的字符串写入到文本文件中进行保存。操作步骤如下:

  • 创建 Document 的对象。
  • 使用 Document.LoadFromFile() 方法载入Word文档。
  • 使用 Document.GetText() 方法获取文档中的文本。
  • 将获取的文本写入文本文件。

代码示例

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

提取结果
从Word文档中提取文本内容

从Word文档中提取图片并保存

提取图片的操作相对复杂一些,需要判断文档元素子对象是否为图片或复合对象,如果是图片则保存,如果是复合对象则继续判断其中的子对象是否为图片。操作步骤如下:
创建文档对象

  • 创建 Document 的对象。
  • 使用 Document.loadFromFile() 方法加载 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()

提取结果
从Word文档中提取图片

以上是关于如何使用Spire.Doc for Python从Word文档中提取文本和图片的介绍。Spire.Doc for Python还支持非常多的文档操作,可以前往官网了解,也可以前往Spire.Doc论坛参与讨论。

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

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

相关文章

使用requests库进行网络爬虫:IP请求错误的解决方法

目录 引言 一、了解requests库 二、遇到的问题 三、解决方法 1、随机化IP地址 2、减少请求频率 3、使用User Agent模拟浏览器行为 4、使用Cookies 四、注意事项 五、使用代理池 六、总结 引言 在利用Python的requests库进行网络爬虫操作时,我们有时会遇…

js 将多张图片合并成一张图片

其实就是将两张图片地址根据canvas组合在一起,我放到项目中因为会存在跨域问题,所以将图片转化成base64,后面还会带随机值,这样可避免图片跨域错误,正常情况下可以直接将图片放到canvas里面。 灵感来源:js…

2022年蓝桥杯STEMA 计算思维组模拟练习试卷8(U10 级,约小学 3-4 年级)

1、北京冬奥会经历 17( ),中国体育代表团收获的金牌数和奖牌数均创历史新高 A、年 B、月 C、天 D、小时 答案:C 2、下面图形的周长是多少 m A、8 B、10 C、15 D、20 答案:D 3、小马虎在练习竖式计算&#xff0…

如何提升软件测试效率?本文为你揭示秘密

在软件开发中,测试是至关重要的一个环节。它能帮助我们发现并修复问题,从而确保我们提供的软件具有高质量。然而,测试过程往往费时费力。那么,有没有方法可以提升我们的软件测试效率呢?答案是肯定的。下面,…

前端uniapp列表下拉到底部加载下一页列表【下拉加载页面/带源码/实战】

目录 一. 图片1.2. 二.list.vue三.uni-load-more.vue最后 一. 图片 1. 2. 二.list.vue <template><view><!--列表--><scroll-view scroll-y"true" class"scroll-Y" :style"height: scrollviewHigh px;" lower-threshol…

怎么用领英开发客户?分享领英开发客户的方法和技巧

对于绝大多数外贸业务员来说&#xff0c;领英(LinkedIn)是一个非常重要且有效的客户开发渠道。在领英这个平台&#xff0c;如果你掌握了开发客户的方法&#xff0c;那么营销推广产品或服务的终极目标就有很大可能的实现&#xff01;其实真正上手并不难&#xff0c;因为平台内有…

07.智慧商城——商品详情页、加入购物车、拦截器封装token

01. 商品详情 - 静态布局 静态结构 和 样式 <template><div class"prodetail"><van-nav-bar fixed title"商品详情页" left-arrow click-left"$router.go(-1)" /><van-swipe :autoplay"3000" change"onCha…

Python在函数中使用列表作为默认参数

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 在学习中遇到的Python的一个坑&#xff0c;那就是使用列表作为默认参数。 我们知道&#xff0c;在Python中&#xff0c;列表&#xff08;list&#xff09;是可变…

融云五大场景化能力,全面赋能金融行业数智化转型

在高知识密度与大数据处理双向奔赴&#xff0c;「金融大模型」如何推动行业进化&#xff1f;一文中&#xff0c;我们分享了大模型在金融行业的赋能实践和未来场景。关注【融云 RongCloud】&#xff0c;了解协同办公平台更多干货。 其中&#xff0c;融云作为通信服务商&#xf…

开放式耳机和骨传导耳机有什么区别?哪款值得入手?

开放式耳机和骨传导耳机最大的区别就是佩戴方式不同和传声方式不同&#xff0c;相比之下骨传导耳机更值得入手一些。但其实骨传导耳机也是开放式耳机&#xff0c;下面先了解下开放式耳机都有哪几种。 一、开放式耳机分哪几种&#xff1f; 开放式耳机分为气传导和骨传导。这两种…

这样跟国外客户说可能更好

所说最近的一些沟通感受&#xff0c;不知道大家有没有这样的感觉&#xff0c;每当客户说让价格便宜点的时候&#xff0c;我们习惯性的去问定量&#xff0c;如果客户的定量的确也增加不上来&#xff0c;我们可能会直接回复“sorry, we can not ..." 其实本身这句话并没有毛…

PVP2 ProVideoPlayer 2.1.6(PVP2多屏幕演示投放软件)

PVP2 ProVideoPlayer2是一款视频播放和管理软件&#xff0c;旨在帮助用户实现多屏幕视频播放和内容管理。它被广泛应用于演出、活动、会议等场合&#xff0c;可以同时播放多个视频、图像和音频文件&#xff0c;并提供强大的控制和管理功能。 PVP2 ProVideoPlayer2具有直观的用…

使用express连接MySQL数据库编写基础的增、删、改、查、分页等接口

使用express连接MySQL数据库编写基础的增、删、改、查、分页接口 安装express-generator生成器 cnpm install -g express-generator通过生成器创建项目 express peifang-server切换至serverAPI目录 cd peifang-server下载所需依赖 cnpm install 运行项目 npm start访问项…

uniapp 手动调用form表单submit事件

背景&#xff1a; UI把提交的按钮弄成了图片&#xff0c;之前的button不能用了。 <button form-type"submit">搜索</button> 实现&#xff1a; html&#xff1a; 通过 this.$refs.fd 获取到form的vue对象。手动调用里面的_onSubmit()方法。 methods:…

掌握苏宁API,一键获取商品详情,解锁无尽商业可能

苏宁的API接口可以用于获取商品详情。以下是一个示例的API接口&#xff0c;通过商品ID获取商品详情&#xff1a; https://open.suning.com/api/content/product/getById?productId商品ID&appKey你的应用密钥&sign你的签名&formatjson 在上面的接口中&#xff0c…

无人智能货柜:引领便捷购物新体验

无人智能货柜&#xff1a;引领便捷购物新体验 无人智能货柜利用人工智能技术&#xff0c;将传统货架与电子商务相结合&#xff0c;形成智能销售终端。其采用先拿货后付款的购物模式&#xff0c;用户只需扫码、拿货、关门三个简洁流畅的步骤&#xff0c;极大地提升了消费者的购物…

文心一言 VS 讯飞星火 VS chatgpt (137)-- 算法导论11.3 3题

三、用go语言&#xff0c;考虑除法散列法的另一种版本&#xff0c;其中 h(k) k mod m&#xff0c;m 2 p − 1 2^p-1 2p−1&#xff0c;k为按基数 2 p 2^p 2p 表示的字符串。试证明:如果串可由串 y 通过其自身的字符置换排列导出&#xff0c;则x和y具有相同的散列值。给出一个…

Python基础入门---conda 如何管理依赖包以及复制相同环境的

文章目录 创建虚拟环境:创建虚拟环境并指定Python版本:安装依赖包:从环境导出依赖包清单:从依赖包清单创建环境:复制环境:移植环境:在Conda中,你可以使用conda create命令来创建和管理虚拟环境,而使用conda install命令来安装和管理依赖包。以下是一些基本的命令和步骤…

工业镜头中的远心镜头与普通镜头的光路

普通镜头&#xff1a; 主光线与镜头光轴有角度&#xff0c;工件上下移动时&#xff0c;像的大小有变化。 FOV&#xff1e;镜头前端直径。 物方远心镜头&#xff1a; 物方主光线平行于光轴&#xff0c;物距发生改变时&#xff0c;像高不会发生改变&#xff0c;测得的物体尺寸大…

技术实践|高斯集群服务器双缺省网关故障分析

导语&#xff1a;当前国产化数据库使用范围越来越广泛&#xff0c;在GaussDB数据库的使用过程中难免会遇到一些问题&#xff0c;有的问题是由于在安装过程中没有注意细节而产生的&#xff0c;多数隐患问题都是在特定场景下才会暴露出来&#xff0c;且暴露的时间未知&#xff0c…