1. 程式人生 > 程式設計 >Python 3.6 中使用pdfminer解析pdf檔案的實現

Python 3.6 中使用pdfminer解析pdf檔案的實現

所使用python環境為最新的3.6版本

一、安裝pdfminer模組

安裝anaconda後,直接可以通過pip安裝

pip install pdfminer3k

這裡寫圖片描述

如上圖所示安裝成功。

二、在IDE中進行編碼

#!/usr/bin/env python
# encoding: utf-8

"""
@author: wugang
@software: PyCharm
@file: prase_pdf.py
@time: 2017/3/3 0003 11:16
"""
import sys
import importlib
importlib.reload(sys)

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 PDFTextExtractionNotAllowed

'''
 解析pdf 文字,儲存到txt檔案中
'''
path = r'../../data/pdf/阿里巴巴Java開發規範手冊.pdf'
def parse():
  fp = open(path,'rb') # 以二進位制讀模式開啟
  #用檔案物件來建立一個pdf文件分析器
  praser = PDFParser(fp)
  # 建立一個PDF文件
  doc = PDFDocument()
  # 連線分析器 與文件物件
  praser.set_document(doc)
  doc.set_parser(praser)

  # 提供初始化密碼
  # 如果沒有密碼 就建立一個空的字串
  doc.initialize()

  # 檢測文件是否提供txt轉換,不提供就忽略
  if not doc.is_extractable:
    raise PDFTextExtractionNotAllowed
  else:
    # 建立PDf 資源管理器 來管理共享資源
    rsrcmgr = PDFResourceManager()
    # 建立一個PDF裝置物件
    laparams = LAParams()
    device = PDFPageAggregator(rsrcmgr,laparams=laparams)
    # 建立一個PDF直譯器物件
    interpreter = PDFPageInterpreter(rsrcmgr,device)

    # 迴圈遍歷列表,每次處理一個page的內容
    for page in doc.get_pages(): # doc.get_pages() 獲取page列表
      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(r'../../data/pdf/1.txt','a') as f:
            results = x.get_text()
            print(results)
            f.write(results + '\n')

if __name__ == '__main__':
  parse()

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。