CodeGym /課程 /Python SELF TW /從PDF文件中提取文本以進行後續數據分析

從PDF文件中提取文本以進行後續數據分析

Python SELF TW
等級 43 , 課堂 2
開放

1. 提取文本

幾乎每個人都會遇到需要從PDF文件中獲取信息的情況,比如財務報告、研究甚至是最愛的電子書。但如果需要自動而不是手動提取數據呢?這時候Python及其強大的庫PyPDF2就派上用場了。

提取文本的基本步驟

為了成功從PDF提取文本,需要遵循一些簡單的步驟:

  1. 讀取PDF文件。
  2. 解析PDF內容。
  3. 提取文本以進行後續分析。

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中提取文本時,可能不總是正確。
  • 不支持直接提取圖片和表格。
  • 不支持處理加密或受密碼保護的文件(如果已知密碼,可以嘗試解密)。
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION