最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python解析PDF程序代碼

 更新時間:2021年06月19日 11:24:14   作者:酸奶面包  
python解析pdf信息,目前還是不能做到很完善,每個方法都會有它的弊端,都需要結合自己的業(yè)務場景來和其它方法一塊進行使用,從而達到一個相對滿意的目標,接下來給大家介紹python解析PDF的程序代碼,一起看看吧

說在前面

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

添加依賴

在python的環(huán)境中安裝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')
    # 用文件對象來創(chuàng)建一個pdf文檔分析器
    parser = PDFParser(fp)
    # 創(chuàng)建一個pdf文檔
    doc = PDFDocument()
    # 連接分析器 與文檔對象
    parser.set_document(doc)
    doc.set_parser(parser)
    # 提供初始密碼,如果沒有密碼 就創(chuàng)建一個空的字符串
    doc.initialize('')
    # 檢測文檔是否提供txt轉(zhuǎn)換,不提供就拋出異常
    if not doc.is_extractable:
        raise PDFTextExtractionNotAllowed
    # 創(chuàng)建PDf 資源管理器 來管理共享資源
    rsrcmgr = PDFResourceManager()
    # 創(chuàng)建一個PDF設備對象
    laparams = LAParams()
    device = PDFPageAggregator(rsrcmgr, laparams=laparams)
    # 創(chuàng)建一個PDF解釋器對象
    interpreter = PDFPageInterpreter(rsrcmgr, device)

    with open(result_name, "w", encoding="u8") as fd_out:
        # 循環(huán)遍歷列表,每次處理一個page的內(nèi)容
        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
            # 調(diào)用函數(shù)解析
            read_pdf(fileName, result)

參考以下代碼內(nèi)容:python 讀取pdf文本內(nèi)容

#!/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')
    # 用文件對象來創(chuàng)建一個pdf文檔分析器
    parser = PDFParser(fp)
    # 創(chuàng)建一個pdf文檔
    doc = PDFDocument()
    # 連接分析器 與文檔對象
    parser.set_document(doc)
    doc.set_parser(parser)
    # 提供初始密碼,如果沒有密碼 就創(chuàng)建一個空的字符串
    doc.initialize('')
    # 檢測文檔是否提供txt轉(zhuǎn)換,不提供就拋出異常
    if not doc.is_extractable:
        raise PDFTextExtractionNotAllowed
    # 創(chuàng)建PDf 資源管理器 來管理共享資源
    rsrcmgr = PDFResourceManager()
    # 創(chuàng)建一個PDF設備對象
    laparams = LAParams()
    device = PDFPageAggregator(rsrcmgr, laparams=laparams)
    # 創(chuàng)建一個PDF解釋器對象
    interpreter = PDFPageInterpreter(rsrcmgr, device)
     
    with open(result_name,"w",encoding="u8") as fd_out:
        # 循環(huán)遍歷列表,每次處理一個page的內(nèi)容
        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的詳細內(nèi)容,更多關于python解析PDF的資料請關注腳本之家其它相關文章!

相關文章

  • python修改文件內(nèi)容的3種方法詳解

    python修改文件內(nèi)容的3種方法詳解

    這篇文章主要介紹了python修改文件內(nèi)容的3種方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • 運行Python編寫的程序方法實例

    運行Python編寫的程序方法實例

    在本篇文章里小編給大家整理了關于運行Python編寫的程序方法實例內(nèi)容,有興趣的朋友們可以學習下。
    2020-10-10
  • Python安裝后測試連接MySQL數(shù)據(jù)庫方式

    Python安裝后測試連接MySQL數(shù)據(jù)庫方式

    這篇文章主要介紹了Python安裝后測試連接MySQL數(shù)據(jù)庫方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Python使用turtle繪制有趣的龍年祝福動畫

    Python使用turtle繪制有趣的龍年祝福動畫

    這篇文章主要介紹了Python的內(nèi)置庫——小海龜(turtle),它是一個非常實用的繪畫工具,不僅可以幫助我們繪制圖形,還能讓我們查看整個繪畫過程,下面我們就來看看如何使用turtle繪制有趣的龍年祝福動畫吧
    2024-01-01
  • pandas分區(qū)間,算頻率的實例

    pandas分區(qū)間,算頻率的實例

    今天小編就為大家分享一篇pandas分區(qū)間,算頻率的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • 如何利用python制作時間戳轉(zhuǎn)換工具詳解

    如何利用python制作時間戳轉(zhuǎn)換工具詳解

    這篇文章主要給大家介紹了關于如何利用python制作時間戳轉(zhuǎn)換工具的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-09-09
  • Python3常見函數(shù)range()用法詳解

    Python3常見函數(shù)range()用法詳解

    “range函數(shù)是一個用來創(chuàng)建算數(shù)級數(shù)序列的通用函數(shù),這篇文章主要介紹了Python3常見函數(shù)range()用法,需要的朋友可以參考下
    2019-12-12
  • python實現(xiàn)楊輝三角的幾種方法代碼實例

    python實現(xiàn)楊輝三角的幾種方法代碼實例

    這篇文章主要介紹了python實現(xiàn)楊輝三角的幾種方法代碼實例,文中圖文代碼講解的很清晰,有不太懂的同學可以學習下
    2021-03-03
  • pandas按行按列遍歷Dataframe的幾種方式

    pandas按行按列遍歷Dataframe的幾種方式

    這篇文章主要介紹了pandas按行按列遍歷Dataframe的幾種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • python使用requests實現(xiàn)發(fā)送帶文件請求功能

    python使用requests實現(xiàn)發(fā)送帶文件請求功能

    這篇文章主要介紹了python使用requests實現(xiàn)發(fā)送帶文件請求,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12

最新評論

凭祥市| 安达市| 白山市| 沂南县| 略阳县| 神池县| 内乡县| 钦州市| 漯河市| 方城县| 颍上县| 东丽区| 林芝县| 大竹县| 宜章县| 安达市| 客服| 峨边| 昌吉市| 始兴县| 河津市| 双流县| 凌海市| 易门县| 驻马店市| 浏阳市| 彭水| 柳州市| 凉城县| 邵阳县| 肃北| 邻水| 苏尼特左旗| 嵩明县| 诏安县| 吴江市| 德阳市| 乌鲁木齐市| 广饶县| 丰原市| 茌平县|