python獲取word文檔總頁數的兩種方法
最近在搞AI. 遇到了一個問題,就是要進行doc文檔的解析。并且需要展示每個文檔的總頁數。
利用AI. 分別嘗試了chatGPT, 文心一言, github copilot,Kimi 等工具,給出來的答案都不盡如人意。
給的最多的查詢方式就是下面這種。
這個給大家避雷一下。使用python-docx的方式,是沒有辦法獲取文檔總頁數的。 如果想獲取,也只能是獲取一個近似值,大體就是根據每個頁面平均有多少個段落,或者平均有多少行的方式,近似的得到一個結果。完全是不準確的。
那么如果想要獲取總頁數,應該怎么辦呢? 經過一番調研這里給出兩種解決方案,兩種方案也都各有優(yōu)缺點。可能也不一定是完全準確的,但是相比于上面的方式還是要好出很多。
一、使用langchain
langchain是什么,這里就不詳細介紹了,是AI領域當前非常流行的一套框架。 langchain中提供了很多開箱即用的功能,比如文檔解析、文檔拆分, 向量比較、摘要提取等。 在文檔解析中,就有對于word文檔解析的方法,這在個方法中,我們可以間接獲取文檔頁數。
地址:https://www.langchain.com.cn/modules/indexes/document_loaders/examples/word_document
方法:
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這樣一個字段。
所以無論我們使用paged還是使用elements,都可以從返回結果(集合)中通過獲取page_number的最大值,來得到該文檔的總頁數。
局限性: 這種方法也不是沒有任何缺點,但是整理來說還是相對準確的。確定就是有的時候,文檔明明是三頁。但是解析出來的結果可能是兩頁。 我出現(xiàn)過一次,主要是我自己做了測試,第二頁空白比較多的時候,又添加了第三頁。這個時候,第三頁的內容出現(xiàn)在第二頁的解析結果中了。 導致最終識別的結果為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系統(tǒng)做部署服務器。 一種是使用wps+docker desktop的方式。
兩種方式,都有點小缺陷, 但是誤差不大,可接受的就用這兩種方法把,接受不了的,可以按照給的思路,自己去折騰折騰。
到此這篇關于python獲取word文檔的總頁數的兩種方法的文章就介紹到這了,更多相關python獲取word文檔總頁數內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python SQLAlchemy的Mapping與Declarative詳解
這篇文章主要介紹了python SQLAlchemy的Mapping與Declarative詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-07-07MacBook m1芯片采用miniforge安裝python3.9的方法示例
這篇文章主要介紹了MacBook m1芯片采用miniforge安裝python3.9的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04Linux下將Python的Django項目部署到Apache服務器
這篇文章主要介紹了Python的Django項目部署到Apache服務器上的要點總結,文中針對的是wsgi連接方式,需要的朋友可以參考下2015-12-12