Giới PDF Files, trích xuất tin nhắn và hình ảnh qua Thư viện Python miễn phí

Python miễn phí cho phép API chỉnh sửa và xuất hiện PDF tập tin, trích xuất tin nhắn và hình ảnh, chỉnh sửa PDF trang, hợp nhất và chuyển đổi PDFs một cách dễ dàng.

PyMuPDF là một API Python mã nguồn mở nhẹ bổ sung các ràng buộc và trừu tượng Python vào MuPDF. API có kích thước nhỏ nhưng rất nhanh và được cung cấp hỗ trợ một số định dạng tài liệu phổ biến bao gồm các định dạng PDF, XPS, OpenXPS, CBZ, EPUB và FB2 (sách điện tử) cũng như khoảng 10 định dạng hình ảnh phổ biến cũng có thể được mở và xử lý như tài liệu. PyMuPD rất đáng tin cậy và được biết đến với khả năng kết xuất hàng đầu. Vì thư viện có trọng lượng rất nhẹ nên nó trở thành lựa chọn tuyệt vời cho các nền tảng mà tài nguyên thường bị hạn chế, chẳng hạn như điện thoại thông minh.

Có nhiều tính năng cơ bản và nâng cao được API PyMuPDF hỗ trợ để hiển thị và chuyển đổi tài liệu PDF, chẳng hạn như chuyển đổi PDF sang PNG, truy cập và xem siêu dữ liệu, làm việc với đường viền, hiển thị trang thành hình ảnh raster hoặc vectơ (SVG), văn bản PDF Hỗ trợ tìm kiếm, trích xuất văn bản từ trang PDF, trích xuất hình ảnh từ PDF, hiển thị Hình ảnh trong GUI, sửa đổi trang PDF, tạo trang PDF mới, xóa các trang PDF không mong muốn, Nhúng dữ liệu, v.v. PyMuPDF bao gồm hỗ trợ cho nhiều nền tảng, chẳng hạn như Mac, Linux và Windows.

Previous Next

Bắt đầu với PyMuPDF

PyMuPDF có thể được cài đặt bằng đường ống, các lệnh sau sẽ được cài từ một chiếc xe Python nếu có ai sẵn sàng cho nền tảng của anh.

Cài đặt PyMuPDF qua đường ống

 python -m pip install --upgrade pip
python -m pip install --upgrade pymupdf
 

Clone PyMuPDF thông qua Git Repository

 git clone https://github.com/pymupdf/PyMuPDF.git 

Cũng có thể cài đặt thủ công; tải xuống các tệp phát hành mới nhất trực tiếp từ kho lưu trữ GitHub.

Tìm tin nhắn trong PDF tập tin qua Python

PDF là một trong những tập tin ưa thích của thế giới để chia sẻ tài liệu qua internet bởi vì nó giữ lại tất cả các định dạng văn bản và đồ trong đó. Nhưng không dễ để tìm tin nhắn bên trong những file này so với các tài liệu khác. Thư viện YouPDF miễn phí cho phép các nhà phát triển phần mềm thêm khả năng tìm tin trong các ứng dụng Python của họ. Nó cho phép tìm nơi trên trang một chuỗi tin nhắn có tồn tại.

Tìm kiếm ở đâu trên dây văn bản trang PDF xuất hiện qua Python

areas = page.search_for("mupdf") 

Chiết xuất PDF tin nhắn và hình ảnh thông qua Python API

Nguồn mở thư viện YouPDF đã bao gồm một số tính năng quan trọng để làm việc với PDF tin nhắn và hình ảnh. Thư viện đã cung cấp nhiều chức năng để trích xuất tin nhắn cũng như hình ảnh từ PDF tài liệu. Mặc định, nó cho phép việc giải quyết những tin nhắn đơn giản với các cuộc đột phá. Không định dạng, không chi tiết vị trí tin nhắn, không ảnh. Hơn nữa, nó hỗ trợ tạo ra một danh sách các khối văn bản, tạo ra một danh sách các từ, tạo ra một phiên bản toàn diện của trang bao gồm bất kỳ hình ảnh nào, và nhiều hơn nữa.

Cách trích xuất văn bản từ PDF qua API Python

from operator import itemgetter
from itertools import groupby
import fitz
doc = fitz.open( 'mydocument.pdf' )
pages = [ doc[ i ] for i in range( doc.pageCount ) ]
for page in pages:
  text_words = page.getTextWords()
  # The words should be ordered by y1 and x0
  sorted_words = SortedCollection( key = itemgetter( 3, 0 ) )
  for word in text_words:
    sorted_words.insert( word )
  # At this point you already have an ordered list. If you need to 
  # group the content by lines, use groupby with y1 as a key
  lines = groupby( sorted_words, key = itemgetter( 3 ) )

Tham gia và chia PDF tài liệu trong Python

Kết hợp các hồ sơ PDF khác nhau là một tính năng rất hữu dụng cho người dùng khả năng có một PDF hơn là có cả chục hồ sơ riêng biệt. Thư viện YouPDF miễn phí và mở rộng cho lập trình viên phần mềm quyền lực hợp nhất các tài liệu khác nhau hoặc các trang bắt chước giữa các tài liệu PDF khác nhau. Nó cũng cho người dùng sức mạnh để chia ra PDF tài liệu lớn thành các hồ sơ nhỏ hơn với vài dòng mã Python. Cũng có thể chọn một số trang cụ thể của PDF tài liệu và tạo ra một tài liệu mới.

Tạo tài liệu mới từ 10 trang cuối cùng

doc2 = fitz.open()                 # new empty PDF
doc2.insert_pdf(doc1, to_page = 9)  # first 10 pages
doc2.insert_pdf(doc1, from_page = len(doc1) - 10) # last 10 pages
doc2.save("first-and-last-10.pdf")

Đọc và xuất siêu dữ liệu PDF sang CSV qua Python

Nguồn mở thư viện YouPDF cung cấp chức năng hoàn chỉnh để truy cập và đọc dữ liệu của PDF tài liệu mà không có bất kỳ sự phụ thuộc bên ngoài nào. Nó hỗ trợ nhiều loại chìa khóa siêu dữ liệu như hẹn hò để sáng tạo, tác giả, danh hiệu, ứng dụng sáng tạo, bất kỳ chủ đề, phương pháp mã hóa, định dạng hồ sơ, và vân vân. Cũng có thể xuất siêu dữ liệu đến CSV định dạng.

 

Xuất khẩu PDF Metadata đến CSV thông qua Python API

import csv
import fitz
import argparse
parser = argparse.ArgumentParser(description="Enter CSV delimiter [;], CSV filename and documment filename")
parser.add_argument('-d', help='CSV delimiter [;]', default = ';')
parser.add_argument('-x', help='delete XML info [n]', default = 'n')
parser.add_argument('-csv', help='CSV filename')
parser.add_argument('-pdf', help='PDF filename')
args = parser.parse_args()
delim = args.d               # requested CSV delimiter character
assert args.csv, "missing CSV filename"
assert args.pdf, "missing PDF filename"
print "delimiter", args.d
print "xml delete", args.x
print "csv file", args.csv
print "pdf file", args.pdf
print "----------------------------------------"
doc = fitz.open(args.pdf)
oldmeta = doc.metadata
print "old metadata:"
for k,v in oldmeta.items():
    print k, ":",v
with open(args.csv) as tocfile:
    tocreader = csv.reader(tocfile, delimiter = delim)
    for row in tocreader:
        assert len(row) == 2, "each row must contain 2 entries"
        oldmeta[row[0]] = row[1]
print "----------------------------------------"
print "\nnew metadata:"
for k,v in oldmeta.items():
    print k, ":",v
doc.set_metadata(oldmeta)
doc.saveIncr()
 Tiếng Việt