一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python解析并讀取PDF文件內容的方法

Python解析并讀取PDF文件內容的方法

2021-02-19 00:17開心果汁 Python

這篇文章主要介紹了Python解析并讀取PDF文件內容的方法,結合實例形式分別描述了Python2.7在win32與win64環境下實現讀取pdf的相關操作技巧,需要的朋友可以參考下

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

一、問題描述

利用python,去讀取pdf文本內容。

Python解析并讀取PDF文件內容的方法

二、效果

Python解析并讀取PDF文件內容的方法

三、運行環境

python2.7

四、需要安裝的庫

?
1
pip install pdfminer

五、實現源代碼

代碼1(win64)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# 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') # 以二進制讀模式打開
    #用文件對象來創建一個pdf文檔分析器
    praser = PDFParser(file)
    # 創建一個PDF文檔
    doc = PDFDocument()
    # 連接分析器 與文檔對象
    praser.set_document(doc)
    doc.set_parser(praser)
    # 提供初始化密碼
    # 如果沒有密碼 就創建一個空的字符串
    doc.initialize()
    # 檢測文檔是否提供txt轉換,不提供就忽略
    if not doc.is_extractable:
      raise PDFTextExtractionNotAllowed
    # 創建PDf 資源管理器 來管理共享資源
    rsrcmgr = PDFResourceManager()
    # 創建一個PDF設備對象
    laparams = LAParams()
    device = PDFPageAggregator(rsrcmgr, laparams=laparams)
    # 創建一個PDF解釋器對象
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    pdfStr = ''
    # 循環遍歷列表,每次處理一個page的內容
    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結束!'
  print u'總共耗時:' + str(time2 - time1) + 's'

代碼2(win32)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# 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') # 以二進制讀模式打開
    #用文件對象來創建一個pdf文檔分析器
    praser = PDFParser(file)
    # 創建一個PDF文檔
    doc = PDFDocument(praser)
    # 檢測文檔是否提供txt轉換,不提供就忽略
    if not doc.is_extractable:
      raise PDFTextExtractionNotAllowed
    # 創建PDf 資源管理器 來管理共享資源
    rsrcmgr = PDFResourceManager()
    # 創建一個PDF設備對象
    laparams = LAParams()
    device = PDFPageAggregator(rsrcmgr, laparams=laparams)
    # 創建一個PDF解釋器對象
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    pdfStr = ''
    # 循環遍歷列表,每次處理一個page的內容
    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結束!'
  print u'總共耗時:' + str(time2 - time1) + 's'

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

原文鏈接:https://blog.csdn.net/u013421629/article/details/72764737

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 好吊色青青青国产综合在线观看 | 欧美成人三级伦在线观看 | julia ann多人乱战| 97se狠狠狠狠狼亚洲综合网 | 色多多视频在线 | 欧美一区二区三区四区五区六区 | 暖暖日本高清 | 五月桃花网婷婷亚洲综合 | 国产精品国产精品国产三级普 | 四虎成人国产精品视频 | 性德国高清xxxxbbbb | 三级全黄裸体 | 国产一卡二卡四卡免费 | 日本视频高清免费观看xxx | 3d美女触手怪爆羞羞漫画 | 天天色一色 | 国产自产2023最新麻豆 | 日本免费久久久久久久网站 | 国产精品视频自拍 | 婷婷九月 | 免费看视频网站 | 97se亚洲国产综合自在线观看 | 日朝欧美亚洲精品 | 日韩欧美亚洲国产高清在线 | 欧美人禽杂交av片 | 禁忌第一季第3季 | 国产一级片在线 | 亚洲日本在线观看网址 | 亚洲成在人网站天堂一区二区 | 免费毛片在线观看 | 色综合中文字幕天天在线 | 2019自拍偷拍视频 | 99视频免费 | 91亚洲视频在线观看 | 欧美一级特黄刺激大片视频 | 国产成人精品免费久久久久 | 精品国产自在在线在线观看 | 亚洲福利精品电影在线观看 | 98pao强力打造高清免费 | 91麻豆精品国产91久久久 | 韩国久播影院理论片不卡影院 |