PDFMiner:python 读取 pdf 内容
生活随笔
收集整理的這篇文章主要介紹了
PDFMiner:python 读取 pdf 内容
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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文件進行加密和解密。
總結
以上是生活随笔為你收集整理的PDFMiner:python 读取 pdf 内容的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于深度学习的信息抽取技术
- 下一篇: 连载 | 知识图谱发展报告 2018 -