python基于pdfminer庫(kù)提取pdf文字代碼實(shí)例
安裝pdfminer 庫(kù)
windows 下安裝pdfminer3k
pip install pdfminer3k
Liunx 下安裝pdfminer
pip install pdfminer
代碼
from pdfminer.pdfparser import PDFParser, PDFDocument from pdfminer.converter import PDFPageAggregator from pdfminer.layout import LAParams, LTTextBoxHorizontal from pdfminer.pdfinterp import PDFTextExtractionNotAllowed, PDFResourceManager, PDFPageInterpreter def pdfParse(path): """ pdf文字提取 :param path:文件路徑 :return: 每頁(yè)結(jié)果列表 """ fp = open(path, 'rb') # 以二進(jìn)制讀模式打開 # 用文件對(duì)象來(lái)創(chuàng)建一個(gè)pdf文檔分析器 praser = PDFParser(fp) # 創(chuàng)建一個(gè)PDF文檔 doc = PDFDocument() # 連接分析器 與文檔對(duì)象 praser.set_document(doc) doc.set_parser(praser) # 提供初始化密碼 # 如果沒(méi)有密碼 就創(chuàng)建一個(gè)空的字符串 doc.initialize() # 檢測(cè)文檔是否提供txt轉(zhuǎn)換,不提供就忽略 if not doc.is_extractable: raise PDFTextExtractionNotAllowed else: # 創(chuàng)建PDf 資源管理器 來(lái)管理共享資源 rsrcmgr = PDFResourceManager() # 創(chuàng)建一個(gè)PDF設(shè)備對(duì)象 laparams = LAParams() device = PDFPageAggregator(rsrcmgr, laparams=laparams) # 創(chuàng)建一個(gè)PDF解釋器對(duì)象 interpreter = PDFPageInterpreter(rsrcmgr, device) #每頁(yè)文字內(nèi)容 results = [] # 循環(huán)遍歷列表,每次處理一個(gè)page的內(nèi)容 for page in doc.get_pages(): # doc.get_pages() 獲取page列表 interpreter.process_page(page) # 接受該頁(yè)面的LTPage對(duì)象 layout = device.get_result() # 這里layout是一個(gè)LTPage對(duì)象 里面存放著 這個(gè)page解析出的各種對(duì)象 一般包括LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal 等等 想要獲取文本就獲得對(duì)象的text屬性, for x in layout: if isinstance(x, LTTextBoxHorizontal): results.append(x.get_text()) return results
該庫(kù)是根據(jù) 迭代pdf每一頁(yè) 進(jìn)行文字提取, 也可以識(shí)別判斷頁(yè)碼的功能
另外還有一個(gè)pypdf2 庫(kù)也可以識(shí)別但是感覺(jué)不如這個(gè)準(zhǔn)確
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python中斷點(diǎn)調(diào)試pdb包的用法詳解
pdb(python debugger) 是 python 中的一個(gè)命令行調(diào)試包,為 python 程序提供了一種交互的源代碼調(diào)試功能,下面就跟隨小編一起學(xué)習(xí)一下它的具體使用吧2024-01-01Python自定義函數(shù)的創(chuàng)建、調(diào)用和函數(shù)的參數(shù)詳解
這篇文章主要介紹了Python自定義函數(shù)的創(chuàng)建、調(diào)用和函數(shù)的參數(shù)、變量作用域等常見問(wèn)題,需要的朋友可以參考下2014-03-03Python實(shí)現(xiàn)雙進(jìn)程防止單點(diǎn)故障實(shí)例深度探究
在分布式系統(tǒng)中,確保系統(tǒng)的高可用性是至關(guān)重要的,本文將深入探討如何使用Python實(shí)現(xiàn)雙進(jìn)程自我保護(hù)機(jī)制,以應(yīng)對(duì)單點(diǎn)故障,確保系統(tǒng)穩(wěn)定運(yùn)行,將通過(guò)詳實(shí)的示例代碼,介紹雙進(jìn)程自我保護(hù)的原理、實(shí)現(xiàn)步驟以及可能遇到的挑戰(zhàn)2024-01-01Python用Try語(yǔ)句捕獲異常的實(shí)例方法
在本篇文章中小編給大家整理了關(guān)于Python用Try語(yǔ)句如何捕獲異常的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們參考下。2019-06-06基于Python實(shí)現(xiàn)微信自動(dòng)回復(fù)功能
這篇文章主要為大家詳細(xì)介紹了Python如何通過(guò)WechatPCAPI來(lái)實(shí)現(xiàn)微信自動(dòng)回復(fù)的功能,文中的示例代碼講解詳細(xì),快跟隨小編一起動(dòng)手嘗試一下2022-06-06python 實(shí)現(xiàn)Requests發(fā)送帶cookies的請(qǐng)求
這篇文章主要介紹了python 實(shí)現(xiàn)Requests發(fā)送帶cookies請(qǐng)求的方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2021-02-02