io python 读取pdf_Python读取PDF文件--pdfminer
作者使用的是Python3.6版本。
pdfminer在Python2和Python3中的安裝和使用有一定的區別,本文以Python為例。
首先安裝pdfminer
pip install pdfminer3k官網對PDFMiner的介紹如下:
PDFMiner is a tool for extracting information from PDF documents. Unlike other PDF-related tools, it focuses entirely on getting and analyzing text data. PDFMiner allows to obtain the exact location of texts in a page, as well as other information such as fonts or lines. It includes a PDF converter that can transform PDF files into other text formats (such as HTML). It has an extensible PDF parser that can be used for other purposes instead of text analysis.
PDF的格式不是規范的,很多情況下沒有邏輯結構,不能自適應頁面大小的調整。PDFMiner是通過嘗試猜測PDF的布局來重建其結構,有時候效果并不理想。
import importlib import sys import timeimportlib.reload(sys) time1 = time.time()import os.path from pdfminer.pdfparser import PDFParser,PDFDocument from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter from pdfminer.converter import PDFPageAggregator from pdfminer.layout import LTTextBoxHorizontal,LAParams from pdfminer.pdfinterp import PDFTextExtractionNotAlloweddef parse(pdf_path,txt_path):'''解析PDF文本,并保存到TXT文件中'''fp = open(text_path,'rb')# pdf1 = urlopen('http://www.tencent.com/20160321.pdf')#用文件對象創建一個PDF文檔分析器parser = PDFParser(fp)#創建一個PDF文檔doc = PDFDocument()#連接分析器,與文檔對象parser.set_document(doc)doc.set_parser(parser)#提供初始化密碼,如果沒有密碼,就創建一個空的字符串doc.initialize()#檢測文檔是否提供txt轉換,不提供就忽略if not doc.is_extractable:raise PDFTextExtractionNotAllowedelse:#創建PDF,資源管理器,來共享資源rsrcmgr = PDFResourceManager()#創建一個PDF設備對象laparams = LAParams()device = PDFPageAggregator(rsrcmgr,laparams=laparams)#創建一個PDF解釋其對象interpreter = PDFPageInterpreter(rsrcmgr,device)#循環遍歷列表,每次處理一個page內容# doc.get_pages() 獲取page列表for page in doc.get_pages():interpreter.process_page(page)#接受該頁面的LTPage對象layout = device.get_result()# 這里layout是一個LTPage對象 里面存放著 這個page解析出的各種對象# 一般包括LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal 等等# 想要獲取文本就獲得對象的text屬性,for x in layout:if(isinstance(x,LTTextBoxHorizontal)):with open(txt_path,'a') as f:results = x.get_text()print(results)f.write(results +"n")if __name__ == '__main__':pdf_path = './test.pdf'txt_path = './test.txt'parse(pdf_path,txt_path)time2 = time.time()print("總共消耗時間為:",time2-time1)上述代碼只能解析正常的PDF內容,在實際應用場景中,很多PDF文檔可能是加密的,如何處理解密的PDF文件,也是我們需要get的技能。
pydf2這個庫能夠實現對PDF文件進行加密和解密。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的io python 读取pdf_Python读取PDF文件--pdfminer的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 抢首发?爆料称荣耀折叠屏将搭载骁龙8 G
- 下一篇: RISC-V架构国产芯片10连发:4款基