使用Python提取PDF文件中內(nèi)容的代碼示例和使用技巧
一、提取基于文本的 PDF 內(nèi)容
1. 使用 PyPDF2 提取純文本
PyPDF2
是一個輕量級但功能強(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)
特點:支持表格識別、文字坐標(biāo)定位等功能。
二、提取掃描圖像型 PDF 內(nèi)容(OCR)
對于由掃描圖片組成的 PDF 文件,必須借助 光學(xué)字符識別(OCR)技術(shù) 來提取其中的文字。
1. 安裝依賴項
你需要安裝 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 類型 | 推薦庫 | 特點 |
---|---|---|
純文本型 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 都提供了豐富的第三方庫來幫助我們實現(xiàn)高效的文本提取。掌握這些工具不僅能提升辦公效率,還能為數(shù)據(jù)分析、文檔管理、信息自動化等場景打下堅實基礎(chǔ)。
以上就是使用Python提取PDF文件中內(nèi)容的代碼示例和使用技巧的詳細(xì)內(nèi)容,更多關(guān)于Python提取PDF文件內(nèi)容的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python數(shù)據(jù)庫批量插入數(shù)據(jù)的實現(xiàn)(executemany的使用)
這篇文章主要介紹了python數(shù)據(jù)庫批量插入數(shù)據(jù)的實現(xiàn)(executemany的使用),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04詳解使用Selenium爬取豆瓣電影前100的愛情片相關(guān)信息
這篇文章主要介紹了詳解使用Selenium爬取豆瓣電影前100的愛情片相關(guān)信息,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03