使用Python提取PDF文件中內(nèi)容的代碼示例和使用技巧
一、提取基于文本的 PDF 內(nèi)容
1. 使用 PyPDF2 提取純文本
PyPDF2 是一個(gè)輕量級但功能強(qiáng)大的庫,適合用于讀取和提取標(biāo)準(zhǔn)文本型 PDF 中的內(nèi)容。
安裝
pip install PyPDF2
示例代碼
import PyPDF2
def extract_text_from_pdf(pdf_path):
with open(pdf_path, 'rb') as file:
reader = PyPDF2.PdfReader(file)
text = ""
for page in reader.pages:
text += page.extract_text()
return text
# 使用示例
pdf_path = 'example.pdf'
extracted_text = extract_text_from_pdf(pdf_path)
print(extracted_text)
注意:對于格式復(fù)雜或字體嵌入的 PDF,某些頁面可能無法正確提取文本。
2. 使用 pdfplumber 提取表格和布局復(fù)雜的文本
如果你需要提取含有表格、列布局或精確坐標(biāo)信息的 PDF,pdfplumber 是更合適的選擇。
安裝
pip install pdfplumber
示例代碼
import pdfplumber
def extract_text_from_pdf(pdf_path):
with pdfplumber.open(pdf_path) as pdf:
text = ""
for page in pdf.pages:
text += page.extract_text()
return text
# 使用示例
pdf_path = 'example.pdf'
extracted_text = extract_text_from_pdf(pdf_path)
print(extracted_text)
特點(diǎn):支持表格識別、文字坐標(biāo)定位等功能。
二、提取掃描圖像型 PDF 內(nèi)容(OCR)
對于由掃描圖片組成的 PDF 文件,必須借助 光學(xué)字符識別(OCR)技術(shù) 來提取其中的文字。
1. 安裝依賴項(xiàng)
你需要安裝 Tesseract OCR 引擎以及對應(yīng)的 Python 封裝庫。
Windows:
- 下載并安裝 Tesseract OCR
- 添加 Tesseract 到系統(tǒng)環(huán)境變量(例如路徑為
C:\Program Files\Tesseract-OCR\tesseract.exe) - 安裝 Python 庫:
pip install pytesseract pillow pdf2image
- 安裝 Poppler(用于將 PDF 轉(zhuǎn)換為圖像):
- 可以從 GitHub - poppler-windows 下載并解壓,同樣添加到系統(tǒng) PATH。
Linux / macOS:
sudo apt install tesseract-ocr libpoppler-cpp-dev # Ubuntu/Debian brew install tesseract poppler # macOS (Homebrew) pip install pytesseract pillow pdf2image
2. 示例代碼:結(jié)合 pdf2image + pytesseract 提取掃描 PDF 內(nèi)容
from pdf2image import convert_from_path
import pytesseract
from PIL import Image
def extract_text_from_scanned_pdf(pdf_path):
# 將 PDF 轉(zhuǎn)換為圖像列表
images = convert_from_path(pdf_path)
extracted_text = ""
for image in images:
# 對每張圖片執(zhí)行 OCR
text = pytesseract.image_to_string(image)
extracted_text += text + "\n"
return extracted_text
# 使用示例
pdf_path = 'scanned_example.pdf'
text = extract_text_from_scanned_pdf(pdf_path)
print(text)
說明:該方法會逐頁將 PDF 轉(zhuǎn)換為圖像,再通過 OCR 提取文字,適用于高質(zhì)量掃描件。
三、總結(jié)與建議
| PDF 類型 | 推薦庫 | 特點(diǎn) |
|---|---|---|
| 純文本型 PDF | PyPDF2 或 pdfplumber | 快速、高效,適合標(biāo)準(zhǔn) PDF 文檔 |
| 掃描圖像型 PDF | pdf2image + pytesseract | 支持 OCR,適合圖像型 PDF,但速度較慢 |
建議:
- 優(yōu)先判斷 PDF 類型:可以嘗試用
PyPDF2提取看看是否有返回內(nèi)容,若為空則可能是掃描圖像。 - 提高 OCR 準(zhǔn)確率:可先對圖像進(jìn)行預(yù)處理(如灰度化、二值化),再傳給
pytesseract。 - 多語言支持:Tesseract 支持多種語言包,可通過
-l參數(shù)指定語言,如pytesseract.image_to_string(img, lang='chi_sim')提取中文。
四、擴(kuò)展功能推薦
| 功能 | 工具 | 描述 |
|---|---|---|
| 表格識別 | camelot 或 tabula-py | 專門用于提取 PDF 中表格數(shù)據(jù) |
| PDF 加密破解 | pikepdf | 可用于打開加密 PDF 文件(需密碼) |
| PDF 合并與拆分 | PyPDF2 / pypdf | 拆分、合并、旋轉(zhuǎn) PDF 頁面 |
| PDF 注釋提取 | pdfminer.six | 提供底層解析能力,適合高級用途 |
結(jié)語
無論是處理普通的文本型 PDF 還是掃描圖像型 PDF,Python 都提供了豐富的第三方庫來幫助我們實(shí)現(xiàn)高效的文本提取。掌握這些工具不僅能提升辦公效率,還能為數(shù)據(jù)分析、文檔管理、信息自動化等場景打下堅(jiān)實(shí)基礎(chǔ)。
以上就是使用Python提取PDF文件中內(nèi)容的代碼示例和使用技巧的詳細(xì)內(nèi)容,更多關(guān)于Python提取PDF文件內(nèi)容的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
使用 Python 實(shí)現(xiàn)微信公眾號粉絲遷移流程
近日,因公司業(yè)務(wù)需要,需將原兩個(gè)公眾號合并為一個(gè),即要將其中一個(gè)公眾號(主要是粉絲)遷移到另一個(gè)公眾號。這篇文章主要介紹了使用 Python 實(shí)現(xiàn)微信公眾號粉絲遷移,需要的朋友可以參考下2018-01-01
python實(shí)現(xiàn)兩個(gè)文件夾的同步
這篇文章主要為大家詳細(xì)介紹了利用python實(shí)現(xiàn)兩個(gè)文件夾的同步,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08
使用opencv中匹配點(diǎn)對的坐標(biāo)提取方式
這篇文章主要介紹了使用opencv中匹配點(diǎn)對的坐標(biāo)提取方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
python數(shù)據(jù)庫批量插入數(shù)據(jù)的實(shí)現(xiàn)(executemany的使用)
這篇文章主要介紹了python數(shù)據(jù)庫批量插入數(shù)據(jù)的實(shí)現(xiàn)(executemany的使用),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
詳解使用Selenium爬取豆瓣電影前100的愛情片相關(guān)信息
這篇文章主要介紹了詳解使用Selenium爬取豆瓣電影前100的愛情片相關(guān)信息,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03

