您好,登錄后才能下訂單哦!
怎么在python中使用pdfminer解析pdf文件?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
pdf2txt.py從PDF文件中提取所有文本內(nèi)容。但不能識別畫成圖片的文本,這需要特征識別。對于加密的PDF你需要提供一個密碼才能解析,對于沒有提取權(quán)限的PDF文檔你得不到任何文本。
dumppdf.py把PDF文件內(nèi)容變成pseudo-XML格式。這個程序主要用于debug,但是它也可能用于提取一些有意義的內(nèi)容(比如圖片)。
官方主頁:https://euske.github.io/pdfminer/
其特征有:1、完全使用python編寫。(適用于2.4或更新版本)2、解析,分析,并轉(zhuǎn)換成PDF文檔。3、PDF-1.7規(guī)范的支持。(幾乎)4、中日韓語言和垂直書寫腳本支持。5、各種字體類型(Type1、TrueType、Type3,和CID)的支持。6、基本加密(RC4)的支持。7、PDF與HTML轉(zhuǎn)換。8、綱要(TOC)的提取。9、標簽內(nèi)容提取。10、通過分組文本塊重建原始的布局。
如果你的Python有安裝pip模塊,就可以通過命令“python pip install pdfminer”,自動安裝pdfminer。
解析pdf文件用到的類:
PDFParser:從一個文件中獲取數(shù)據(jù)
PDFDocument:保存獲取的數(shù)據(jù),和PDFParser是相互關(guān)聯(lián)的
PDFPageInterpreter處理頁面內(nèi)容
PDFDevice將其翻譯成你需要的格式
PDFResourceManager用于存儲共享資源,如字體或圖像。
python的工具,安裝當然是使用pip安裝了。
pip install pdfminer
命令行方式
為了使用方便,pdfminer 提供了一個命令行工具來直接轉(zhuǎn)換pdf文件,使用方法如下:
pdf2txt.py <path_to_pdf_file>
編程方式
除了命令行方式以外,對于復雜應用場景,pdfminer 也提供了以編程方式來轉(zhuǎn)換 pdf 文件,主要使用下面幾個類來實現(xiàn):
PDFParser: 用來解析pdf文件。
PDFDocument:用來保存 PDFParser 解析后的對象。
PDFPageInterpreter:用來處理解析后的文檔頁面內(nèi)容。
PDFResourceManager:pdf 共享資源管理器,用于存儲共享資源,如字體或圖像。
下面看一個例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- from pdfminer.pdfparser import PDFParser from pdfminer.pdfdocument import PDFDocument from pdfminer.pdfpage import PDFPage, PDFTextExtractionNotAllowed from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter from pdfminer.converter import PDFPageAggregator from pdfminer.layout import LAParams import StringIO class PDFUtils(): def __init__(self): pass def pdf2txt(self, path): output = StringIO.StringIO() with open(path, 'rb') as f: praser = PDFParser(f) doc = PDFDocument(praser) if not doc.is_extractable: raise PDFTextExtractionNotAllowed pdfrm = PDFResourceManager() laparams = LAParams() device = PDFPageAggregator(pdfrm, laparams=laparams) interpreter = PDFPageInterpreter(pdfrm, device) for page in PDFPage.create_pages(doc): interpreter.process_page(page) layout = device.get_result() for x in layout: if hasattr(x, "get_text"): content = x.get_text() output.write(content) content = output.getvalue() output.close() return content if __name__ == '__main__': path = u'/tmp/abc.pdf' pdf_utils = PDFUtils() print pdf_utils.pdf2txt(path)
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。