如何用Python把pdf轉換成word

nt1979發表於2021-09-11

很多時候,我們需要把檔案的形式來回轉換。那麼學了程式設計的小夥伴,我們該如何用Python把pdf轉換成word呢?

一、下載所需要的庫


1.pdfminer  安裝庫命令 

pip install pdfminer3k

pdfminer3k是pdfminer的Python 3埠。PDFMiner是從PDF文件中提取資訊的工具。與其他PDF相關的工具不同,它完全專注於獲取和分析文字資料。PDFMiner允許獲取頁面中文字的確切位置,以及其他資訊,如

字型或線條。它包含一個PDF轉換器,可以將PDF檔案轉換為其他文字格式(如HTML)。它有一個可擴充套件的PDF解析器,可用於其他目的而不是文字分析。

2. docx   安裝庫命令 

pip install python_docx

Python DocX目前是Python OpenXML的一部分,你可以用它開啟Word 2007及以後的文件,而用它儲存的文件可以在Microsoft Office 2007/2010, Microsoft Mac Office 2008, Google Docs, OpenOffice.org 3, and Apple iWork 08中開啟。

二、程式碼


注意:pdf中非圖片構成的部分才能被成功轉換

1#-*- coding: UTF-8 -*- 2#!/usr/bin/python 3# -*- coding: utf-8 -*- 4 5import sys 6import importlib 7importlib.reload(sys) 8 9from pdfminer.pdfparser import PDFParser,PDFDocument 10from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter 11from pdfminer.converter import PDFPageAggregator 12from pdfminer.layout import * 13from pdfminer.pdfinterp import PDFTextExtractionNotAllowed 14import os 15 16#設定工作目錄資料夾 17os.chdir(r'c:/users/dicey/desktop/codes/pdf-docx') 18 19''' 20解析pdf檔案,獲取檔案中包含的各種物件 21''' 22# 解析pdf檔案函式 23def parse(pdf_path): 24    fp = open('diya.pdf', 'rb')  # 以二進位制讀模式開啟 25    # 用檔案物件來建立一個pdf文件分析器 26    parser = PDFParser(fp) 27    # 建立一個PDF文件 28    doc = PDFDocument() 29    # 連線分析器 與文件物件 30    parser.set_document(doc) 31    doc.set_parser(parser) 32 33    # 提供初始化密碼 34    # 如果沒有密碼 就建立一個空的字串 35    doc.initialize() 36 37    # 檢測文件是否提供txt轉換,不提供就忽略 38    if not doc.is_extractable: 39        raise PDFTextExtractionNotAllowed 40    else: 41        # 建立PDf 資源管理器 來管理共享資源 42        rsrcmgr = PDFResourceManager() 43        # 建立一個PDF裝置物件 44        laparams = LAParams() 45        device = PDFPageAggregator(rsrcmgr, laparams=laparams) 46        # 建立一個PDF直譯器物件 47        interpreter = PDFPageInterpreter(rsrcmgr, device) 48 49        # 用來計數頁面,圖片,曲線,figure,水平文字框等物件的數量 50        num_page, num_image, num_curve, num_figure, num_TextBoxHorizontal = 0, 0, 0, 0, 0 51 52        # 迴圈遍歷列表,每次處理一個page的內容 53        for page in doc.get_pages(): # doc.get_pages() 獲取page列表 54            num_page += 1  # 頁面增一 55            interpreter.process_page(page) 56            # 接受該頁面的LTPage物件 57            layout = device.get_result() 58            for x in layout: 59                if isinstance(x,LTImage):  # 圖片物件 60                    num_image += 1 61                if isinstance(x,LTCurve):  # 曲線物件 62                    num_curve += 1 63                if isinstance(x,LTFigure):  # figure物件 64                    num_figure += 1 65                if isinstance(x, LTTextBoxHorizontal):  # 獲取文字內容 66                    num_TextBoxHorizontal += 1  # 水平文字框物件增一 67                    # 儲存文字內容 68                    with open(r'test2.doc', 'a',encoding='utf-8') as f:    #生成doc檔案的檔名及路徑 69                        results = x.get_text() 70                        f.write(results) 71                        f.write('n') 72        print('物件數量:n','頁面數:%sn'%num_page,'圖片數:%sn'%num_image,'曲線數:%sn'%num_curve,'水平文字框:%sn' 73              %num_TextBoxHorizontal) 74 75 76if __name__ == '__main__': 77    pdf_path = r'diya.pdf'  #pdf檔案路徑及檔名 78    parse(pdf_path)

學會了的小夥伴趕緊行動起來~更多Python學習推薦:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4822/viewspace-2832486/,如需轉載,請註明出處,否則將追究法律責任。

相關文章