Python_讀取PDF文件內容

涉及到一些PDF文件中的讀取,特地去網上簡單學習一下並記錄下來

大神鏈接: https://www.cnblogs.com/wj-1314/p/9429816.html

自己簡單代碼的分享以邊自己後邊用到

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


def parser_pdf_file(pdf_file_path):
    read_pdf = open(pdf_file_path, 'rb')  # 打開PDF文件。
    parser_pdf = PDFParser(read_pdf)  # 用文件對象創建一個PDF文檔分析器。
    pdf_document = PDFDocument(parser_pdf)  # 創建一個PDF文檔。

    parser_pdf.set_document(pdf_document)
    pdf_document.set_parser(parser_pdf)  # 連接分析器 與文檔對象。
    pdf_document.initialize()  # 如果沒有密碼,就創建一個空的字符串。

    if not pdf_document.is_extractable:  # 檢測文檔是否提供txt轉換,不提供就忽略。
        raise PDFTextExtractionNotAllowed
    else:
        pdf_manager = PDFResourceManager()  # 創建PDF資源管理器 來管理共享資源。
        pdf_laparams = LAParams()  # 創建一個PDF參數分析器。
        pdf_device = PDFPageAggregator(pdf_manager, laparams=pdf_laparams)  # 創建一個聚合器
        pdf_interpreter = PDFPageInterpreter(pdf_manager, pdf_device)  # 創建一個PDF頁面解釋器對象
        # 循環遍歷列表,每次處理一頁的內容,pdf_document.get_pages()獲取page列表
        for each_page in pdf_document.get_pages():
            pdf_interpreter.process_page(each_page)  # 使用頁面解釋器來讀取
            layout = pdf_device.get_result()  # 這裏layout是一個LTPage對象 裏面存放着這個page解析出的各種對象 一般包括LTTexBox,LTFigure,LTImage,
            # LTTexBoxHorizontal等等 想要獲取文本就獲得對象的text屬性。
            # print(layout)
            for each_info in layout:
                if isinstance(each_info, LTTextBoxHorizontal):
                    results = each_info.get_text()
                    print(results)


if __name__ == '__main__':
    # pdf_file_path = get_pdf_file()
    parser_pdf_file(r'D:\6.pdf')

具體每個代表什麼意思,去看大神的博客就行了,上邊分享的有鏈接。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章