python怎么读取pdf文件_Python解析并读取PDF文件内容的方法
本文實例講述了Python解析并讀取PDF文件內容的方法。分享給大家供大家參考,具體如下:
一、問題描述
利用python,去讀取pdf文本內容。
二、效果
三、運行環境
python2.7
四、需要安裝的庫
pip install pdfminer
五、實現源代碼
代碼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') # 以二進制讀模式打開
#用文件對象來創建一個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)
# 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怎么读取pdf文件_Python解析并读取PDF文件内容的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qq经典留言语录精选181个
- 下一篇: 很流行的微信网名女生简单好听107个