Python實現(xiàn)pdf文檔轉(zhuǎn)txt的方法示例
本文實例講述了Python實現(xiàn)pdf文檔轉(zhuǎn)txt的方法。分享給大家供大家參考,具體如下:
首先,這是一個比較粗糙的版本,因為已經(jīng)夠用了,而且對pdf的格式不熟悉,所以暫時沒有進一步優(yōu)化。
還有,這是轉(zhuǎn)成txt的,所以如果是有圖片的pdf是無法保存圖片的。
至于本來就是圖片的文本,這里是無法分析出來的。那些圖片的pdf,估計要用圖形匹配的方式來處理,類似于超速拍攝的車牌識別。
不過這樣的程度,已經(jīng)不是文本處理了。扯遠了。。。
轉(zhuǎn)出來的文字,好像按照pdf里面的所展示的來換行了,看不到有什么規(guī)則還原,我也不知道怎么處理,將就著用吧。
另外,初始代碼是網(wǎng)上找的,最初地址不知道哪里了。
用到了第三方庫pdfminier
pdfminer庫的地址 https://pypi.python.org/pypi/pdfminer3k
下載后,用cmd執(zhí)行命令 setup.py install
安裝完之后打開eclipse會彈出要求加載一些東西,點擊確定就行了。
再來看看代碼:
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
class CPdf2TxtManager():
'''''
classdocs
'''
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()
# 這里layout是一個LTPage對象 里面存放著 這個page解析出的各種對象 一般包括LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal 等等 想要獲取文本就獲得對象的text屬性,
for x in layout:
if (isinstance(x, LTTextBoxHorizontal)):
pdfStr = pdfStr + x.get_text() + '\n'
fileNames = os.path.splitext(filePath)
file2 = open(fileNames[0] + '.txt','wb')#保存這些內(nèi)容
file2.write(pdfStr.encode())
file2.close()
file.close()
if __name__ == '__main__':
'''''
解析pdf 文本,保存到txt文件中
'''
path = r'C:\Users\Administrator\Desktop\《精力管理》.pdf'
pdf2TxtManager = CPdf2TxtManager()
pdf2TxtManager.changePdfToText(path)
更多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)文章
Python Matplotlib繪制箱型圖(箱線圖)boxplot的方法詳解
箱線圖(箱型圖)主要作用是發(fā)現(xiàn)數(shù)據(jù)內(nèi)部整體的分布分散情況,包括上下限、各分位數(shù)、異常值等,本文為大家整理了Matplotlib繪制箱型圖的所以方法,希望對大家有所幫助2023-05-05
python深度學(xué)習(xí)tensorflow1.0參數(shù)初始化initializer
這篇文章主要為大家介紹了python深度學(xué)習(xí)tensorflow1.0參數(shù)初始化initializer示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06

