首頁 > 軟體

9行Python3程式碼實現批次提取PDF檔案的指定內容

2022-12-09 14:00:06

1、引言

小絲:魚哥, 你有沒有什麼辦法,提取PDF檔案的內容。

小魚:這個還問我??

小絲:哎呀,這個不是被難住了嘛 。

小魚:有啥難得?提示你一下,

小絲:嗯,可以可以。

小魚:去我的博文找,沒記錯的話,有兩種方法提取pdf的文字。

小絲:好嘞, 我這就去…找找…

小絲:魚哥,魚哥~

小魚:怎麼樣,你的這個需求,解決了吧。

小絲:沒呢,我想批次提取指定PDF檔案的內容…

小魚:批…量…

小絲:對啊,是批次,

小魚:這…還挺…

小絲:挺費勁嗎?

小魚:挺好的 ,不費勁, 一口氣,上7樓…

小絲:打住… 說正事! !

小魚:好嘞…

想到提取PDF檔案的內容,我們第一反應就是pypdf,

因為pypdf這個庫我在很多篇文章都介紹過, 還蠻好用的。

但是,今天,我們不使用pypdf,而是使用另一個庫,即:pdfminer。

2、程式碼實戰

2.1 介紹

pdfminer我相信很多同學都沒聽說過,除非,你經常提取/解析PDF檔案的內容,否則,你對ta,只能是陌生。

其實,提取PDF檔案內容解決方案,截止到現在, 只有pypdf 和pdfminer這兩種。
所以, 如果你厭倦了, pypdf,那隻能選擇pdfminer了。

那什麼是pdfminer 呢,或者 pdfminer有什麼神奇之處呢?

定義

PDFMiner是用於從PDF檔案提取資訊的工具;

與其他PDF相關工具不同,它完全專注於獲取和分析文字資料;

功能

PDFMiner允許獲取頁面中文字的確切位置以及其他資訊,例如字型或線條;

它包括一個PDF轉換器,可以將PDF檔案轉換為其他文字格式(例如HTML);

2.2 安裝

由於pdfminer是python 的第三方庫, 所以,需要安裝,

老規矩, 直接pip 安裝

安裝

pip install pdfminer

安裝完成:

因為我們需要用到 pdfminer的high_level 方法,所以

這裡必須要在安裝pdfminer.six模組,否則會報錯:

安裝

pip install pdfminer.six

安裝完成:

其它安裝方式,直接看這兩篇:

《Python3,選擇Python自動安裝第三方庫,從此跟pip說拜拜!!》

《Python3:我低調的只用一行程式碼,就匯入Python所有庫!》

2.3 範例

安裝完成,我們就來寫上程式碼,

我們先來捋順一下思路,主要分3步:

1、遍歷pdf檔案

注:如果資料夾的檔案多個,需要單獨提取目標pdf檔案,否則都會輪巡匹配,費事費力費資源;

2、提取pdf檔案內容

3、根據正則匹配,提取需要的檔案資訊

我們就根據這個思路,來提取"企業基本情況",程式碼如下:

程式碼範例

# -*- coding:utf-8 -*-
# @Time   : 2022-11-30
# @Author : Carl_DJ


from pdfminer import high_level
import re,os

#pdf檔案路徑
#root:資料夾路徑,dirs:資料夾下子目錄名,files:資料夾下的檔案
for root,dirs,files in os.walk('./data/'):
    #遍歷pdf檔案
    for f in files:
        file_name = os.path.join(root,f)
        if file_name.endswith('.pdf'):
            #提取整個 pdf 文字資訊
            text = high_level.extract_text(file_name)
            #提取 pdf檔案中 "企業進本情況:" 後面的資訊,利用正則進行匹配
            regex = r'企業基本情況-(.*?)n'
            qy_base = re.findall(regex,text)
            print(f'輸出資訊:{qy_base}')

pdf檔案

執行結果

3、總結

看到這裡,今天的分享,差不多就該結束了。

解析PDF是一件非常耗時和耗記憶體的工作,因此,pdfminer使用一種稱作Lazy Parsing的策略,減少內耗…

小絲:怪不得, 提到批次提取pdf的檔案內容, 你會猶豫了…

小魚:對啊,因為我們的的測試檔案內容很少,所以對記憶體的消耗相對來說沒那麼驗證,當PDF檔案的內容很多時, 就不得不使用pdfminer了。

到此這篇關於9行Python3程式碼實現批次提取PDF檔案的指定內容的文章就介紹到這了,更多相關Python提取PDF指定內容內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com