最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python解析并讀取PDF文件內(nèi)容的方法

 更新時間:2018年05月08日 10:18:29   作者:開心果汁  
這篇文章主要介紹了Python解析并讀取PDF文件內(nèi)容的方法,結(jié)合實例形式分別描述了Python2.7在win32與win64環(huán)境下實現(xiàn)讀取pdf的相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了Python解析并讀取PDF文件內(nèi)容的方法。分享給大家供大家參考,具體如下:

一、問題描述

利用python,去讀取pdf文本內(nèi)容。

二、效果

三、運行環(huán)境

python2.7

四、需要安裝的庫

pip install pdfminer

五、實現(xiàn)源代碼

代碼1(win64)

# coding=utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import time
time1=time.time()
import os.path
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
result=[]
class CPdf2TxtManager():
  def __init__(self):
    '''''
    Constructor
    '''
  def changePdfToText(self, filePath):
    file = open(path, 'rb') # 以二進制讀模式打開
    #用文件對象來創(chuàng)建一個pdf文檔分析器
    praser = PDFParser(file)
    # 創(chuàng)建一個PDF文檔
    doc = PDFDocument()
    # 連接分析器 與文檔對象
    praser.set_document(doc)
    doc.set_parser(praser)
    # 提供初始化密碼
    # 如果沒有密碼 就創(chuàng)建一個空的字符串
    doc.initialize()
    # 檢測文檔是否提供txt轉(zhuǎn)換,不提供就忽略
    if not doc.is_extractable:
      raise PDFTextExtractionNotAllowed
    # 創(chuàng)建PDf 資源管理器 來管理共享資源
    rsrcmgr = PDFResourceManager()
    # 創(chuàng)建一個PDF設(shè)備對象
    laparams = LAParams()
    device = PDFPageAggregator(rsrcmgr, laparams=laparams)
    # 創(chuàng)建一個PDF解釋器對象
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    pdfStr = ''
    # 循環(huán)遍歷列表,每次處理一個page的內(nèi)容
    for page in doc.get_pages(): # doc.get_pages() 獲取page列表
      interpreter.process_page(page)
      # 接受該頁面的LTPage對象
      layout = device.get_result()
      for x in layout:
        if hasattr(x, "get_text"):
          # print x.get_text()
          result.append(x.get_text())
          fileNames = os.path.splitext(filePath)
          with open(fileNames[0] + '.txt','wb') as f:
            results = x.get_text()
            print(results)
            f.write(results + '\n')
if __name__ == '__main__':
  '''''
   解析pdf 文本,保存到txt文件中
  '''
  path = u'C:/data3.pdf'
  pdf2TxtManager = CPdf2TxtManager()
  pdf2TxtManager.changePdfToText(path)
  # print result[0]
  time2 = time.time()
  print u'ok,解析pdf結(jié)束!'
  print u'總共耗時:' + str(time2 - time1) + 's'

代碼2(win32)

# coding=utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import time
time1=time.time()
import os.path
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFTextExtractionNotAllowed
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfpage import PDFPage
result=[]
class CPdf2TxtManager():
  def __init__(self):
    '''''
    Constructor
    '''
  def changePdfToText(self, filePath):
    file = open(path, 'rb') # 以二進制讀模式打開
    #用文件對象來創(chuàng)建一個pdf文檔分析器
    praser = PDFParser(file)
    # 創(chuàng)建一個PDF文檔
    doc = PDFDocument(praser)
    # 檢測文檔是否提供txt轉(zhuǎn)換,不提供就忽略
    if not doc.is_extractable:
      raise PDFTextExtractionNotAllowed
    # 創(chuàng)建PDf 資源管理器 來管理共享資源
    rsrcmgr = PDFResourceManager()
    # 創(chuàng)建一個PDF設(shè)備對象
    laparams = LAParams()
    device = PDFPageAggregator(rsrcmgr, laparams=laparams)
    # 創(chuàng)建一個PDF解釋器對象
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    pdfStr = ''
    # 循環(huán)遍歷列表,每次處理一個page的內(nèi)容
    for page in PDFPage.create_pages(doc): # doc.get_pages() 獲取page列表
      interpreter.process_page(page)
      # 接受該頁面的LTPage對象
      layout = device.get_result()
      for x in layout:
        if hasattr(x, "get_text"):
          # print x.get_text()
          result.append(x.get_text())
          fileNames = os.path.splitext(filePath)
          with open(fileNames[0] + '.txt','wb') as f:
            results = x.get_text()
            print(results)
            f.write(results + '\n')
if __name__ == '__main__':
  '''''
   解析pdf 文本,保存到txt文件中
  '''
  path = u'C:/36.pdf'
  pdf2TxtManager = CPdf2TxtManager()
  pdf2TxtManager.changePdfToText(path)
  # print result[0]
  time2 = time.time()
  print u'ok,解析pdf結(jié)束!'
  print u'總共耗時:' + str(time2 - time1) + 's'

更多Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python文件與目錄操作技巧匯總》、《Python編碼操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進階經(jīng)典教程

希望本文所述對大家Python程序設(shè)計有所幫助。

相關(guān)文章

最新評論

汉寿县| 孟村| 安平县| 彩票| 青浦区| 庆云县| 左权县| 漳浦县| 南通市| 宝清县| 辽阳县| 新疆| 商洛市| 昆明市| 阳高县| 彰化市| 巴彦县| 利川市| 义马市| 台东市| 修水县| 宝山区| 元江| 延长县| 张家港市| 历史| 承德市| 庐江县| 长丰县| 上栗县| 平乐县| 永胜县| 云安县| 大邑县| 新竹县| 扎赉特旗| 大新县| 海淀区| 乌兰察布市| 西乌珠穆沁旗| 香港|