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删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

Python包管理工具pip的升级指南

《Python包管理工具pip的升级指南》本文全面探讨Python包管理工具pip的升级策略,从基础升级方法到高级技巧,涵盖不同操作系统环境下的最佳实践,我们将深入分析pip的工作原理,介绍多种升级方... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

Python中将嵌套列表扁平化的多种实现方法

《Python中将嵌套列表扁平化的多种实现方法》在Python编程中,我们常常会遇到需要将嵌套列表(即列表中包含列表)转换为一个一维的扁平列表的需求,本文将给大家介绍了多种实现这一目标的方法,需要的朋... 目录python中将嵌套列表扁平化的方法技术背景实现步骤1. 使用嵌套列表推导式2. 使用itert

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach