亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python解析PDF程序代碼

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

說在前面

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

添加依賴

在python的環(huán)境中安裝PDFminer3k,不要裝錯了,一開始我裝的是PDFminer,結(jié)果有幾個包不能用
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設(shè)備對象
    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設(shè)備對象
    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的詳細(xì)內(nèi)容,更多關(guān)于python解析PDF的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用Matplotlib創(chuàng)建基本圖表的詳細(xì)指南

    使用Matplotlib創(chuàng)建基本圖表的詳細(xì)指南

    Matplotlib 是一個功能強大的 Python 庫,用于創(chuàng)建各種類型的圖表和可視化,在本文中,我們將提供一個完整的指南,介紹如何使用 Matplotlib 創(chuàng)建基本的圖表,包括折線圖、散點圖、柱狀圖和餅圖,感興趣的小伙伴跟著小編一起來看看吧
    2024-05-05
  • Python使用py2exe打包程序介紹

    Python使用py2exe打包程序介紹

    這篇文章主要介紹了Python使用py2exe打包程序介紹,本文講解了py2exe簡介、安裝、用法、指定額外文件等內(nèi)容,需要的朋友可以參考下
    2014-11-11
  • Python中關(guān)于元組 集合 字符串 函數(shù) 異常處理的全面詳解

    Python中關(guān)于元組 集合 字符串 函數(shù) 異常處理的全面詳解

    本篇文章介紹了我在學(xué)習(xí)python過程中對元組、集合、字符串、函數(shù)、異常處理的總結(jié),通讀本篇對大家的學(xué)習(xí)或工作具有一定的價值,需要的朋友可以參考下
    2021-10-10
  • Python 移動光標(biāo)位置的方法

    Python 移動光標(biāo)位置的方法

    今天小編就為大家分享一篇Python 移動光標(biāo)位置的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python-pip配置國內(nèi)鏡像源快速下載包的方法詳解

    Python-pip配置國內(nèi)鏡像源快速下載包的方法詳解

    pip如果不配置國內(nèi)鏡像源的話,下載包的速度非常慢,畢竟默認(rèn)的源在國外呢,這篇文章主要介紹了Python-pip配置國內(nèi)鏡像源快速下載包的方法詳解,需要的朋友可以參考下
    2024-01-01
  • Python?dateutil庫簡化日期時間處理利器使用場景實踐

    Python?dateutil庫簡化日期時間處理利器使用場景實踐

    在Python中,處理日期和時間是常見的任務(wù)之一,dateutil庫是Python標(biāo)準(zhǔn)庫中datetime模塊的擴展,提供了許多方便的工具和函數(shù),簡化了日期和時間的操作
    2023-12-12
  • Python最小二乘法矩陣

    Python最小二乘法矩陣

    今天小編就為大家分享一篇關(guān)于Python最小二乘法矩陣,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • python Pandas庫基礎(chǔ)分析之時間序列的處理詳解

    python Pandas庫基礎(chǔ)分析之時間序列的處理詳解

    這篇文章主要介紹了python Pandas庫基礎(chǔ)分析之時間序列的處理詳解,Pandas作為Python環(huán)境下的數(shù)據(jù)分析庫,更是提供了強大的日期數(shù)據(jù)處理的功能,是處理時間序列的利器,需要的朋友可以參考下
    2019-07-07
  • Python 內(nèi)置變量和函數(shù)的查看及說明介紹

    Python 內(nèi)置變量和函數(shù)的查看及說明介紹

    今天小編就為大家分享一篇Python 內(nèi)置變量和函數(shù)的查看及說明介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 基于Python共軛梯度法與最速下降法之間的對比

    基于Python共軛梯度法與最速下降法之間的對比

    這篇文章主要介紹了基于Python共軛梯度法與最速下降法之間的對比,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04

最新評論