91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中解析PDF程序的示例分析

發布時間:2021-06-21 10:44:29 來源:億速云 閱讀:168 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關python中解析PDF程序的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

說在前面

和word的文本相比PDF更類似于一張張圖片,圖上放著一個個文字。對其的解析是將圖片上的文字提取到text文件中,方便之后的分析。

添加依賴

在python的環境中安裝PDFminer3k,不要裝錯了,一開始我裝的是PDFminer,結果有幾個包不能用
pip install pdfminer3k

源程序代碼

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
# pip3 install pdfminer3k

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


def read_pdf(pdf_name, result_name):
    # 以二進制讀模式打開
    fp = open(pdf_name, 'rb')
    # 用文件對象來創建一個pdf文檔分析器
    parser = PDFParser(fp)
    # 創建一個pdf文檔
    doc = PDFDocument()
    # 連接分析器 與文檔對象
    parser.set_document(doc)
    doc.set_parser(parser)
    # 提供初始密碼,如果沒有密碼 就創建一個空的字符串
    doc.initialize('')
    # 檢測文檔是否提供txt轉換,不提供就拋出異常
    if not doc.is_extractable:
        raise PDFTextExtractionNotAllowed
    # 創建PDf 資源管理器 來管理共享資源
    rsrcmgr = PDFResourceManager()
    # 創建一個PDF設備對象
    laparams = LAParams()
    device = PDFPageAggregator(rsrcmgr, laparams=laparams)
    # 創建一個PDF解釋器對象
    interpreter = PDFPageInterpreter(rsrcmgr, device)

    with open(result_name, "w", encoding="u8") as fd_out:
        # 循環遍歷列表,每次處理一個page的內容
        for i, page in enumerate(doc.get_pages(), 1):
            index = "===========《第{}頁》===========".format(i)
            print(index)
            fd_out.write(index + "\n")
            interpreter.process_page(page)
            # 接受該頁面的LTPage對象
            layout = device.get_result()
            for x in layout:
                # 這里layout是一個LTPage對象 里面存放著 這個page解析出的各種對象 一般包括LTTextBox,
                # LTFigure, LTImage, LTTextBoxHorizontal 等等 想要獲取文本就獲得對象的text屬性
                if not isinstance(x, LTTextBoxHorizontal):
                    continue
                results = x.get_text()
                print(results)
                fd_out.write(results)

if __name__ == '__main__':

    # 獲取讀取文件夾
    filePath = '../PDFfile'
    #遍歷文件夾
    for i,j,k in os.walk(filePath):
        for m in k:
            # 格式化輸出的名稱和地址
            result = '../TextFile/' + m[:-4] + '.txt'
            # 格式化源文件路徑
            fileName = i + '/' + m
            # 調用函數解析
            read_pdf(fileName, result)

參考以下代碼內容:python 讀取pdf文本內容

#!/usr/bin/env python3
#-*- coding:utf-8 -*-
# pip3 install pdfminer3k
  
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LAParams, LTTextBoxHorizontal
from pdfminer.pdfparser import PDFParser, PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter, PDFTextExtractionNotAllowed
from pdfminer.pdfdevice import PDFDevice
 
def read_pdf(pdf_name, result_name):
    # 以二進制讀模式打開
    fp = open(pdf_name, 'rb')
    # 用文件對象來創建一個pdf文檔分析器
    parser = PDFParser(fp)
    # 創建一個pdf文檔
    doc = PDFDocument()
    # 連接分析器 與文檔對象
    parser.set_document(doc)
    doc.set_parser(parser)
    # 提供初始密碼,如果沒有密碼 就創建一個空的字符串
    doc.initialize('')
    # 檢測文檔是否提供txt轉換,不提供就拋出異常
    if not doc.is_extractable:
        raise PDFTextExtractionNotAllowed
    # 創建PDf 資源管理器 來管理共享資源
    rsrcmgr = PDFResourceManager()
    # 創建一個PDF設備對象
    laparams = LAParams()
    device = PDFPageAggregator(rsrcmgr, laparams=laparams)
    # 創建一個PDF解釋器對象
    interpreter = PDFPageInterpreter(rsrcmgr, device)
     
    with open(result_name,"w",encoding="u8") as fd_out:
        # 循環遍歷列表,每次處理一個page的內容
        for i,page in enumerate(doc.get_pages(),1):
            index = "===========《第{}頁》===========".format(i)
            print(index)
            fd_out.write(index + "\n")
            interpreter.process_page(page)
            # 接受該頁面的LTPage對象
            layout = device.get_result()
            for x in layout:
                # 這里layout是一個LTPage對象 里面存放著 這個page解析出的各種對象 一般包括LTTextBox,
                # LTFigure, LTImage, LTTextBoxHorizontal 等等 想要獲取文本就獲得對象的text屬性
                if not isinstance(x, LTTextBoxHorizontal):
                    continue
                results = x.get_text()
                print(results)
                fd_out.write(results)   
                       
if __name__ == '__main__':
    pdf_name = 'test.pdf'
    result = 'test.txt'
    read_pdf(pdf_name, result)

感謝各位的閱讀!關于“python中解析PDF程序的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

滨海县| 高雄县| 龙州县| 莱州市| 宽城| 扶风县| 亚东县| 竹山县| 巴彦县| 容城县| 新闻| 武冈市| 介休市| 环江| 岳阳县| 鹿泉市| 诏安县| 同德县| 建德市| 施秉县| 鄂尔多斯市| 湘乡市| 施甸县| 措勤县| 灵石县| 肃宁县| 浦东新区| 城固县| 玛多县| 聂荣县| 澄江县| 宜昌市| 额尔古纳市| 星座| 萨迦县| 阳信县| 肥西县| 屯留县| 应用必备| 玉林市| 全南县|