python實現(xiàn)讀取學術論文PDF文件內容
1、PyPDF2
PyPDF2 是一個常用的庫,可以用來讀取、合并、分割和修改PDF文件。讀取pdf內容:
import PyPDF2
# 打開PDF文件
with open('ELLK-Net_An_Efficient_Lightweight_Large_Kernel_Network_for_SAR_Ship_Detection.pdf', 'rb') as file:
reader = PyPDF2.PdfReader(file)
# 獲取頁面數(shù)
num_pages = len(reader.pages)
print(f"頁面數(shù): {num_pages}")
# 讀取每一頁的文本
for i in range(num_pages):
page = reader.pages[i]
text = page.extract_text()
print(f"第 {i + 1} 頁的內容:\n{text}")
結果如下:

效果: 可以看出,讀取是從左往右,從上往下,文本內容讀取的還挺全的,但是圖片、表格都讀不出來。
2、pdfplumber
pdfplumber 是一個功能強大的庫,專門用于提取PDF文件中的文本和表格數(shù)據(jù)。讀取PDF內容:
import pdfplumber
# 打開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} 頁的內容:\n{text}")
結果如下:

效果: 看結果,這個庫讀取PDF是一整行一整行讀取的,當文檔內容是兩頁的時候,兩列同一行會被同時讀取。看別人說讀取表格方便,但是這里也沒讀取出來,具體如下圖所示。

此外,使用table = page.extract_table()單獨讀取有表格的頁,輸出結果為None
3、PyMuPDF
PyMuPDF 是另一個高效的庫,可以處理PDF文件,支持文本提取、圖像提取等功能。讀取pdf如下:
import fitz # PyMuPDF
from PIL import Image
import io
# 打開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} 頁的內容:\n{text}")
# 獲取頁面中的所有圖片
image_list = page.get_images(full=True)
# 遍歷所有圖片
for img_index, img in enumerate(image_list):
# 圖片的XREF
xref = img[0]
# 獲取圖片對象
base_image = doc.extract_image(xref)
# 獲取圖片的二進制數(shù)據(jù)
image_bytes = base_image["image"]
# 將二進制數(shù)據(jù)轉為PIL圖像
image = Image.open(io.BytesIO(image_bytes))
# # 左右翻轉
# image = image.transpose(method=Image.FLIP_LEFT_RIGHT)
# 上下翻轉
image = image.transpose(method=Image.FLIP_TOP_BOTTOM)
# 獲取圖片的擴展名
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} 頁中提取的圖片 {img_index + 1} 已保存。")讀取效果如下:

效果:文字提取效果與PyPDF2差不多,不同點是遇到大的空格會直接換行??梢宰x取圖片,我這里發(fā)現(xiàn)讀取的圖片需要上下翻轉。插入的圖片可以直接讀取,但是流程圖可能因為是visio畫的,讀取不出來。另外,三線表格還是沒有讀取出來。
4、pdfminer
pdfminer.six 是一個專注于從PDF文件中提取文本和元數(shù)據(jù)的庫。讀取PDF如下:
from pdfminer.high_level import extract_text
# 提取文本
text = extract_text('example.pdf')
print(text)
讀取結果:

效果: 讀取結果整體空行多。讀取方式按行讀取,有左右兩列的時候,哪一列先讀到就讀哪一列,因此順序可能會錯亂,就像上面結果圖一項,該頁內容先讀取的右邊的列。
總結
看網(wǎng)上的說法是:
PyPDF2:適合基本的PDF操作,如合并和提取文本。
pdfplumber:非常適合提取文本和表格。
PyMuPDF:功能強大,處理速度快,支持多種操作。
pdfminer.six:更適合復雜的文本提取需求。
但在讀取類似上面這樣的論文文檔時,PyPDF2和PyMuPDF感覺好用點。
到此這篇關于python實現(xiàn)讀取學術論文PDF文件內容的文章就介紹到這了,更多相關python讀取PDF內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
10 行Python 代碼實現(xiàn) AI 目標檢測技術【推薦】
這篇文章主要介紹了10 行Python 代碼,實現(xiàn) AI 目標檢測技術,看完了代碼,我們在一起聊聊目標檢測背后的技術背景,并解讀這10行Python代碼的由來和實現(xiàn)原理。感興趣的朋友跟隨小編一起看看吧2019-06-06
關于Python使用logging庫進行有效日志管理的方法詳解
在開發(fā)大型軟件或處理復雜問題時,我們經(jīng)常需要一種方法來記錄和跟蹤程序的運行狀態(tài),Python 提供了一個名為 logging 的標準庫,可以幫助我們更好地完成這項任務,在這篇文章中,我們將介紹如何使用 Python 的 logging 庫進行日志記錄2023-06-06
python numpy中的polyfit函數(shù)用法
這篇文章主要介紹了python numpy中的polyfit函數(shù)用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04
Python編寫車票訂購系統(tǒng)?Python實現(xiàn)快遞收費系統(tǒng)
這篇文章主要為大家詳細介紹了Python編寫車票訂購系統(tǒng),Python實現(xiàn)快遞收費系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-08-08

