欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python實(shí)現(xiàn)讀取學(xué)術(shù)論文PDF文件內(nèi)容

 更新時(shí)間:2024年10月23日 09:19:44   作者:IT修煉家  
這篇文章主要為大家詳細(xì)介紹了如何通過(guò)python實(shí)現(xiàn)讀取學(xué)術(shù)論文PDF文件內(nèi)容的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

1、PyPDF2

PyPDF2 是一個(gè)常用的庫(kù),可以用來(lái)讀取、合并、分割和修改PDF文件。讀取pdf內(nèi)容:

import PyPDF2

# 打開(kāi)PDF文件
with open('ELLK-Net_An_Efficient_Lightweight_Large_Kernel_Network_for_SAR_Ship_Detection.pdf', 'rb') as file:
    reader = PyPDF2.PdfReader(file)
    # 獲取頁(yè)面數(shù)
    num_pages = len(reader.pages)
    print(f"頁(yè)面數(shù): {num_pages}")
    
    # 讀取每一頁(yè)的文本
    for i in range(num_pages):
        page = reader.pages[i]
        text = page.extract_text()
        print(f"第 {i + 1} 頁(yè)的內(nèi)容:\n{text}")

結(jié)果如下:

效果: 可以看出,讀取是從左往右,從上往下,文本內(nèi)容讀取的還挺全的,但是圖片、表格都讀不出來(lái)。

2、pdfplumber

pdfplumber 是一個(gè)功能強(qiáng)大的庫(kù),專門用于提取PDF文件中的文本和表格數(shù)據(jù)。讀取PDF內(nèi)容:

import pdfplumber

# 打開(kāi)PDF文件
with pdfplumber.open('example.pdf') as pdf:
    for i in range(len(pdf.pages)):
        page = pdf.pages[i]
        text = page.extract_text()
        print(f"第 {i + 1} 頁(yè)的內(nèi)容:\n{text}")

結(jié)果如下:

效果: 看結(jié)果,這個(gè)庫(kù)讀取PDF是一整行一整行讀取的,當(dāng)文檔內(nèi)容是兩頁(yè)的時(shí)候,兩列同一行會(huì)被同時(shí)讀取??磩e人說(shuō)讀取表格方便,但是這里也沒(méi)讀取出來(lái),具體如下圖所示。

此外,使用table = page.extract_table()單獨(dú)讀取有表格的頁(yè),輸出結(jié)果為None

3、PyMuPDF

PyMuPDF 是另一個(gè)高效的庫(kù),可以處理PDF文件,支持文本提取、圖像提取等功能。讀取pdf如下:

import fitz  # PyMuPDF
from PIL import Image
import io
# 打開(kāi)PDF文件
doc = fitz.open('ELLK-Net_An_Efficient_Lightweight_Large_Kernel_Network_for_SAR_Ship_Detection.pdf')
for page_number,page in enumerate(doc):
    text = page.get_text()
    print(f"第 {page.number + 1} 頁(yè)的內(nèi)容:\n{text}")
    # 獲取頁(yè)面中的所有圖片
    image_list = page.get_images(full=True)
    # 遍歷所有圖片
    for img_index, img in enumerate(image_list):
        # 圖片的XREF
        xref = img[0]
        # 獲取圖片對(duì)象
        base_image = doc.extract_image(xref)
        # 獲取圖片的二進(jìn)制數(shù)據(jù)
        image_bytes = base_image["image"]
        # 將二進(jìn)制數(shù)據(jù)轉(zhuǎn)為PIL圖像
        image = Image.open(io.BytesIO(image_bytes))
        # # 左右翻轉(zhuǎn)
        # image = image.transpose(method=Image.FLIP_LEFT_RIGHT)
        # 上下翻轉(zhuǎn)
        image = image.transpose(method=Image.FLIP_TOP_BOTTOM)
        # 獲取圖片的擴(kuò)展名
        image_ext = base_image["ext"]
        # 保存圖片
        # with open(f"page_{page_number + 1}_img_{img_index + 1}.{image_ext}", "wb") as image_file:
        #     image_file.write(image_bytes)
        image.save(f"page_{page_number + 1}_img_{img_index + 1}.{image_ext}")
        print(f"第 {page_number + 1} 頁(yè)中提取的圖片 {img_index + 1} 已保存。")

讀取效果如下:

效果:文字提取效果與PyPDF2差不多,不同點(diǎn)是遇到大的空格會(huì)直接換行??梢宰x取圖片,我這里發(fā)現(xiàn)讀取的圖片需要上下翻轉(zhuǎn)。插入的圖片可以直接讀取,但是流程圖可能因?yàn)槭莢isio畫(huà)的,讀取不出來(lái)。另外,三線表格還是沒(méi)有讀取出來(lái)。

4、pdfminer

pdfminer.six 是一個(gè)專注于從PDF文件中提取文本和元數(shù)據(jù)的庫(kù)。讀取PDF如下:

from pdfminer.high_level import extract_text

# 提取文本
text = extract_text('example.pdf')
print(text)

讀取結(jié)果:

效果: 讀取結(jié)果整體空行多。讀取方式按行讀取,有左右兩列的時(shí)候,哪一列先讀到就讀哪一列,因此順序可能會(huì)錯(cuò)亂,就像上面結(jié)果圖一項(xiàng),該頁(yè)內(nèi)容先讀取的右邊的列。

總結(jié)

看網(wǎng)上的說(shuō)法是:

PyPDF2:適合基本的PDF操作,如合并和提取文本。

pdfplumber:非常適合提取文本和表格。

PyMuPDF:功能強(qiáng)大,處理速度快,支持多種操作。

pdfminer.six:更適合復(fù)雜的文本提取需求。

但在讀取類似上面這樣的論文文檔時(shí),PyPDF2和PyMuPDF感覺(jué)好用點(diǎn)。

到此這篇關(guān)于python實(shí)現(xiàn)讀取學(xué)術(shù)論文PDF文件內(nèi)容的文章就介紹到這了,更多相關(guān)python讀取PDF內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 10 行Python 代碼實(shí)現(xiàn) AI 目標(biāo)檢測(cè)技術(shù)【推薦】

    10 行Python 代碼實(shí)現(xiàn) AI 目標(biāo)檢測(cè)技術(shù)【推薦】

    這篇文章主要介紹了10 行Python 代碼,實(shí)現(xiàn) AI 目標(biāo)檢測(cè)技術(shù),看完了代碼,我們?cè)谝黄鹆牧哪繕?biāo)檢測(cè)背后的技術(shù)背景,并解讀這10行Python代碼的由來(lái)和實(shí)現(xiàn)原理。感興趣的朋友跟隨小編一起看看吧
    2019-06-06
  • Python用字典構(gòu)建多級(jí)菜單功能

    Python用字典構(gòu)建多級(jí)菜單功能

    這篇文章主要介紹了Python用字典構(gòu)建多級(jí)菜單功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 分享幾種python 變量合并方法

    分享幾種python 變量合并方法

    這篇文章主要介紹了分享python 變量的合并幾種方法,分享內(nèi)容有l(wèi)ist 合并和str 合并以及dict 合并的分析,下面具體方法介紹,需要的小伙伴可以參考一下
    2022-03-03
  • 關(guān)于Python使用logging庫(kù)進(jìn)行有效日志管理的方法詳解

    關(guān)于Python使用logging庫(kù)進(jìn)行有效日志管理的方法詳解

    在開(kāi)發(fā)大型軟件或處理復(fù)雜問(wèn)題時(shí),我們經(jīng)常需要一種方法來(lái)記錄和跟蹤程序的運(yùn)行狀態(tài),Python 提供了一個(gè)名為 logging 的標(biāo)準(zhǔn)庫(kù),可以幫助我們更好地完成這項(xiàng)任務(wù),在這篇文章中,我們將介紹如何使用 Python 的 logging 庫(kù)進(jìn)行日志記錄
    2023-06-06
  • python geemap的安裝步驟及環(huán)境配置

    python geemap的安裝步驟及環(huán)境配置

    geemap是基于GEE由吳秋生老師二次開(kāi)發(fā)的一個(gè)包,geemap主要使用python來(lái)進(jìn)行實(shí)現(xiàn)相關(guān)功能,這篇文章主要介紹了geemap的詳細(xì)安裝步驟及環(huán)境配置,需要的朋友可以參考下
    2022-08-08
  • python numpy中的polyfit函數(shù)用法

    python numpy中的polyfit函數(shù)用法

    這篇文章主要介紹了python numpy中的polyfit函數(shù)用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Python處理excel根據(jù)全稱自動(dòng)填寫簡(jiǎn)稱

    Python處理excel根據(jù)全稱自動(dòng)填寫簡(jiǎn)稱

    這篇文章主要為大家詳細(xì)介紹了Python處理excel根據(jù)全稱自動(dòng)填寫簡(jiǎn)稱,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • Python編寫車票訂購(gòu)系統(tǒng)?Python實(shí)現(xiàn)快遞收費(fèi)系統(tǒng)

    Python編寫車票訂購(gòu)系統(tǒng)?Python實(shí)現(xiàn)快遞收費(fèi)系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Python編寫車票訂購(gòu)系統(tǒng),Python實(shí)現(xiàn)快遞收費(fèi)系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Python實(shí)現(xiàn)自定義讀寫分離代碼實(shí)例

    Python實(shí)現(xiàn)自定義讀寫分離代碼實(shí)例

    這篇文章主要介紹了Python實(shí)現(xiàn)自定義讀寫分離代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Python程序運(yùn)行原理圖文解析

    Python程序運(yùn)行原理圖文解析

    這篇文章主要介紹了Python程序運(yùn)行原理圖文解析,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02

最新評(píng)論