国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python使用pdfminer解析pdf文件的方法示例

2020-02-16 00:14:18
字體:
來源:轉載
供稿:網友

最近要做個從 pdf 文件中抽取文本內容的工具,大概查了一下 python 里可以使用 pdfminer 來實現。下面就看看怎樣使用吧。
PDFMiner是一個可以從PDF文檔中提取信息的工具。與其他PDF相關的工具不同,它注重的完全是獲取和分析文本數據。PDFMiner允許你獲取某一頁中文本的準確位置和一些諸如字體、行數的信息。它包括一個PDF轉換器,可以把PDF文件轉換成HTML等格式。它還有一個擴展的PDF解析器,可以用于除文本分析以外的其他用途。

PDFMiner內置兩個好用的工具:pdf2txt.py和dumppdf.py

pdf2txt.py從PDF文件中提取所有文本內容。但不能識別畫成圖片的文本,這需要特征識別。對于加密的PDF你需要提供一個密碼才能解析,對于沒有提取權限的PDF文檔你得不到任何文本。

dumppdf.py把PDF文件內容變成pseudo-XML格式。這個程序主要用于debug,但是它也可能用于提取一些有意義的內容(比如圖片)。

官方主頁:https://euske.github.io/pdfminer/

其特征有:1、完全使用python編寫。(適用于2.4或更新版本)2、解析,分析,并轉換成PDF文檔。3、PDF-1.7規范的支持。(幾乎)4、中日韓語言和垂直書寫腳本支持。5、各種字體類型(Type1、TrueType、Type3,和CID)的支持。6、基本加密(RC4)的支持。7、PDF與HTML轉換。8、綱要(TOC)的提取。9、標簽內容提取。10、通過分組文本塊重建原始的布局。
如果你的Python有安裝pip模塊,就可以通過命令“python pip install pdfminer”,自動安裝pdfminer。

解析pdf文件用到的類:

PDFParser:從一個文件中獲取數據 PDFDocument:保存獲取的數據,和PDFParser是相互關聯的 PDFPageInterpreter處理頁面內容 PDFDevice將其翻譯成你需要的格式 PDFResourceManager用于存儲共享資源,如字體或圖像。

python的工具,安裝當然是使用pip安裝了。

pip install pdfminer

命令行方式

為了使用方便,pdfminer 提供了一個命令行工具來直接轉換pdf文件,使用方法如下:

pdf2txt.py <path_to_pdf_file>

編程方式

除了命令行方式以外,對于復雜應用場景,pdfminer 也提供了以編程方式來轉換 pdf 文件,主要使用下面幾個類來實現:

PDFParser: 用來解析pdf文件。 PDFDocument:用來保存 PDFParser 解析后的對象。 PDFPageInterpreter:用來處理解析后的文檔頁面內容。 PDFResourceManager:pdf 共享資源管理器,用于存儲共享資源,如字體或圖像。

下面看一個例子:

#!/usr/bin/env python# -*- coding: utf-8 -*-from pdfminer.pdfparser import PDFParserfrom pdfminer.pdfdocument import PDFDocumentfrom pdfminer.pdfpage import PDFPage, PDFTextExtractionNotAllowedfrom pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreterfrom pdfminer.converter import PDFPageAggregatorfrom pdfminer.layout import LAParamsimport StringIOclass 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 contentif __name__ == '__main__':  path = u'/tmp/abc.pdf'  pdf_utils = PDFUtils()  print pdf_utils.pdf2txt(path)            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新龙县| 霞浦县| 康马县| 大关县| 正镶白旗| 天门市| 沽源县| 菏泽市| 江源县| 儋州市| 格尔木市| 齐齐哈尔市| 谢通门县| 阿瓦提县| 若尔盖县| 广水市| 铁岭市| 墨竹工卡县| 沙田区| 汉寿县| 馆陶县| 闸北区| 喜德县| 石棉县| 当雄县| 民乐县| 墨玉县| 高台县| 临高县| 余江县| 中牟县| 夏津县| 清水河县| 教育| 焦作市| 建水县| 黑河市| 长丰县| 云梦县| 铅山县| 定边县|