分享一个用python实现将pdf转txt的代码
生活随笔
收集整理的這篇文章主要介紹了
分享一个用python实现将pdf转txt的代码
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
問題背景:
有時候需要用到pdf文件中的信息,但是pdf不易編輯,格式有局限性,需要轉(zhuǎn)成txt這樣的格式。
目標(biāo):
將給定pdf文件中的文本信息(暫時不考慮表格、圖片等)抽取出來,寫入txt文件中。
主要工具:
python的pdfminer3k庫(pdfminer的python3端口,pdfminer是一個用于從文檔中提取信息的工具)
代碼:
import importlib import sys import timefrom 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 PDFTextExtractionNotAllowedimportlib.reload(sys) time1 = time.time()def parse(pdf_path, txt_path):# 解析PDF文本,并保存到TXT文件中fp = open(pdf_path, 'rb')# 用文件對象創(chuàng)建一個PDF文檔分析器parser = PDFParser(fp)# 創(chuàng)建一個PDF文檔doc = PDFDocument()# 連接分析器,與文檔對象parser.set_document(doc)doc.set_parser(parser)# 提供初始化密碼,如果沒有密碼,就創(chuàng)建一個空的字符串doc.initialize()# 檢測文檔是否提供txt轉(zhuǎn)換,不提供就忽略if not doc.is_extractable:raise PDFTextExtractionNotAllowedelse:# 創(chuàng)建PDF,資源管理器,來共享資源rsrcmgr = PDFResourceManager()# 創(chuàng)建一個PDF設(shè)備對象laparams = LAParams()device = PDFPageAggregator(rsrcmgr, laparams=laparams)# 創(chuàng)建一個PDF解釋器對象interpreter = PDFPageInterpreter(rsrcmgr, device)# 循環(huán)遍歷列表,每次處理一個page內(nèi)容# doc.get_pages() 獲取page列表for page in doc.get_pages():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)):with open(txt_path, 'a+', encoding='utf-8') as f:results = x.get_text()print(results)f.write(results + "\n")if __name__ == '__main__':pdf_path = './test.pdf'txt_path = './test.txt'parse(pdf_path, txt_path)time2 = time.time()print("總共消耗時間為:", time2 - time1)?分析:
本例只是實(shí)現(xiàn)將pdf轉(zhuǎn)txt,也只是抽取了其中的文本信息,其實(shí)可以進(jìn)一步抽取出表格和圖片信息,也可以引入python-docx這個庫來實(shí)現(xiàn)將pdf轉(zhuǎn)為word文件,希望感興趣的朋友可以探索一下。
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的分享一个用python实现将pdf转txt的代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大佬,IntelliJ IDEA里这种文
- 下一篇: websocket python爬虫_p