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:
-
Bạn cần cài đặt gói có tên "pypdf2" để xử lý tệp có phần mở rộng “.pdf”. 
-
Bạn có thể thấy gói 'pypdf2' đã được cài đặt như bên dưới. 
Đọ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

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.

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.
Kết quả ở trên là 1. Vì tệp pdf chỉ có một trang.
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()'.
Đ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.

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'.
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.
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
-
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'. 
-
Bạn có thể thấy gói 'python-docx' đã được cài đặt như bên dưới. 
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

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 đề

Đ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.

Đ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

Đ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'.

Đ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

Đ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'.

Đ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.

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.

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ể.
- Tài liệu của Python Docx
- 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
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:
Bạn cần cài đặt gói có tên "pypdf2" để xử lý tệp có phần mở rộng “.pdf”.
Bạn có thể thấy gói 'pypdf2' đã được cài đặt như bên dưới.
Đọ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
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.
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.
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.
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'.
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
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'.
Bạn có thể thấy gói 'python-docx' đã được cài đặt như bên dưới.
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
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 đề
Đ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.
Đ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
Đ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'.
Đ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
Đ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'.
Đ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.
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.
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ể.
Tài liệu tham khảo:
Automate Boring Stuff With Python: Làm việc với Tài liệu Word