Python提取Pdf文件內(nèi)容的操作方法(表格、文本、圖片)
Pdf文件是我們?nèi)粘9ぷ髦薪?jīng)常會遇到的一種文件格式,對于這種文件的提取 pdfplumber 庫可以非常出色的完成處理工作,它是一個純 Python 第三方庫,適合 python 3.x 版本,通常用來查看pdf各類信息,能有效提取文本、表格,但不支持修改或生成pdf,也不支持對pdf掃描件的處理。下面就出表格、文本和圖片的提取三方面進(jìn)行說明。
1、表格提?。?/h2>
下面是提取PDF文件內(nèi)容中的表格,并保存到XLSX文件中,代碼如下:
import pdfplumber
from openpyxl import load_workbook
import pandas as pd
i=0
with pdfplumber.open("d:\\待提取的PDF文件.pdf") as pdf:
print(len(pdf.pages))
for page in pdf.pages:
tables=page.extract_tables()
for table in tables:
i=i+1
df = pd.DataFrame(table)
df.to_excel(f'd:\\output{i}.xlsx', index=False)
def readExcels(excelname):
alldata = pd.DataFrame()
wb = load_workbook(excelname)
sheets = wb.sheetnames
for i in sheets:
#print(i)
df = pd.read_excel(excelname,sheet_name=i,engine='openpyxl',header=1)
alldata = alldata._append(df)2、文本提?。?/h2>
下面是提取PDF文件內(nèi)容中的文字內(nèi)容,并保存到txt文件中,代碼如下:
import os
from pathlib import Path
import pdfplumber
def extract_text(pdf_path):
with pdfplumber.open(pdf_path) as pdf:
text = ""
for page in pdf.pages:
text += page.extract_text() + "\n"
return text
# 使用示例
pdf_path_name = "d:\\待提取PDF文件.pdf"
pdf_dirname = os.path.dirname(pdf_path_name)
extracted_text = extract_text(pdf_path_name)
with open(f'{pdf_dirname}/{Path(pdf_path_name).stem}.txt', 'w', encoding='utf-8') as f:
f.write(extracted_text)
f.close()
print(f'執(zhí)行完畢!輸出路徑:{pdf_dirname}')3、提取圖片:
下面是提取PDF文件內(nèi)容中的圖片,并創(chuàng)建目錄保存,代碼如下:
import pdfplumber
import os
# 定義函數(shù)用于提取PDF中的圖片并保存
def extract_images_from_pdf(pdf_file, output_folder):
# 創(chuàng)建輸出文件夾,如果不存在的話
if not os.path.exists(output_folder):
os.makedirs(output_folder)
with pdfplumber.open(pdf_file) as pdf:
# 遍歷每一頁
for page_number, page in enumerate(pdf.pages, start=1):
print(f'頁碼:{page.page_number}')
print(f'頁面寬度:{page.width}')
print(f'頁面高度:{page.height}')
# 獲取該頁的所有圖片
images = page.images
# 遍歷該頁的所有圖片
for idx, image in enumerate(images, start=1):
# 獲取圖片的二進(jìn)制數(shù)據(jù)
image_data = image['stream'].get_data()
# 構(gòu)建圖片文件名
image_filename = os.path.join(output_folder, f'image_{page_number}_{idx}.png')
# 保存圖片到文件
with open(image_filename, 'wb') as f:
f.write(image_data)
print(f'圖片已保存至:{image_filename}')
# 調(diào)用方法
pdf_file = 'd:\\待提取的PDF文件.pdf'
output_folder = 'extracted_images'
extract_images_from_pdf(pdf_file, output_folder)拓展:python提取pdf文件文字(OCR)
一、引用的庫
import pdfplumber
確保已安裝以上的庫,不然運(yùn)行會報錯
#安裝庫可以用清華的鏡像網(wǎng)站(可能會更新,可以上官網(wǎng)查詢地址)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
二、提取文字
def pdf_to_text(pdf_path):
"""
從 PDF 文件中提取文本內(nèi)容。
Args:
pdf_path (str): PDF 文件的路徑。
Returns:
str: 提取的文本內(nèi)容。
"""
text = ''
# 打開PDF文件
with pdfplumber.open(pdf_path) as pdf:
# 遍歷每一頁
for page in pdf.pages:
# 提取文本,并添加到text變量中
text += page.extract_text()
# 移除文本中的換行符(根據(jù)需求設(shè)置)
text = text.replace('\n', '')
return text其中'yourfile'替換成你的文件的地址。
三、保存文字
def savewords():
"""
將 PDF 文件中提取的文本保存到文本文件中。
"""
# 輸入PDF文件路徑
pdf_path = 'yourfile'
# 調(diào)用pdf_to_text函數(shù)進(jìn)行文字提取
extracted_text = pdf_to_text(pdf_path)
# 將提取的文字寫入到txt文件中
with open('extracted_text.txt', 'w', encoding='utf-8') as file:
file.write(extracted_text)
print("Text extracted successfully!")注意,保存文字和提取文字是不可分割的兩個“方法”,在寫代碼時要一起復(fù)制粘貼。此處分開是為了容易理解
四、運(yùn)行
if __name__ == "__main__":
savewords()總結(jié)
import pdfplumber
def pdf_to_text(pdf_path):
"""
從 PDF 文件中提取文本內(nèi)容。
Args:
pdf_path (str): PDF 文件的路徑。
Returns:
str: 提取的文本內(nèi)容。
"""
text = ''
# 打開PDF文件
with pdfplumber.open(pdf_path) as pdf:
# 遍歷每一頁
for page in pdf.pages:
# 提取文本,并添加到text變量中
text += page.extract_text()
# 移除文本中的換行符(根據(jù)需求設(shè)置)
text = text.replace('\n', '')
return text
def savewords():
"""
將 PDF 文件中提取的文本保存到文本文件中。
"""
# 輸入PDF文件路徑
pdf_path = 'yourfile'
# 調(diào)用pdf_to_text函數(shù)進(jìn)行文字提取
extracted_text = pdf_to_text(pdf_path)
# 將提取的文字寫入到txt文件中
with open('extracted_text.txt', 'w', encoding='utf-8') as file:
file.write(extracted_text)
print("Text extracted successfully!")
if __name__ == "__main__":
savewords()到此這篇關(guān)于Python提取Pdf文件內(nèi)容的操作方法(表格、文本、圖片)的文章就介紹到這了,更多相關(guān)Python提取Pdf內(nèi)容內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)獲取當(dāng)前目錄下文件名代碼詳解
這篇文章主要介紹了Python實(shí)現(xiàn)獲取當(dāng)前目錄下文件名,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03
談一談數(shù)組拼接tf.concat()和np.concatenate()的區(qū)別
今天小編就為大家分享一篇談?wù)剶?shù)組拼接tf.concat()和np.concatenate()的區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
Python+PuLP實(shí)現(xiàn)線性規(guī)劃的求解
線性規(guī)劃(Linear?programming),在線性等式或不等式約束條件下求解線性目標(biāo)函數(shù)的極值問題,常用于解決資源分配、生產(chǎn)調(diào)度和混合問題。本文將利用PuLP實(shí)現(xiàn)線性規(guī)劃的求解,需要的可以參考一下2022-04-04
Python Flask結(jié)合前端Fetch搞定表單提交和頁面刷新
本文帶你深入理解現(xiàn)代前端 Fetch API 的工作原理,并手把手教你如何與 Flask 后端優(yōu)雅結(jié)合,實(shí)現(xiàn)無刷新登錄、數(shù)據(jù)動態(tài)增刪改查等交互,感興趣的小伙伴可以了解下2025-12-12

