Python 3.6 中使用pdfminer解析pdf檔案的實現
阿新 • • 發佈:2020-01-09
所使用python環境為最新的3.6版本
一、安裝pdfminer模組
安裝anaconda後,直接可以通過pip安裝
pip install pdfminer3k
如上圖所示安裝成功。
二、在IDE中進行編碼
#!/usr/bin/env python # encoding: utf-8 """ @author: wugang @software: PyCharm @file: prase_pdf.py @time: 2017/3/3 0003 11:16 """ import sys import importlib importlib.reload(sys) 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 PDFTextExtractionNotAllowed ''' 解析pdf 文字,儲存到txt檔案中 ''' path = r'../../data/pdf/阿里巴巴Java開發規範手冊.pdf' def parse(): fp = open(path,'rb') # 以二進位制讀模式開啟 #用檔案物件來建立一個pdf文件分析器 praser = PDFParser(fp) # 建立一個PDF文件 doc = PDFDocument() # 連線分析器 與文件物件 praser.set_document(doc) doc.set_parser(praser) # 提供初始化密碼 # 如果沒有密碼 就建立一個空的字串 doc.initialize() # 檢測文件是否提供txt轉換,不提供就忽略 if not doc.is_extractable: raise PDFTextExtractionNotAllowed else: # 建立PDf 資源管理器 來管理共享資源 rsrcmgr = PDFResourceManager() # 建立一個PDF裝置物件 laparams = LAParams() device = PDFPageAggregator(rsrcmgr,laparams=laparams) # 建立一個PDF直譯器物件 interpreter = PDFPageInterpreter(rsrcmgr,device) # 迴圈遍歷列表,每次處理一個page的內容 for page in doc.get_pages(): # doc.get_pages() 獲取page列表 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(r'../../data/pdf/1.txt','a') as f: results = x.get_text() print(results) f.write(results + '\n') if __name__ == '__main__': parse()
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。