CodeGym /Khóa học Java /Python SELF VI /Trích xuất văn bản từ tài liệu PDF cho việc phân tích dữ ...

Trích xuất văn bản từ tài liệu PDF cho việc phân tích dữ liệu sau này

Python SELF VI
Mức độ , Bài học
Có sẵn

1. Trích xuất văn bản

Hầu như ai trong chúng ta cũng từng gặp tình huống cần thông tin từ tài liệu PDF, có thể là báo cáo kế toán, nghiên cứu hay thậm chí là sách điện tử yêu thích. Nhưng làm sao nếu cần trích xuất dữ liệu một cách tự động thay vì làm thủ công? Đây là lúc Python và thư viện tuyệt vời PyPDF2 bước vào.

Các bước cơ bản khi trích xuất văn bản

Để trích xuất văn bản từ PDF thành công, bạn cần thực hiện một số bước đơn giản:

  1. Đọc file PDF.
  2. Phân tích nội dung PDF.
  3. Trích xuất văn bản cho phân tích sau này.

2. Đọc và phân tích file PDF

Hãy xem cách mở và đọc một tài liệu PDF trong Python. Đầu tiên, chúng ta cần import PyPDF2:

Python

import PyPDF2

Bây giờ, hãy mở tài liệu PDF. Giả sử chúng ta có file sample.pdf mà chúng ta muốn phân tích. Hãy tải nó lên và kiểm tra số trang trong đó.

Tải file PDF

Python

# Mở file PDF
with open("sample.pdf", "rb") as pdf_file:
    # Tạo đối tượng PDF Reader
    pdf_reader = PyPDF2.PdfReader(pdf_file)

    # Lấy tổng số trang
    num_pages = len(pdf_reader.pages)
    print(f"Tổng số trang trong tài liệu: {num_pages}")

Trích xuất văn bản

Bây giờ, khi tài liệu PDF đã được mở, hãy trích xuất văn bản từ đó. Chúng ta cần:

  • PdfReader mở file PDF để đọc.
  • Chúng ta sử dụng vòng lặp for để duyệt qua tất cả các trang và gọi extract_text() để trích xuất văn bản.
  • Văn bản được trích xuất sẽ được lưu vào biến text và có thể được in ra hoặc xử lý.

Đây là một ví dụ về cách nó có thể trông như thế nào:

Python

import PyPDF2

# Mở file PDF
with open("sample.pdf", "rb") as pdf_file:
    pdf_reader = PyPDF2.PdfReader(pdf_file)
    text = ""
    
    # Trích xuất văn bản từ mỗi trang
    for page_num in range(len(pdf_reader.pages)):
        page = pdf_reader.pages[page_num]
        text += page.extract_text() + "\n"

print(text)

Trích xuất văn bản từ các trang cụ thể

Nếu bạn chỉ cần văn bản từ một trang cụ thể thì sao? Ví dụ, giả sử, chúng ta muốn trích xuất văn bản chỉ từ trang thứ ba. Điều này được thực hiện như sau:

Python

import PyPDF2

with open("sample.pdf", "rb") as pdf_file:
    pdf_reader = PyPDF2.PdfReader(pdf_file)
    page = pdf_reader.pages[2]  # Trích xuất văn bản từ trang thứ ba (chỉ số 2)
    text = page.extract_text()

print(text)

Ví dụ này cho phép bạn trích xuất văn bản chỉ từ trang thứ ba, điều này có thể hữu ích nếu tài liệu có rất nhiều trang và bạn muốn giới hạn việc xử lý. PyPDF2 sử dụng đánh số trang bắt đầu từ 0.

3. Tự động hóa xử lý văn bản từ PDF

Sau khi trích xuất văn bản từ PDF, nó có thể được phân tích và xử lý để phân tích dữ liệu sâu hơn. PyPDF2 cho phép tự động hóa quy trình này, điều này đặc biệt hữu ích khi làm việc với khối lượng lớn tài liệu.

Trích xuất và lưu văn bản vào một file riêng

Để tiện lợi cho phân tích sau này, bạn có thể lưu văn bản đã được trích xuất vào một file văn bản. Điều này sẽ giúp dễ dàng xử lý hơn.

Python

import PyPDF2

# Mở file 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"

# Lưu văn bản đã trích xuất vào file
with open("extracted_text.txt", "w", encoding="utf-8") as text_file:
    text_file.write(text)

Xử lý và phân tích văn bản đã trích xuất

Sau khi trích xuất văn bản, bạn có thể phân tích nó bằng Python. Thường thì, người ta sử dụng các thư viện như re (biểu thức chính quy), nltk (Natural Language Toolkit) hoặc pandas.

Đếm số từ và tìm các cụm từ khóa

Giả sử chúng ta có file văn bản extracted_text.txt và chúng ta muốn đếm số lần xuất hiện của một số từ và cụm từ nhất định trong tài liệu.

Python

import re

# Mở văn bản đã trích xuất
with open("extracted_text.txt", "r", encoding="utf-8") as text_file:
    text = text_file.read()

# Tìm kiếm và đếm các từ khóa
keywords = ["báo cáo", "dữ liệu", "phân tích"]
keyword_counts = {keyword: len(re.findall(keyword, text, re.IGNORECASE)) for keyword in keywords}

print("Tần suất từ khóa:", keyword_counts)

Ở đây:

  • Chúng ta mở văn bản đã lưu lại.
  • Sử dụng biểu thức chính quy để đếm số lần từ khóa xuất hiện (không phân biệt chữ hoa/thường).
  • Thu được tần suất xuất hiện của mỗi từ khóa.

4. Ưu điểm và hạn chế của PyPDF2

Ưu điểm:

  • Dễ sử dụng cho việc trích xuất văn bản và xử lý trang cơ bản.
  • Hỗ trợ các hoạt động cơ bản: đọc văn bản, ghép và tách tài liệu.
  • Dễ dàng tích hợp với các thư viện Python khác.

Hạn chế:

  • PyPDF2 không phải lúc nào cũng trích xuất văn bản chính xác từ PDF phức tạp với nhiều cấp định dạng, bảng và hình ảnh.
  • Không hỗ trợ trực tiếp việc trích xuất hình ảnh và bảng biểu.
  • Không hỗ trợ xử lý file được mã hóa hoặc bảo vệ bằng mật khẩu (dù có thể thử gỡ bỏ bảo vệ nếu biết mật khẩu).
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION