欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2018年12月20日 09:22:51   作者:kongxx  
這篇文章主要介紹了python使用pdfminer解析pdf文件的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

PDFMiner內(nèi)置兩個好用的工具:pdf2txt.py和dumppdf.py

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

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

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

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

解析pdf文件用到的類:

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

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

pip install pdfminer

命令行方式

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

pdf2txt.py <path_to_pdf_file>

編程方式

除了命令行方式以外,對于復雜應用場景,pdfminer 也提供了以編程方式來轉換 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)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Python json模塊dumps、loads操作示例

    Python json模塊dumps、loads操作示例

    這篇文章主要介紹了Python json模塊dumps、loads操作,結合實例形式分析了Python使用json模塊針對json數(shù)據(jù)的載入、讀取、打印、編碼轉換等相關操作技巧,需要的朋友可以參考下
    2018-09-09
  • Python3.6使用tesseract-ocr的正確方法

    Python3.6使用tesseract-ocr的正確方法

    今天小編就為大家分享一篇關于Python3.6使用tesseract-ocr的正確方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • python如何將空格分隔輸入兩個數(shù)

    python如何將空格分隔輸入兩個數(shù)

    這篇文章主要介紹了python如何將空格分隔輸入兩個數(shù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • python 每天如何定時啟動爬蟲任務(實現(xiàn)方法分享)

    python 每天如何定時啟動爬蟲任務(實現(xiàn)方法分享)

    python 每天如何定時啟動爬蟲任務?今天小編就為大家分享一篇python 實現(xiàn)每天定時啟動爬蟲任務的方法。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • numpy使用技巧之數(shù)組過濾實例代碼

    numpy使用技巧之數(shù)組過濾實例代碼

    這篇文章主要介紹了numpy使用技巧之數(shù)組過濾實例代碼,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • Python系統(tǒng)監(jiān)控模塊psutil功能與經(jīng)典用法分析

    Python系統(tǒng)監(jiān)控模塊psutil功能與經(jīng)典用法分析

    這篇文章主要介紹了Python系統(tǒng)監(jiān)控模塊psutil功能與經(jīng)典用法,簡單講述了psutil模塊的功能、原理并結合具體實例形式分析了Python使用psutil模塊針對CPU、內(nèi)存、磁盤、網(wǎng)絡等信息的讀取相關操作技巧,需要的朋友可以參考下
    2018-05-05
  • django站點管理詳解

    django站點管理詳解

    這篇文章主要介紹了django站點管理詳解,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • python實現(xiàn)指定字符串補全空格、前面填充0的方法

    python實現(xiàn)指定字符串補全空格、前面填充0的方法

    這篇文章主要介紹了python實現(xiàn)指定字符串補全空格、前面填充0的方法 ,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11
  • Python第三方庫jieba庫與中文分詞全面詳解

    Python第三方庫jieba庫與中文分詞全面詳解

    jieba庫是一款優(yōu)秀的Python第三方中文分詞庫,jieba支持三種分詞模式:精確模式、全模式和搜索引擎模式,下面這篇文章主要給大家介紹了關于Python第三方庫jieba庫與中文分詞的相關資料,需要的朋友可以參考下
    2022-07-07
  • Python random模塊(獲取隨機數(shù))常用方法和使用例子

    Python random模塊(獲取隨機數(shù))常用方法和使用例子

    這篇文章主要介紹了Python random模塊(獲取隨機數(shù))常用方法和使用例子,需要的朋友可以參考下
    2014-05-05

最新評論