python PDF轉doc

pdfminer版本
pdfminer 20191125
注:pdf需要可複製,圖片類型的不支持

from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LTTextBoxHorizontal, LAParams
from pdfminer.pdfpage import PDFTextExtractionNotAllowed
from pdfminer.pdfpage import PDFPage


def parse(read_path,res_path):
    '''解析PDF文本,並保存到doc文件中'''
    fp = open(read_path, "rb")
    # 用文件對象創建一個PDF文檔分析器
    parser = PDFParser(fp)
    # 創建一個PDF文檔
    doc = PDFDocument(parser)
    # 連接分析器,與文檔對象

    # 提供初始化密碼,如果沒有密碼,就創建一個空的字符串
    # doc.initialize()

    # 檢測文檔是否提供txt轉換,不提供就忽略
    if not doc.is_extractable:
        raise PDFTextExtractionNotAllowed
    else:
        # 創建PDF,資源管理器,來共享資源
        rsrcmgr = PDFResourceManager()
        # 創建一個PDF設備對象
        laparams = LAParams()
        device = PDFPageAggregator(rsrcmgr, laparams=laparams)
        # 創建一個PDF解釋其對象
        interpreter = PDFPageInterpreter(rsrcmgr, device)

        # 循環遍歷列表,每次處理一個page內容
        for page in PDFPage.create_pages(doc):
            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(res_path, "a", encoding="utf-8") as f:
                        results = x.get_text()
                        f.write(results + "\n")

if __name__ == '__main__':
    parse(r"E:/read_path", r"E:/res_path.doc")
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章