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

python解析PDF程序代碼

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

說在前面

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

添加依賴

在python的環(huán)境中安裝PDFminer3k,不要裝錯(cuò)了,一開始我裝的是PDFminer,結(jié)果有幾個(gè)包不能用
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):
    # 以二進(jìn)制讀模式打開
    fp = open(pdf_name, 'rb')
    # 用文件對(duì)象來創(chuàng)建一個(gè)pdf文檔分析器
    parser = PDFParser(fp)
    # 創(chuàng)建一個(gè)pdf文檔
    doc = PDFDocument()
    # 連接分析器 與文檔對(duì)象
    parser.set_document(doc)
    doc.set_parser(parser)
    # 提供初始密碼,如果沒有密碼 就創(chuàng)建一個(gè)空的字符串
    doc.initialize('')
    # 檢測(cè)文檔是否提供txt轉(zhuǎn)換,不提供就拋出異常
    if not doc.is_extractable:
        raise PDFTextExtractionNotAllowed
    # 創(chuàng)建PDf 資源管理器 來管理共享資源
    rsrcmgr = PDFResourceManager()
    # 創(chuàng)建一個(gè)PDF設(shè)備對(duì)象
    laparams = LAParams()
    device = PDFPageAggregator(rsrcmgr, laparams=laparams)
    # 創(chuàng)建一個(gè)PDF解釋器對(duì)象
    interpreter = PDFPageInterpreter(rsrcmgr, device)

    with open(result_name, "w", encoding="u8") as fd_out:
        # 循環(huán)遍歷列表,每次處理一個(gè)page的內(nèi)容
        for i, page in enumerate(doc.get_pages(), 1):
            index = "===========《第{}頁(yè)》===========".format(i)
            print(index)
            fd_out.write(index + "\n")
            interpreter.process_page(page)
            # 接受該頁(yè)面的LTPage對(duì)象
            layout = device.get_result()
            for x in layout:
                # 這里layout是一個(gè)LTPage對(duì)象 里面存放著 這個(gè)page解析出的各種對(duì)象 一般包括LTTextBox,
                # LTFigure, LTImage, LTTextBoxHorizontal 等等 想要獲取文本就獲得對(duì)象的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):
    # 以二進(jìn)制讀模式打開
    fp = open(pdf_name, 'rb')
    # 用文件對(duì)象來創(chuàng)建一個(gè)pdf文檔分析器
    parser = PDFParser(fp)
    # 創(chuàng)建一個(gè)pdf文檔
    doc = PDFDocument()
    # 連接分析器 與文檔對(duì)象
    parser.set_document(doc)
    doc.set_parser(parser)
    # 提供初始密碼,如果沒有密碼 就創(chuàng)建一個(gè)空的字符串
    doc.initialize('')
    # 檢測(cè)文檔是否提供txt轉(zhuǎn)換,不提供就拋出異常
    if not doc.is_extractable:
        raise PDFTextExtractionNotAllowed
    # 創(chuàng)建PDf 資源管理器 來管理共享資源
    rsrcmgr = PDFResourceManager()
    # 創(chuàng)建一個(gè)PDF設(shè)備對(duì)象
    laparams = LAParams()
    device = PDFPageAggregator(rsrcmgr, laparams=laparams)
    # 創(chuàng)建一個(gè)PDF解釋器對(duì)象
    interpreter = PDFPageInterpreter(rsrcmgr, device)
     
    with open(result_name,"w",encoding="u8") as fd_out:
        # 循環(huán)遍歷列表,每次處理一個(gè)page的內(nèi)容
        for i,page in enumerate(doc.get_pages(),1):
            index = "===========《第{}頁(yè)》===========".format(i)
            print(index)
            fd_out.write(index + "\n")
            interpreter.process_page(page)
            # 接受該頁(yè)面的LTPage對(duì)象
            layout = device.get_result()
            for x in layout:
                # 這里layout是一個(gè)LTPage對(duì)象 里面存放著 這個(gè)page解析出的各種對(duì)象 一般包括LTTextBox,
                # LTFigure, LTImage, LTTextBoxHorizontal 等等 想要獲取文本就獲得對(duì)象的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的詳細(xì)內(nèi)容,更多關(guān)于python解析PDF的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

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

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

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

    運(yùn)行Python編寫的程序方法實(shí)例

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

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

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

    Python使用turtle繪制有趣的龍年祝福動(dòng)畫

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論

十堰市| 武鸣县| 班戈县| 朝阳区| 乌拉特后旗| 枣阳市| 太原市| 依兰县| 遂平县| 吉隆县| 区。| 尼木县| 北京市| 临汾市| 海阳市| 昌乐县| 龙山县| 普兰县| 开江县| 桂东县| 安化县| 宁海县| 长汀县| 淮南市| 黄冈市| 徐水县| 华蓥市| 多伦县| 晴隆县| 泰来县| 白水县| 来安县| 江达县| 沧州市| 翁源县| 柘荣县| 峨眉山市| 多伦县| 揭西县| 科技| 高要市|