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

一文教會(huì)你用Python讀取PDF文件

 更新時(shí)間:2022年08月09日 11:16:23   作者:夢(mèng)想橡皮擦  
Python?工程師在日常的工作中,經(jīng)常會(huì)碰到解析和處理PDF文件的情況。本文將pdfplumber進(jìn)行PDF文件的讀取操作,感興趣的可以了解一下

實(shí)戰(zhàn)場(chǎng)景

Python 工程師在日常的工作中,經(jīng)常會(huì)碰到解析和處理PDF文件的情況,實(shí)戰(zhàn)中需求主要分為如下情況:

  • 提取 PDF 中的文字
  • 將 PDF 中每頁(yè)轉(zhuǎn)換為圖片
  • word 轉(zhuǎn)換為PDF
  • PDF生成,編輯,導(dǎo)入導(dǎo)出
  • PDF在線渲染

除了最后一項(xiàng)需要前端配合以外,其余內(nèi)容都可以直接在 python 端進(jìn)行實(shí)現(xiàn)。

本次實(shí)戰(zhàn)選擇 pdfplumber 庫(kù)進(jìn)行學(xué)習(xí),可以提前安裝該庫(kù),不過(guò)有一點(diǎn)需要注意,該庫(kù)主要用于讀取 PDF 進(jìn)行操作,寫入和編輯無(wú)法實(shí)現(xiàn),即本文學(xué)習(xí)一款專注于 PDF 內(nèi)容提取的庫(kù)。

> pip install pdfplumber -i https://pypi.tuna.tsinghua.edu.cn/simple

pdfplumber 庫(kù)具備如下特點(diǎn):

  • 可以訪問(wèn)PDF對(duì)象中的任意元素詳細(xì)信息;
  • 可以提取文本和表格,而且用法簡(jiǎn)單;
  • 集成了可視化調(diào)試。

Python PDF 實(shí)戰(zhàn)編碼

下面可以編寫 PDF 操作的基礎(chǔ)代碼。

import pdfplumber

with pdfplumber.open('./dddd.pdf') as pdf:
    for page in pdf.pages:
        print(page.extract_text())

        # 每頁(yè)打印一分頁(yè)分隔
        print('---------- 分頁(yè)分隔 ----------')

導(dǎo)入 pdfplumber 模塊之后,使用 pdfplumber.open('./dddd.pdf') 打開(kāi)本地 pdf 文件,然后通過(guò) pdf.pages 遍歷所有頁(yè),在通過(guò)頁(yè)對(duì)象.extract_text() 方法,提取文本信息。

pdfplumber.open() 方法的簽名如下所示:

pdfplumber.open("文件名", password = "密碼", laparams = { "line_overlap": 0.7 })

其中各參數(shù)描述如下:

  • file_name:文件名,必選參數(shù);
  • password:PDF的密碼;
  • laparams:布局參數(shù)。

除此之外,如果希望讀取 PDF,還可以使用 load() 方法,該方法也會(huì)返回 pdfplumber.PDF 類的實(shí)例。

pdfplumber.PDF 對(duì)象實(shí)例,主要有兩個(gè)重要屬性:

  • .metadata:從PDF的Info中獲取元數(shù)據(jù)鍵 /值對(duì)字典。 通常包括“ CreationDate”,“ ModDate”,“ Producer”等;
  • .pages:包含 pdfplumber.Page 實(shí)例的列表,每一個(gè)實(shí)例代表PDF每一頁(yè)的信息。

上文提及的 pdfplumber.Page 實(shí)例是 pdfplumber 的核心,后續(xù)對(duì) PDF 的操作大量圍繞該類的屬性和方法實(shí)施,其重要屬性如下所示:

  • page_number:頁(yè)碼順序,第一頁(yè)的序號(hào)是 1;
  • witdh:寬度;
  • height:高度;
  • .objects/.chars/.lines/.rects/.curves/.figures/.images:獲取PDF頁(yè)中的重要數(shù)據(jù)。

核心方法如下所示:

  • extract_text():提取頁(yè)中的文本;
  • extract_words():提取所有單詞及其相關(guān)信息;
  • extract_tables(): 提取頁(yè)面的表格。

extract_text() 呈現(xiàn)結(jié)果

extract_words() 呈現(xiàn)結(jié)果

extract_tables() 呈現(xiàn)效果,由于 PDF 中無(wú)表格,所有每頁(yè)得到的都是空!

補(bǔ)充

當(dāng)然Python除了讀取PDF文件,還有一些其他功能,例如加密PDF,旋轉(zhuǎn)和疊加頁(yè)面等,下面是實(shí)現(xiàn)的示例代碼

旋轉(zhuǎn)和疊加頁(yè)面

import PyPDF2

from PyPDF2.pdf import PageObject

# 創(chuàng)建一個(gè)讀PDF文件的Reader對(duì)象

reader = PyPDF2.PdfFileReader('resources/XGBoost.pdf')

# 創(chuàng)建一個(gè)寫PDF文件的Writer對(duì)象

writer = PyPDF2.PdfFileWriter()

# 對(duì)PDF文件所有頁(yè)進(jìn)行循環(huán)遍歷

for page_num in range(reader.numPages):

      # 獲取指定頁(yè)碼的Page對(duì)象

      current_page = reader.getPage(page_num) # type: PageObject

      if page_num % 2 == 0:

         # 奇數(shù)頁(yè)順時(shí)針旋轉(zhuǎn)90度

         current_page.rotateClockwise(90)

      else:

# 偶數(shù)頁(yè)反時(shí)針旋轉(zhuǎn)90度

             current_page.rotateCounterClockwise(90)

      writer.addPage(current_page)

# 最后添加一個(gè)空白頁(yè)并旋轉(zhuǎn)90度

page = writer.addBlankPage() # type: PageObject

page.rotateClockwise(90)

# 通過(guò)Writer對(duì)象的write方法將PDF寫入文件

with open('resources/XGBoost-modified.pdf', 'wb') as file:

    writer.write(file)

加密PDF文件

import PyPDF2

reader = PyPDF2.PdfFileReader('resources/XGBoost.pdf')
writer = PyPDF2.PdfFileWriter()

for page_num in range(reader.numPages):
     writer.addPage(reader.getPage(page_num))

# 通過(guò)encrypt方法加密PDF文件,方法的參數(shù)就是rre

#設(shè)置的密碼
writer.encrypt('foobared')

with open('resources/XGBoost-encrypted.pdf', 'wb') as file:

       writer.write(file)

批量添加水印

import PyPDF2

from PyPDF2.pdf import PageObject

reader1 = PyPDF2.PdfFileReader('resources/XGBoost.pdf') reader2 = PyPDF2.PdfFileReader('resources/watermark.pdf')
writer = PyPDF2.PdfFileWriter()

# 獲取水印頁(yè)
watermark_page = reader2.getPage(0)

for page_num in range(reader1.numPages):

     current_page = reader1.getPage(page_num) # type: PageObject                                           current_page.mergePage(watermark_page)

     # 將原始頁(yè)和水印頁(yè)進(jìn)行合并
     writer.addPage(current_page) 

# 將PDF寫入文件
with open('resources/XGBoost-watermarked.pdf', 'wb') as file:

       writer.write(file)

到此這篇關(guān)于一文教會(huì)你用Python讀取PDF文件的文章就介紹到這了,更多相關(guān)Python讀取PDF文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 3段Python圖像處理的實(shí)用代碼的分享

    3段Python圖像處理的實(shí)用代碼的分享

    這篇文章主要介紹了3段Python圖像處理的實(shí)用代碼的分享,計(jì)算機(jī)視覺(jué)方向的Python實(shí)用代碼,用到多種庫(kù)具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • PyCM多類別混淆矩陣分析python庫(kù)功能使用探究

    PyCM多類別混淆矩陣分析python庫(kù)功能使用探究

    這篇文章主要為大家介紹了python編寫的PyCM多類混淆矩陣庫(kù),用于多類別混淆矩陣分析,幫助用戶從不同角度評(píng)價(jià)分類模型的表現(xiàn),這些指標(biāo)包括但不限于準(zhǔn)確率、召回率、F1分?jǐn)?shù)、Kappa?統(tǒng)計(jì)量等,支持二分類、多分類及多標(biāo)簽分類問(wèn)題
    2024-01-01
  • Python Asyncio調(diào)度原理詳情

    Python Asyncio調(diào)度原理詳情

    這篇文章主要介紹了Python Asyncio調(diào)度原理詳情,Python.Asyncio是一個(gè)大而全的庫(kù),它包括很多功能,而跟核心調(diào)度相關(guān)的邏輯除了三種可等待對(duì)象外,還有其它一些功能,它們分別位于runners.py,base_event.py,event.py三個(gè)文件中
    2022-06-06
  • Python如何輸出異常信息(行號(hào))

    Python如何輸出異常信息(行號(hào))

    這篇文章主要介紹了Python如何輸出異常信息(行號(hào))問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • PyQt5利用QPainter繪制各種圖形的實(shí)例

    PyQt5利用QPainter繪制各種圖形的實(shí)例

    下面小編就為大家?guī)?lái)一篇PyQt5利用QPainter繪制各種圖形的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • Python之ThreadPoolExecutor線程池問(wèn)題

    Python之ThreadPoolExecutor線程池問(wèn)題

    這篇文章主要介紹了Python之ThreadPoolExecutor線程池問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 用Python解決計(jì)數(shù)原理問(wèn)題的方法

    用Python解決計(jì)數(shù)原理問(wèn)題的方法

    計(jì)數(shù)原理是數(shù)學(xué)中的重要研究對(duì)象之一,分類加法計(jì)數(shù)原理、分步乘法計(jì)數(shù)原理是解決計(jì)數(shù)問(wèn)題的最基本、最重要的方法,也稱為基本計(jì)數(shù)原理,它們?yōu)榻鉀Q很多實(shí)際問(wèn)題提供了思想和工具。本文教大家怎么用Python解決在數(shù)學(xué)中遇到的計(jì)數(shù)原理問(wèn)題。
    2016-08-08
  • django實(shí)現(xiàn)分頁(yè)的方法

    django實(shí)現(xiàn)分頁(yè)的方法

    這篇文章主要介紹了django實(shí)現(xiàn)分頁(yè)的方法,實(shí)例分析了django分頁(yè)的技巧與Paginator對(duì)象的用法,需要的朋友可以參考下
    2015-05-05
  • Python中OpenCV實(shí)現(xiàn)查找輪廓的實(shí)例

    Python中OpenCV實(shí)現(xiàn)查找輪廓的實(shí)例

    本文將結(jié)合實(shí)例代碼,介紹 OpenCV 如何查找輪廓、獲取邊界框。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Python中工作日類庫(kù)Busines Holiday的介紹與使用

    Python中工作日類庫(kù)Busines Holiday的介紹與使用

    Python語(yǔ)言是通過(guò)區(qū)分類庫(kù)的方式來(lái)劃分功能。用戶根據(jù)自身的需要加載合適的類庫(kù),來(lái)完成需要的功能。下面這篇文章主要給大家介紹了關(guān)于Python中工作日類庫(kù)Busines Holiday使用的相關(guān)資料,需要的朋友可以參考借鑒。
    2017-07-07

最新評(píng)論