【Python】pdfminer3k模块批量转换本地PDF文件
生活随笔
收集整理的這篇文章主要介紹了
【Python】pdfminer3k模块批量转换本地PDF文件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
上一篇文章自己研究了一下如何批量將word或者ppt文件轉換為PDF文件,但是有時候我們也想要將pdf文件轉換為word或者txt文件,方便復制和處理。本文主要通過調用pdfminer3k模塊進行處理。
說明:本文是在Windows10下使用python最新的3.6版本虛擬環境
1. pdfminer3k相關鏈接:
GitHub:https://github.com/jaepil/pdfminer3k
PyPI:https://pypi.org/project/pdfminer3k/
2. 解析pdf文件用到的類:?
PDFParser:PDF文檔分析器:從一個文件中獲取數據?
PDFDocument:PDF文檔對象:保存獲取的數據,和PDFParser是相互關聯的?
PDFResourceManager:PDF資源管理器:用于存儲共享資源,如字體或圖像。
LAParams:PDF參數分析器:分析pdf文件參數
PDFPageAggregator:PDF聚合器:讀取獲取的文檔對象
PDFPageInterpreter:PDF文檔解析器:處理頁面內容變成Python可以解析?
3.分析思路:
整體思路為:構造文檔對象,解析文檔對象,提取所需內容
4. 具體的代碼:
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #作者:cacho_37967865 #博客:https://blog.csdn.net/sinat_37967865 #文件:pdfConvertor.py #日期:2018-04-29 #備注:通過調用PDF解析器:pdfminer3k,批量將PDF文件轉換為word或者txt文件,先要在python環境安裝pdfminer3k在python運行環境通過命令行方式運行:pip3 install pdfminer3k ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' # F:\python_env\PaChong_env # -*- coding: utf-8 -*-from pdfminer.pdfparser import PDFParser, PDFDocument from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter from pdfminer.converter import PDFPageAggregator from pdfminer.layout import LTTextBoxHorizontal,LAParams import osdef pdf_to_word(folder,password):# 獲取指定目錄下面的所有文件files = os.listdir(folder)# 獲取pdf類型的文件放到一個列表里面pdfFiles = [f for f in files if f.endswith(".pdf")]for pdfFile in pdfFiles:# 將pdf文件放到指定的路徑下面pdfPath = os.path.join(folder, pdfFile)# 設置將要轉換后存放word文件的路徑wdPath = pdfPath# 判斷是否已經存在對應的word文件,如果不存在就加入到存放word的路徑內if wdPath[-3:] != 'doc':wdPath = wdPath + ".doc"fn = open(pdfPath, 'rb')# 創建一個PDF文檔分析器:PDFParserparser = PDFParser(fn)# 創建一個PDF文檔:PDFDocumentdoc = PDFDocument()# 連接分析器與文檔parser.set_document(doc)doc.set_parser(parser)# 提供初始化密碼,如果無密碼,輸入空字符串doc.initialize("")# 檢測文檔是否提供txt轉換,不提供就忽略if not doc.is_extractable:print("PDFTextExtractionNotAllowed")else:# 創建PDF資源管理器:PDFResourceManagerresource = PDFResourceManager()# 創建一個PDF參數分析器:LAParamslaparams = LAParams()# 創建聚合器,用于讀取文檔的對象:PDFPageAggregatordevice = PDFPageAggregator(resource, laparams=laparams)# 創建解釋器,對文檔編碼,解釋成Python能夠識別的格式:PDFPageInterpreterinterpreter = PDFPageInterpreter(resource, device)# doc.get_pages() 獲取page列表for page in doc.get_pages():# 利用解釋器的process_page()方法解析讀取單獨頁數interpreter.process_page(page)# 這里layout是一個LTPage對象,里面存放著這個page解析出的各種對象,# 一般包括LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal等等,想要獲取文本就獲得對象的text屬性,# 使用聚合器get_result()方法獲取頁面內容layout = device.get_result()for out in layout:if (isinstance(out, LTTextBoxHorizontal)):print(out.get_text())with open(wdPath, 'a',encoding='utf-8') as f:f.write(out.get_text() + '\n')if __name__ == '__main__':pdf_to_word("F:\PythonProject\Pacong\docs","")?
總結
以上是生活随笔為你收集整理的【Python】pdfminer3k模块批量转换本地PDF文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对比 C++ 和 Python,谈谈指针
- 下一篇: 怎样使用Pycharm(Python工具