1. 提取文本
幾乎每個人都會遇到需要從PDF文件中獲取信息的情況,比如財務報告、研究甚至是最愛的電子書。但如果需要自動而不是手動提取數據呢?這時候Python及其強大的庫PyPDF2就派上用場了。
提取文本的基本步驟
為了成功從PDF提取文本,需要遵循一些簡單的步驟:
- 讀取PDF文件。
- 解析PDF內容。
- 提取文本以進行後續分析。
2. 讀取和解析PDF文件
讓我們看看在Python中如何打開和讀取PDF文件。首先我們需要導入PyPDF2:
Python
import PyPDF2
現在,打開PDF文件。假設我們有一個名為sample.pdf的文件,我們想分析它。讓我們加載它並看看它有多少頁。
加載PDF文件
Python
# 打開PDF文件
with open("sample.pdf", "rb") as pdf_file:
# 創建PDF Reader對象
pdf_reader = PyPDF2.PdfReader(pdf_file)
# 獲取總頁數
num_pages = len(pdf_reader.pages)
print(f"文件的總頁數: {num_pages}")
提取文本
現在,文件已打開,讓我們從中提取文本。我們需要:
PdfReader打開PDF文件以進行讀取。- 使用
for循環遍歷所有頁面,並調用extract_text()提取文本。 - 提取的文本保存在變量
text中,可以輸出或進一步處理。
以下是實現方式的範例:
Python
import PyPDF2
# 打開PDF文件
with open("sample.pdf", "rb") as pdf_file:
pdf_reader = PyPDF2.PdfReader(pdf_file)
text = ""
# 從每個頁面提取文本
for page_num in range(len(pdf_reader.pages)):
page = pdf_reader.pages[page_num]
text += page.extract_text() + "\n"
print(text)
從特定頁面提取文本
如果我們只需要特定頁面的文本怎麼辦?比如我們只想提取第三頁的文本。可以這樣來實現:
Python
import PyPDF2
with open("sample.pdf", "rb") as pdf_file:
pdf_reader = PyPDF2.PdfReader(pdf_file)
page = pdf_reader.pages[2] # 提取第三頁的文本(索引為2)
text = page.extract_text()
print(text)
這個範例只提取第三頁的文本,特別適用於文檔頁數眾多且只需處理部分頁面的情況。PyPDF2使用0作為頁面編號的起點。
3. 自動化PDF文本處理
從PDF提取文本後,可以進行分析和處理以進行更深入的數據分析。PyPDF2允許自動化這個過程,對於處理大量文件特別有用。
提取並將文本保存到單獨文件
為方便後續分析,可以將提取的文本保存到文本文件中,這樣可以簡化處理。
Python
import PyPDF2
# 打開PDF文件
with open("sample.pdf", "rb") as pdf_file:
pdf_reader = PyPDF2.PdfReader(pdf_file)
text = ""
for page_num in range(len(pdf_reader.pages)):
page = pdf_reader.pages[page_num]
text += page.extract_text() + "\n"
# 保存提取的文本到文件
with open("extracted_text.txt", "w", encoding="utf-8") as text_file:
text_file.write(text)
處理和分析提取的文本
提取文本後,可以用Python進行分析。通常會用到如下庫:re(正則表達式)、nltk(自然語言工具包)或pandas。
計算單詞數量和查找關鍵短語
假設我們有一個文本文件extracted_text.txt,我們想計算文檔中某些單詞和短語的數量。
Python
import re
# 打開提取的文本
with open("extracted_text.txt", "r", encoding="utf-8") as text_file:
text = text_file.read()
# 查找和計算關鍵詞
keywords = ["報告", "數據", "分析"]
keyword_counts = {keyword: len(re.findall(keyword, text, re.IGNORECASE)) for keyword in keywords}
print("關鍵詞頻率:", keyword_counts)
此處:
- 我們打開保存的文本。
- 使用正則表達式計算關鍵詞的出現次數(不區分大小寫)。
- 獲取每個關鍵詞的提及次數。
4. PyPDF2的優勢和限制
優勢:
- 用於基本文本提取和頁面處理非常簡單。
- 支持基本操作:閱讀文本、合併和拆分文檔。
- 易於與其他Python庫集成。
限制:
- PyPDF2從帶有複雜格式、表格和圖片的PDF中提取文本時,可能不總是正確。
- 不支持直接提取圖片和表格。
- 不支持處理加密或受密碼保護的文件(如果已知密碼,可以嘗試解密)。
GO TO FULL VERSION