Thư viện chú thích PDF Python nguồn mở
Hãy thử thư viện Python mã nguồn mở miễn phí này để thêm và trích xuất chú thích từ tài liệu PDF.
Pypdf là gì?
Pypdf là một thư viện python miễn phí và mã nguồn mở được biết đến với bộ tính năng đa dạng để xử lý tài liệu PDF trong môi trường python. Công cụ này thực sự hữu ích cho nhiều thao tác PDF khác nhau nhưng chúng tôi sẽ tập trung vào các tính năng liên quan đến chú thích của nó trong bài đánh giá này.
Các tính năng đáng chú ý của pypdf liên quan đến chú thích bao gồm:
- Thêm chú thích hình dạng: Chúng ta có thể vẽ các hình dạng như đường thẳng, hình chữ nhật, hình elip và đa giác, v.v. trên các khu vực cụ thể của trang PDF dưới dạng chú thích.
- Thêm chú thích văn bản: Chúng ta có thể thêm chú thích văn bản vào các vị trí cụ thể của trang PDF.
- Thêm chú thích liên kết: Bạn cũng có thể thêm chú thích liên kết (như siêu liên kết) vào tài liệu PDF.
- Trích xuất chú thích: Chúng ta có thể lặp lại và trích xuất thông tin về tất cả chú thích trong tài liệu PDF bằng thư viện pypdf.
Bắt đầu với pypdf
Bạn cần Python phiên bản 3.6.0 trở lên để cài đặt và sử dụng pypdf. Vì vậy, trước tiên hãy cài đặt Python rồi sử dụng các lệnh bên dưới để cài đặt pypdf trên máy của bạn bằng pip và môi trường ảo.
Linux
python3 -m venv venv
source venv/bin/activate
pip install pypdf
Hệ điều hành MacOS
python -m venv venv
source venv/bin/activate
pip install pypdf
Cửa sổ
python3 -m venv venv
venv\Scripts\activate.bat
pip install pypdf
Thêm chú thích hình chữ nhật vào PDF
Chúng ta có thể thêm chú thích hình chữ nhật vào tài liệu PDF bằng thư viện pypdf. Chúng ta sẽ sử dụng lớp Rectangle của mô-đun pypdf.annotations từ thư viện pypdf để định nghĩa hình chữ nhật. Sau đó, chúng ta sẽ sử dụng phương thức add_annotations của lớp PDFWriter để thêm chú thích hình chữ nhật vào PDF.
Kiểm tra đoạn mã bên dưới để biết chi tiết:
# Import necessary modules from pypdf library | |
from pypdf import PdfReader, PdfWriter | |
from pypdf.annotations import Rectangle | |
# Read the PDF file using PdfReader | |
reader = PdfReader("documentprocessing.pdf") | |
# Get the first page of the PDF | |
page = reader.pages[0] | |
# Create a new PdfWriter object to write the modified PDF | |
writer = PdfWriter() | |
# Add the page from the original PDF to the new writer | |
writer.add_page(page) | |
# Define the rectangle annotation with coordinates (35, 690, 170, 720) | |
annotation = Rectangle(rect=(35, 690, 170, 720)) | |
# Add the rectangle annotation to the first page of the new PDF | |
writer.add_annotation(page_number=0, annotation=annotation) | |
# Write the modified PDF to a new file ("annotated-pdf.pdf") | |
with open("annotated-pdf.pdf", "wb") as fp: | |
writer.write(fp) |
Đầu ra
Trong ảnh chụp màn hình bên dưới, bạn có thể thấy hình chữ nhật được thêm vào để chú thích cho từ Nguồn mở:
Thêm chú thích văn bản vào PDF
Chúng tôi tạo chú thích văn bản bằng lớp Text từ mô-đun pypdf.annotations của thư viện pypdf. Sau đó, chúng tôi có thể sử dụng phương thức add_annotations của lớp PDFWriter từ thư viện pypdf để thêm chú thích vào PDF. Chú thích văn bản được thêm dưới dạng biểu tượng mở rộng và hiển thị văn bản khi nhấp vào biểu tượng. Kiểm tra đoạn mã bên dưới để biết chi tiết:
# Import necessary classes and modules from PyPDF library | |
from pypdf import PdfReader, PdfWriter | |
from pypdf.annotations import Text | |
# Open the original PDF file for reading | |
reader = PdfReader("documentprocessing.pdf") | |
# Get the first page of the original PDF | |
page = reader.pages[0] | |
# Create a new PDF writer object | |
writer = PdfWriter() | |
# Add the first page of the original PDF to the new PDF | |
writer.add_page(page) | |
# Create a Text annotation with specified text and rectangle coordinates | |
annotation = Text( | |
text="Hi there,\nWelcome to DocumentProcessing.com", | |
rect=(180, 705, 240, 755) | |
) | |
# Add the annotation to the first page of the new PDF | |
writer.add_annotation(page_number=0, annotation=annotation) | |
# Open the new PDF file for writing in binary mode | |
with open("annotated.pdf", "wb") as fp: | |
# Write the content of the new PDF to the file | |
writer.write(fp) |
Đầu ra
Như chúng ta có thể thấy trong video dưới đây, đoạn mã trên thêm một biểu tượng vào PDF ở vị trí đã chỉ định, biểu tượng này sẽ hiển thị chú thích văn bản khi nhấp vào biểu tượng:
Thêm chú thích liên kết vào PDF
Chú thích liên kết được tạo bằng lớp Link từ mô-đun pypdf.annotations. Tuy nhiên, vấn đề với chú thích liên kết là nó chỉ thêm liên kết nhưng không hiển thị. Để giải quyết vấn đề này, chúng tôi sẽ kết hợp một hình chữ nhật bằng lớp Rectangle từ mô-đun pypdf.annotations như chúng tôi đã giải thích trước đó. Theo cách này, người dùng có thể xác định trực quan vị trí chú thích liên kết được thêm vào. Kiểm tra đoạn mã bên dưới để hiểu rõ hơn:
# Import necessary classes and modules from the pypdf library | |
from pypdf import PdfReader, PdfWriter | |
from pypdf.annotations import Link, Rectangle | |
# Read the existing PDF file named "documentprocessing.pdf" | |
reader = PdfReader("documentprocessing.pdf") | |
# Get the first page of the PDF | |
page = reader.pages[0] | |
# Create a new PDF writer | |
writer = PdfWriter() | |
# Add the read page to the new PDF writer | |
writer.add_page(page) | |
# Create a Link annotation | |
annotation = Link( | |
# Provide the URL | |
url="https://example.com/", | |
#Provide the size and coordinates for the link annotation | |
rect=(50, 600, 200, 650), | |
) | |
# Create a Rectangle annotation | |
annotation2 = Rectangle( | |
rect=(50, 600, 200, 650), | |
) | |
# Add the Link and Rectangle annotations to the first page of the new PDF | |
writer.add_annotation(page_number=0, annotation=annotation) | |
writer.add_annotation(page_number=0, annotation=annotation2) | |
# Write the annotated PDF to a new file named "link-annotated-pdf.pdf" | |
with open("link-annotated-pdf.pdf", "wb") as fp: | |
writer.write(fp) |
Đầu ra
Như chúng ta có thể thấy trong kết quả, hình chữ nhật đóng vai trò là một khu vực, khi nhấp vào sẽ chuyển hướng người dùng đến liên kết đã chỉ định.
Trích xuất chú thích từ PDF
Chúng ta có thể trích xuất chú thích từ PDF bằng thư viện pypdf. Chúng ta lặp lại tất cả các chú thích trên các trang PDF và sau đó sử dụng phương thức get_object để lấy đối tượng chú thích. Sau đó, chúng ta trích xuất thông tin có liên quan từ đối tượng. Kiểm tra đoạn mã bên dưới để biết chi tiết:
# Import necessary modules from pypdf library | |
from pypdf import PdfReader | |
# Create a PdfReader object to read the PDF file | |
reader = PdfReader("documentprocessing.pdf") | |
# Iterate through all pages in the PDF | |
for page in reader.pages: | |
# Check if the page contains annotations ("/Annots" key) | |
if "/Annots" in page: | |
# Iterate through each annotation on the page | |
for annot in page["/Annots"]: | |
# Get the annotation object | |
obj = annot.get_object() | |
# Extract relevant information from the annotation object | |
# - "subtype" represents the type of annotation (e.g., text, link) | |
# - "location" represents the rectangle coordinates of the annotation | |
annotation = {"subtype": obj["/Subtype"], "location": obj["/Rect"]} | |
# Print the extracted annotation information | |
print(annotation) |
Đầu ra
Như chúng ta có thể thấy trong ảnh chụp màn hình bên dưới, chương trình đã trả về loại chú thích và tọa độ của các chú thích trong tài liệu PDF:
Phần kết luận
Pypdf cho phép các nhà phát triển Python thêm các loại chú thích khác nhau vào PDF và truy cập thông tin cần thiết về chú thích, chẳng hạn như loại và vị trí của chúng, khiến nó trở thành lựa chọn thiết thực cho các tác vụ yêu cầu thêm chú thích và trích xuất dữ liệu về chú thích.