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

一文教會你用Python讀取PDF文件

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

實戰(zhàn)場景

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

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

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

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

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

pdfplumber 庫具備如下特點:

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

Python PDF 實戰(zhàn)編碼

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

import pdfplumber

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

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

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

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

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

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

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

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

pdfplumber.PDF 對象實例,主要有兩個重要屬性:

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

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

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

核心方法如下所示:

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

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

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

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

補充

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

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

import PyPDF2

from PyPDF2.pdf import PageObject

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

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

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

writer = PyPDF2.PdfFileWriter()

# 對PDF文件所有頁進行循環(huán)遍歷

for page_num in range(reader.numPages):

      # 獲取指定頁碼的Page對象

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

      if page_num % 2 == 0:

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

         current_page.rotateClockwise(90)

      else:

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

             current_page.rotateCounterClockwise(90)

      writer.addPage(current_page)

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

page = writer.addBlankPage() # type: PageObject

page.rotateClockwise(90)

# 通過Writer對象的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))

# 通過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()

# 獲取水印頁
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)

     # 將原始頁和水印頁進行合并
     writer.addPage(current_page) 

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

       writer.write(file)

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

相關(guān)文章

  • python多次繪制條形圖的方法

    python多次繪制條形圖的方法

    這篇文章主要為大家詳細介紹了python多次繪制條形圖的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • python中datetime模塊中strftime/strptime函數(shù)的使用

    python中datetime模塊中strftime/strptime函數(shù)的使用

    這篇文章主要介紹了python中datetime模塊中strftime/strptime函數(shù)的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • 使用Nibabel庫對nii格式圖像的讀寫操作

    使用Nibabel庫對nii格式圖像的讀寫操作

    這篇文章主要介紹了使用Nibabel庫對nii格式圖像的讀寫操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Python+OpenCV檢測燈光亮點的實現(xiàn)方法

    Python+OpenCV檢測燈光亮點的實現(xiàn)方法

    這篇文章主要介紹了Python+OpenCV檢測燈光亮點的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • python打包成so文件過程解析

    python打包成so文件過程解析

    這篇文章主要介紹了python打包成so文件過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • Python進行PDF文件拆分的示例詳解

    Python進行PDF文件拆分的示例詳解

    在日常生活中,我們常常會遇到大型的PDF文件,難以發(fā)送,將PDF拆分成多個小文件是一個實用的解決方案,下面我們就來看看如何使用Python實現(xiàn)PDF文件拆分吧
    2025-02-02
  • 使用Python和python-pptx構(gòu)建Markdown到PowerPoint轉(zhuǎn)換器

    使用Python和python-pptx構(gòu)建Markdown到PowerPoint轉(zhuǎn)換器

    在這篇博客中,我們將深入分析一個使用 Python 開發(fā)的應(yīng)用程序,該程序可以將 Markdown 文件轉(zhuǎn)換為 PowerPoint 演示文稿,我們將探討代碼結(jié)構(gòu)、功能和關(guān)鍵組件,并解決一個特定的 bug,需要的朋友可以參考下
    2025-03-03
  • windows下python使用ffmpeg實現(xiàn)rtsp推流

    windows下python使用ffmpeg實現(xiàn)rtsp推流

    這篇文章主要為大家詳細介紹了在windows環(huán)境下python如何使用ffmpeg實現(xiàn)rtsp推流,文中的示例代碼講解詳細,有需要的小伙伴可以了解一下
    2023-09-09
  • Python random模塊(獲取隨機數(shù))常用方法和使用例子

    Python random模塊(獲取隨機數(shù))常用方法和使用例子

    這篇文章主要介紹了Python random模塊(獲取隨機數(shù))常用方法和使用例子,需要的朋友可以參考下
    2014-05-05
  • 基于DATAFRAME中元素的讀取與修改方法

    基于DATAFRAME中元素的讀取與修改方法

    今天小編就為大家分享一篇基于DATAFRAME中元素的讀取與修改方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06

最新評論

天长市| 玉门市| 青海省| 岚皋县| 台东市| 屏山县| 南阳市| 石城县| 容城县| 灵宝市| 隆林| 嘉荫县| 贵阳市| 突泉县| 宁远县| 社旗县| 玉环县| 沅江市| 中宁县| 武强县| 锡林浩特市| 鸡西市| 祁阳县| 廉江市| 达日县| 巍山| 定陶县| 平利县| 班戈县| 尼木县| 昂仁县| 滕州市| 镇沅| 抚远县| 邢台市| 沽源县| 彭水| 泉州市| 苏尼特左旗| 芜湖市| 阿拉善右旗|