Chuyển đến nội dung chính

Đọc và Chỉnh sửa tài liệu PDF và Word từ Python

Hướng dẫn này sẽ giúp bạn đọc tài liệu PDF và hợp nhất nhiều tệp PDF thành một tệp. Nó cũng sẽ chỉ cách đọc và ghi tài liệu Word từ Python.
· 8 phút đọc

Khám phá cùng AI

Tài liệu PDF

PDF là Định dạng Tài liệu Di động (Portable Document Format) có thể chứa văn bản, hình ảnh, biểu đồ,... khác với tệp văn bản thuần. Đây là loại tệp có phần mở rộng “.pdf” và do Adobe phát minh. Loại tệp này độc lập với các nền tảng như phần mềm, phần cứng và hệ điều hành.

Các bước cài đặt gói:

  1. Bạn cần cài đặt gói có tên "pypdf2" để xử lý tệp có phần mở rộng “.pdf”. install package 1

  2. Bạn có thể thấy gói 'pypdf2' đã được cài đặt như bên dưới. install package 2

Đọc tài liệu PDF và trích xuất dữ liệu

Bạn sẽ chỉ trích xuất văn bản từ tệp pdf vì PyPDF2 có hạn chế khi trích xuất nội dung đa phương tiện phong phú. Logo, hình ảnh, v.v. không thể trích xuất được — bạn cần tải xuống tệp pdf sau để thực hành theo hướng dẫn này.
Tải tệp Pdf

import pdf

Câu lệnh 'import' trong đoạn mã trên nạp mô-đun PyPDF2. Bạn cần dùng 'open('pdfFileName' , 'openingMode')' trong đó 'pdfFilename' là 'test.pdf', và 'openingMode' là 'rb' tức là chỉ đọc ở dạng nhị phân.

open pdf

PyPDF2 có phương thức 'PdfFileReader', nhận đối tượng mới tạo 'pdfFileObject'. Giờ bạn có thể truy cập thuộc tính 'numPages' từ 'pdfFileObject', cho biết tổng số trang.

total number of pages Kết quả ở trên là 1. Vì tệp pdf chỉ có một trang.

first page Bạn có thể dùng phương thức 'getPage(0)' trong pdfReaderObject để lấy trang đầu tiên. Kết quả được lưu vào 'firstPageObject' và mọi văn bản trong trang đó có thể in ra bằng phương thức 'extractText()'.

all text Đoạn mã trên trả về toàn bộ văn bản từ tệp pdf. Tuy nhiên, hình ảnh không được hiển thị trong terminal và không thể lấy bằng pyPDF2.

Hợp nhất nhiều tệp PDF thành một PDF

Bạn sẽ hợp nhất hai tệp pdf khác nhau thành một tệp pdf duy nhất. Tệp PDF cũ là tệp bạn đã làm trước đó, còn tệp PDF mới có thể tải từ liên kết sau:
Tệp PDF mới.

new pdf

Bạn sẽ nhập mô-đun PdfFileMerger từ gói PyPDF2 để hỗ trợ hợp nhất các tệp pdf. 'path' được chỉ định để xác định đường dẫn thư mục chứa tệp. Các tệp pdf cần hợp nhất được liệt kê trong 'pdf_files'.

merger object Bạn có thể thấy đối tượng merger được tạo bằng 'PdfFileMerger'. Vòng lặp chạy qua từng tệp trong danh sách và hợp nhất bằng cách truyền path và tên tệp vào phương thức 'append'. Cuối cùng, kết quả đầu ra được ghi bằng 'merger.write()' để tạo tệp PDF mới chứa nội dung đã hợp nhất.

merged pdf Hình trên cho thấy 'merged.pdf', gồm nội dung hợp nhất từ 'test.pdf' và 'test-1.pdf'.

Tài liệu Word

Tài liệu Word có phần mở rộng ".docx" ở cuối tên tệp. Những tài liệu này không chỉ chứa văn bản như tệp văn bản thuần, mà là tài liệu rich text. Tài liệu rich text chứa các cấu trúc định dạng khác nhau như kích cỡ, căn chỉnh, màu sắc, hình ảnh, phông chữ, v.v.

Bạn cần một ứng dụng để làm việc với Tài liệu Word. Ứng dụng phổ biến cho hệ điều hành Windows và Mac là Microsoft Word, nhưng đây là nền tảng thuê bao trả phí. Tuy nhiên, có lựa chọn miễn phí như "LibreOffice", một ứng dụng trên Linux thường được cài sẵn. Ứng dụng có thể tải cho hệ điều hành Windows và Mac. Hướng dẫn này sẽ sử dụng Microsoft Word trên hệ điều hành Windows.

Các bước cài đặt gói

  1. Bạn cần cài đặt gói có tên "python-docx" để xử lý tài liệu Word với phần mở rộng '.docx'. python-docx package

  2. Bạn có thể thấy gói 'python-docx' đã được cài đặt như bên dưới. installed package

Bạn có thể viết mã trong shell tương tác do Python cung cấp, nhưng nên dùng Trình soạn thảo văn bản. Vì vậy, Sublime Text được dùng cho phần mã trong hướng dẫn này.

Ghi một tài liệu Word

document module imported

Bạn có thể thấy mô-đun 'document' được import từ gói 'docx' ở dòng đầu tiên. Dòng thứ hai tạo một tài liệu Word mới thông qua đối tượng Document. Tên tệp được lưu là 'first.docx' bằng 'document.save()'.

Thêm tiêu đề

add heading

Đoạn mã trên dùng 'Document()' để mở tệp mới và 'document.save('addHeader.docx')' để tạo tệp docx đã chỉnh sửa. Bạn có thể thêm tiêu đề bằng phương thức 'add_heading('text,' level=number)', trong đó văn bản là nội dung tiêu đề và mức tiêu đề từ 0 đến 4.

heading levels

Đoạn mã trên tạo ra tệp 'addedHeader.docx' mới, trong đó mức 0 tạo tiêu đề lớn có đường kẻ ngang bên dưới, còn mức 1 là tiêu đề chính. Tương tự, các mức còn lại là tiêu đề phụ với cỡ chữ giảm dần.

Thêm đoạn văn

add a paragraph

Đoạn mã trên dùng 'Document()' để mở tệp tài liệu mới và 'document.save('addParagraph.docx')' để tạo tệp docx đã chỉnh sửa. Bạn có thể thêm nội dung bằng phương thức 'add_paragraph('text,' style='required_style')' nhận văn bản và đối số tùy chọn 'style', ví dụ 'List Number' và 'List Bullet'.

newly created file

Đoạn mã trên tạo tệp 'addedParagraph.docx' mới, trong đó có một đoạn văn ở dòng đầu. Tiếp theo là một tiêu đề, bên dưới là danh sách có thứ tự với các mục số 1 và 2. Bên dưới nữa là một tiêu đề khác có hai mục trong danh sách gạch đầu dòng không thứ tự.

Thêm hình ảnh

add a picture

Đoạn mã trên dùng 'Document()' để tạo tệp tài liệu mới và 'document.save('addPicture.docx')' để tạo tệp docx đã chỉnh sửa. Bạn có thể thêm hình bằng 'add_picture()' với tham số đầu tiên 'cat-1.jpeg' là đường dẫn đến ảnh con mèo. Chiều rộng và chiều cao là tham số tùy chọn, mặc định là '72 dp', nhưng ở đây chúng ta dùng 'Inches'.

added picture

Đoạn mã trên tạo tệp 'addedPicture.docx' mới, chứa ảnh mèo có chiều rộng và chiều cao 1,25 inch.

Đọc một tài liệu Word

Bây giờ bạn sẽ đọc một tài liệu Word mẫu từ Python, có thể tìm tại:
Tải mẫu.

reading word document

Dòng đầu tiên trong mã import Document từ mô-đun 'docx' để truyền tệp tài liệu cần thiết và tạo đối tượng. 'obtainText' là một hàm nhận tệp 'fullText.docx'. Vòng lặp chạy qua từng đoạn văn được truy cập bằng 'document.paragraphs' và chèn vào một danh sách rỗng bằng phương thức 'append'. Cuối cùng, hàm trả về danh sách các đoạn văn, mỗi phần tử kết thúc bằng ký tự xuống dòng.

plain text

Kết quả trên trả về văn bản thuần không có kiểu dáng, màu sắc, v.v., không phải rich text.

Chúc mừng

Chúc mừng, bạn đã đọc xong hướng dẫn này.

Nếu bạn muốn tìm hiểu thêm về nhập dữ liệu trong Python, hãy thử khóa học Introduction to Importing Data in Python của DataCamp.

Xem thêm Hướng dẫn Cấu trúc Dữ liệu trong Python.

Bạn cũng có thể tham khảo các tài nguyên sau để mở rộng kiến thức về các chủ đề cụ thể.

  1. Tài liệu của Python Docx
  2. Tài liệu của PyPDF2

Tài liệu tham khảo:
Automate Boring Stuff With Python: Làm việc với Tài liệu Word

Chủ đề

Liên quan