python如何获取word文档的总页数

2024-03-29 16:12
文章标签 python 文档 获取 word 页数

本文主要是介绍python如何获取word文档的总页数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近在搞AI. 遇到了一个问题,就是要进行doc文档的解析。并且需要展示每个文档的总页数。

利用AI. 分别尝试了chatGPT, 文心一言, github copilot,Kimi 等工具,给出来的答案都不尽如人意。

给的最多的查询方式就是下面这种。

image.png

这个给大家避雷一下。使用python-docx的方式,是没有办法获取文档总页数的。 如果想获取,也只能是获取一个近似值,大体就是根据每个页面平均有多少个段落,或者平均有多少行的方式,近似的得到一个结果。完全是不准确的。

那么如果想要获取总页数,应该怎么办呢? 经过一番调研这里给出两种解决方案,两种方案也都各有优缺点。可能也不一定是完全准确的,但是相比于上面的方式还是要好出很多。

一、 使用langchain

langchain是什么,这里就不详细介绍了,是AI领域当前非常流行的一套框架。 langchain中提供了很多开箱即用的功能,比如文档解析、文档拆分, 向量比较、摘要提取等。 在文档解析中,就有对于word文档解析的方法,这在个方法中,我们可以间接获取文档页数。

地址: www.langchain.com.cn/modules/ind…

方法:

word_path = '/xxx/xxx.docx' 
loader = UnstructuredWordDocumentLoader(word_path, mode="paged") 
docs = loader.load_and_split(texts_splitter) 
for doc in docs: print(doc)

这里的mode可以选择paged,也可以使用elements 一个是按照页进行分割,一个是按照元素做分割。那么怎么获取页数呢,在返回的元素中,就可以找到page_number这样一个字段。

image.png

所以无论我们使用paged还是使用elements,都可以从返回结果(集合)中通过获取page_number的最大值,来得到该文档的总页数。

局限性: 这种方法也不是没有任何缺点,但是整理来说还是相对准确的。确定就是有的时候,文档明明是三页。但是解析出来的结果可能是两页。 我出现过一次,主要是我自己做了测试,第二页空白比较多的时候,又添加了第三页。这个时候,第三页的内容出现在第二页的解析结果中了。 导致最终识别的结果为2.

2. 没啥好办法,word2pdf

的确,没啥好的办法了,只能先把word转换为pdf, 然后获取pdf的页数。 pdf的页数获取还是很简单的,很多pdf相关工具,都有这个功能,也就一行代码的事。给一个例子吧:

from fitz import fitz doc = fitz.open(pdf_path) 
print(doc.page_count)

问题主要在于word如何转为pdf, 我这里使用的是libreOffice. 不同的平台有不同平台的安装包。 具体的使用,这里就不详细介绍了。

局限性 主要局限性就是平台限制, 比如我们的文档通常是在windows上, 而部署平台一般是在linux上,相当于libreOffice要装在linux上,这个时候,由于平台不同,转换出来的pdf页数可能也会有一些差距,都一页少一页这类的。 有没有好的方案呢。 两种,一种是用windows系统做部署服务器。 一种是使用wps+docker desktop的方式。

两种方式,都有点小缺陷, 但是误差不大,可接受的就用这两种方法把,接受不了的,可以按照给的思路,自己去折腾折腾。

好了,感谢关注,谢谢支持。

这篇关于python如何获取word文档的总页数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/859044

相关文章

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

Python实现精确小数计算的完全指南

《Python实现精确小数计算的完全指南》在金融计算、科学实验和工程领域,浮点数精度问题一直是开发者面临的重大挑战,本文将深入解析Python精确小数计算技术体系,感兴趣的小伙伴可以了解一下... 目录引言:小数精度问题的核心挑战一、浮点数精度问题分析1.1 浮点数精度陷阱1.2 浮点数误差来源二、基础解决

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方