怎么在python中使用pdfminer解析pdf文件
怎么在python中使用pdfminer解析pdf文件?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
pdf2txt.py從PDF文件中提取所有文本內(nèi)容。但不能識(shí)別畫成圖片的文本,這需要特征識(shí)別。對(duì)于加密的PDF你需要提供一個(gè)密碼才能解析,對(duì)于沒(méi)有提取權(quán)限的PDF文檔你得不到任何文本。
dumppdf.py把PDF文件內(nèi)容變成pseudo-XML格式。這個(gè)程序主要用于debug,但是它也可能用于提取一些有意義的內(nèi)容(比如圖片)。
官方主頁(yè):https://euske.github.io/pdfminer/
其特征有:1、完全使用python編寫。(適用于2.4或更新版本)2、解析,分析,并轉(zhuǎn)換成PDF文檔。3、PDF-1.7規(guī)范的支持。(幾乎)4、中日韓語(yǔ)言和垂直書寫腳本支持。5、各種字體類型(Type1、TrueType、Type3,和CID)的支持。6、基本加密(RC4)的支持。7、PDF與HTML轉(zhuǎn)換。8、綱要(TOC)的提取。9、標(biāo)簽內(nèi)容提取。10、通過(guò)分組文本塊重建原始的布局。
如果你的Python有安裝pip模塊,就可以通過(guò)命令“python pip install pdfminer”,自動(dòng)安裝pdfminer。
解析pdf文件用到的類:
-
PDFParser:從一個(gè)文件中獲取數(shù)據(jù)
-
PDFDocument:保存獲取的數(shù)據(jù),和PDFParser是相互關(guān)聯(lián)的
-
PDFPageInterpreter處理頁(yè)面內(nèi)容
-
PDFDevice將其翻譯成你需要的格式
-
PDFResourceManager用于存儲(chǔ)共享資源,如字體或圖像。
python的工具,安裝當(dāng)然是使用pip安裝了。
pipinstallpdfminer
命令行方式
為了使用方便,pdfminer 提供了一個(gè)命令行工具來(lái)直接轉(zhuǎn)換pdf文件,使用方法如下:
pdf2txt.py<path_to_pdf_file>
編程方式
除了命令行方式以外,對(duì)于復(fù)雜應(yīng)用場(chǎng)景,pdfminer 也提供了以編程方式來(lái)轉(zhuǎn)換 pdf 文件,主要使用下面幾個(gè)類來(lái)實(shí)現(xiàn):
-
PDFParser: 用來(lái)解析pdf文件。
-
PDFDocument:用來(lái)保存 PDFParser 解析后的對(duì)象。
-
PDFPageInterpreter:用來(lái)處理解析后的文檔頁(yè)面內(nèi)容。
-
PDFResourceManager:pdf 共享資源管理器,用于存儲(chǔ)共享資源,如字體或圖像。
下面看一個(gè)例子:
#!/usr/bin/envpython #-*-coding:utf-8-*- frompdfminer.pdfparserimportPDFParser frompdfminer.pdfdocumentimportPDFDocument frompdfminer.pdfpageimportPDFPage,PDFTextExtractionNotAllowed frompdfminer.pdfinterpimportPDFResourceManager,PDFPageInterpreter frompdfminer.converterimportPDFPageAggregator frompdfminer.layoutimportLAParams importStringIO classPDFUtils(): def__init__(self): pass defpdf2txt(self,path): output=StringIO.StringIO() withopen(path,'rb')asf: praser=PDFParser(f) doc=PDFDocument(praser) ifnotdoc.is_extractable: raisePDFTextExtractionNotAllowed pdfrm=PDFResourceManager() laparams=LAParams() device=PDFPageAggregator(pdfrm,laparams=laparams) interpreter=PDFPageInterpreter(pdfrm,device) forpageinPDFPage.create_pages(doc): interpreter.process_page(page) layout=device.get_result() forxinlayout: ifhasattr(x,"get_text"): content=x.get_text() output.write(content) content=output.getvalue() output.close() returncontent if__name__=='__main__': path=u'/tmp/abc.pdf' pdf_utils=PDFUtils() printpdf_utils.pdf2txt(path)
總結(jié)
以上是生活随笔為你收集整理的怎么在python中使用pdfminer解析pdf文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mpi tcp连接报错_关于WinCC与
- 下一篇: 前端遮罩层实现_css遮罩层怎么做?