python讀取pdf格式文檔的實(shí)現(xiàn)代碼
python讀取pdf文檔
一、 準(zhǔn)備工作
安裝對(duì)應(yīng)的庫 pip install pdfminer3k pip install pdfminer.six
二、部分變量的含義
PDFDocument(pdf文檔對(duì)象)
PDFPageInterpreter(解釋器)
PDFParser(pdf文檔分析器)
PDFResourceManager(資源管理器)
PDFPageAggregator(聚合器)
LAParams(參數(shù)分析器)
三、PDFMiner類之間的關(guān)系

PDFMiner的相關(guān)文檔(點(diǎn)擊跳轉(zhuǎn))
四、代碼實(shí)現(xiàn)
#!/usr/bin/env python # -*- coding:utf-8 -*- # datetime:2021/3/17 12:12 # software: PyCharm # version: python 3.9.2 def changePdfToText(filePath): """ 解析pdf 文本,保存到同名txt文件中 param: filePath: 需要讀取的pdf文檔的目錄 introduced module: from pdfminer.pdfpage import PDFPage from pdfminer.pdfparser import PDFParser from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter from pdfminer.converter import PDFPageAggregator from pdfminer.layout import LAParams from pdfminer.pdfdocument import PDFDocument, PDFTextExtractionNotAllowed import os.path """ file = open(filePath, 'rb') # 以二進(jìn)制讀模式打開 # 用文件對(duì)象來創(chuàng)建一個(gè)pdf文檔分析器 praser = PDFParser(file) # 創(chuàng)建一個(gè)PDF文檔 doc = PDFDocument(praser, '') # praser :上面創(chuàng)建的pdf文檔分析器 ,第二個(gè)參數(shù)是密碼,設(shè)置為空就好了 # 連接分析器 與文檔對(duì)象 praser.set_document(doc) # 檢測文檔是否提供txt轉(zhuǎn)換,不提供就忽略 if not doc.is_extractable: raise PDFTextExtractionNotAllowed # 創(chuàng)建PDf 資源管理器 來管理共享資源 rsrcmgr = PDFResourceManager() # 創(chuàng)建一個(gè)PDF設(shè)備對(duì)象 laparams = LAParams() device = PDFPageAggregator(rsrcmgr, laparams=laparams) # 創(chuàng)建一個(gè)PDF解釋器對(duì)象 interpreter = PDFPageInterpreter(rsrcmgr, device) result = [] # 內(nèi)容列表 # 循環(huán)遍歷列表,每次處理一個(gè)page的內(nèi)容 for page in PDFPage.create_pages(doc): interpreter.process_page(page) # 接受該頁面的LTPage對(duì)象 layout = device.get_result() for x in layout: if hasattr(x, "get_text"): result.append(x.get_text()) fileNames = os.path.splitext(filePath) # 分割 # 以追加的方式打開文件 with open(fileNames[0] + '.txt', 'a', encoding="utf-8") as f: results = x.get_text() # print(results) 這個(gè)句可以取消注釋就可以在控制臺(tái)將所有內(nèi)容輸出了 f.write(results) # 寫入文件 # 調(diào)用示例 : # path = u'E:\\1.pdf' # changePdfToText(path)
利用PyPDF2實(shí)現(xiàn)了對(duì)pdf文字內(nèi)容的提取
from PyPDF2 import PdfFileReader
# 定義獲取pdf內(nèi)容的方法
def getPdfContent(filename):
# 獲取PdfFileReader對(duì)象
pdf = PdfFileReader(open(filename, "rb"))
content = "" #content是輸出文本
for i in range(0,pdf.getNumPages()): #遍歷每一頁
pageObj = pdf.getPage(i)
try:
extractedText = pageObj.extractText()#導(dǎo)出每一頁的內(nèi)容,如果當(dāng)前頁有圖片的話就跳過
content += extractedText + "\n"
except BaseException:
pass
return content.encode("ascii", "ignore")
# 將獲取的內(nèi)容寫入txt文件
with open("test.txt","w") as f:
count=0 #count的作用是限制每一行的文字個(gè)數(shù),本人設(shè)置的是十行
#將獲取的文本變成字符串并用空白隔開
for item in str(getPdfContent("test.pdf")).split(" "):
# 如果當(dāng)前文字以句號(hào)結(jié)尾就換行
if item[-1]==".":
f.write(item+"\n")
count=0
else:
f.write(item+" ")
count +=1
# 如果寫了十個(gè)字就換行
if count==10:
f.write("\n")
# 重置count
count = 0
總結(jié)
到此這篇關(guān)于python讀取pdf格式文檔的文章就介紹到這了,更多相關(guān)python讀取pdf文檔內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python3中_(下劃線)和__(雙下劃線)的用途和區(qū)別
經(jīng)常會(huì)看到以下劃線或者雙下劃線開頭的方法或者屬性,到底它們有什么作用,又有什么樣的區(qū)別呢?今天我們來總結(jié)一下,感興趣的小伙伴們可以參考一下2019-04-04
Python運(yùn)算符之Inplace運(yùn)算符的使用教程
Inplace運(yùn)算符的行為與普通運(yùn)算符相似,只是在可變目標(biāo)和不可變目標(biāo)的情況下它們以不同的方式起作用。本文將通過示例帶大家了解Inplace運(yùn)算符的使用,需要的可以參考一下2022-09-09
python實(shí)現(xiàn)flappy bird游戲
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)flappy bird游戲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12
Python借助with語句實(shí)現(xiàn)代碼段只執(zhí)行有限次
這篇文章主要介紹了Python借助with語句實(shí)現(xiàn)代碼段只執(zhí)行有限次,首先要定義一個(gè)能夠在with語句中使用的類實(shí)現(xiàn)enter和exit,下文詳細(xì)介紹需要的小伙伴可以參考一下2022-03-03
Python數(shù)據(jù)結(jié)構(gòu)之遞歸可視化詳解
遞歸函數(shù)是直接調(diào)用自己或通過一系列語句間接調(diào)用自己的函數(shù)。遞歸在程序設(shè)計(jì)有著舉足輕重的作用,在很多情況下,借助遞歸可以優(yōu)雅的解決問題。本文主要介紹了如何利用可視化方式來了解遞歸函數(shù)的執(zhí)行步驟,需要的可以參考一下2022-04-04
Python3.x+pycharm+Anaconda中縮小打包的.exe體積的問題
這篇文章主要介紹了Python3.x+pycharm+Anaconda中縮小打包的.exe體積的問題,本文通過圖文實(shí)例相結(jié)合給大家分享解決方案,需要的朋友可以參考下2021-08-08
python從sqlite讀取并顯示數(shù)據(jù)的方法
這篇文章主要介紹了python從sqlite讀取并顯示數(shù)據(jù)的方法,涉及Python操作SQLite數(shù)據(jù)庫的讀取及顯示相關(guān)技巧,需要的朋友可以參考下2015-05-05
使用NumPy和pandas對(duì)CSV文件進(jìn)行寫操作的實(shí)例
今天小編就為大家分享一篇使用NumPy和pandas對(duì)CSV文件進(jìn)行寫操作的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-06-06

