python實(shí)現(xiàn)讀取學(xué)術(shù)論文PDF文件內(nèi)容
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í)讀取。看別人說(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畫的,讀取不出來(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)文章
Python Sleep休眠函數(shù)使用簡(jiǎn)單實(shí)例
這篇文章主要介紹了Python Sleep休眠函數(shù)使用簡(jiǎn)單實(shí)例,本文直接給出兩個(gè)實(shí)現(xiàn)例子,需要的朋友可以參考下2015-02-02
Python中關(guān)鍵字global和nonlocal的區(qū)別詳解
這篇文章主要給大家介紹了關(guān)于Python中關(guān)鍵字global和nonlocal的區(qū)別的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09
mac安裝scrapy并創(chuàng)建項(xiàng)目的實(shí)例講解
今天小編就為大家分享一篇mac安裝scrapy并創(chuàng)建項(xiàng)目的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
Python實(shí)現(xiàn)批量下載excel表中超鏈接圖片
這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)批量下載excel表中超鏈接圖片,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下2024-11-11
Python利用os模塊實(shí)現(xiàn)自動(dòng)刪除磁盤文件
你們一定想不到os模塊還可以這樣玩,本文就將利用Python中的os模塊實(shí)現(xiàn)自動(dòng)刪除磁盤文件功能,文中的示例代碼講解詳細(xì),感興趣的可以嘗試一下2022-11-11
Python實(shí)現(xiàn)將HTML表格一鍵導(dǎo)出為Excel(xlsx)的實(shí)戰(zhàn)指南
在數(shù)據(jù)采集、網(wǎng)頁(yè)解析或自動(dòng)化報(bào)表場(chǎng)景中,我們經(jīng)常會(huì)遇到需要將HTML 頁(yè)面中提取的表格數(shù)據(jù)導(dǎo)出為Excel文件,下面我們就來(lái)看看如何使用Python實(shí)現(xiàn)這一功能吧2026-01-01
Python mplfinance庫(kù)繪制金融圖表實(shí)現(xiàn)數(shù)據(jù)可視化實(shí)例探究
mplfinance(Matplotlib Finance),它是基于Matplotlib的庫(kù),專門用于創(chuàng)建金融圖表和交互式金融數(shù)據(jù)可視化,本文將深入介紹?mplfinance,包括其基本概念、功能特性以及如何使用示例代碼創(chuàng)建各種金融圖表2024-01-01

