Açık Kaynak Python PDF Ayrıştırıcı Kütüphanesi

PDF belgelerinden metin, resim, tablo ve diğer içerikleri ayrıştırmak, okumak ve çıkarmak için bu ücretsiz ve açık kaynaklı Python kütüphanesini deneyin.

PyMuPDF nedir?

Fitz olarak da bilinen PyMuPDF, PDF dosyalarıyla çalışmak için kapsamlı bir araç seti sağlayan açık kaynaklı bir Python kütüphanesidir. Kullanıcılar PyMuPDF ile PDF'leri açma, metin, resim ve tabloları çıkarma, döndürme ve kırpma gibi sayfa özelliklerini düzenleme, yeni PDF belgeleri oluşturma ve PDF sayfalarını resimlere dönüştürme gibi görevleri verimli bir şekilde gerçekleştirebilir.

PyMuPDF aşağıda listelenen çeşitli özellikleri destekler:

  • PDF Belge Okuma: PyMuPDF, PDF belgelerini açabilir ve okuyabilir, böylece içlerindeki metinlere, resimlere ve diğer içeriklere erişebilirsiniz.
  • Metin Çıkarımı: Metin içeriği, yazı tipleri ve düzen bilgileri dahil olmak üzere PDF belgelerinden metin çıkarabilirsiniz.
  • Görüntü Çıkarma: JPEG veya PNG gibi çeşitli formatlardaki PDF belgelerinden görüntü çıkarabilirsiniz.
  • Tablo Çıkarma: PDF belgelerinden tabloları da çıkarabilirsiniz.

Bu incelemede, birincil odak noktamız kütüphanenin çıkarma ve ayrıştırma özellikleri olacak. Bölme, birleştirme ve sayfa yönetimi özelliklerinin derinlemesine bir değerlendirmesi için lütfen buraya tıklayın.

GitHub

GitHub İstatistikleri

İsim: PyMuPDF
Dil: Python
Yıldızlar: 6.9K
Çatallar: 589
Lisans: GNU Affero General Public License v3.0
Depo en son şu tarihte güncellendi: 2025-04-15

PyMuPDF'e Başlarken

PyMuPDF'i kurmak ve kullanmak için Python 3.8.0 veya üzeri sürüme ihtiyacınız var. Bu nedenle, önce Python'u kurun ve ardından aşağıdaki komutları kullanarak PyMuPDF'i makinenize pip ve sanal ortam kullanarak kurun.

Linux


python -m venv pymupdf-venv
. pymupdf-venv/bin/activate
pip install pymupdf

Mac OS X


python -m venv pymupdf-venv
. pymupdf-venv/bin/activate
pip install pymupdf

Pencereler


python -m venv pymupdf-venv
.\pymupdf-venv\Scripts\activate
pip install pymupdf  

PDF'den Metni Çıkar

Aşağıdaki kodda gösterildiği gibi, Python'daki PyMuPDF kütüphanesini kullanarak, kütüphanede sağlanan fonksiyonları kullanarak bir PDF belgesinden metin çıkarabilir ve kelime sayımı gibi metin analizleri yapabilirsiniz:

# Import PyMuPDF
import fitz
# Open a PDF file
pdf_document = "documentprocessing.pdf"
doc = fitz.open(pdf_document)
# Initialize an empty string to store extracted text
extracted_text = ""
# Iterate through each page and extract text
for page_num in range(doc.page_count):
page = doc[page_num]
extracted_text += page.get_text()
# Close the PDF document
doc.close()
# Perform text analysis (e.g., count words)
word_count = len(extracted_text.split())
print(f"The Extracted text is as follows:\n{extracted_text}")
print(f"Total words in the document: {word_count}")

Çıktı

Aşağıdaki görselde PDF dosyasındaki çıkarılan metin ve kelime sayısı gösterilmektedir:

PDF'den Görüntüleri Çıkar

Python'da bir PDF belgesinden görüntüleri çıkarmak için PyMuPDF kütüphanesini kullanabiliriz. Aşağıdaki kod parçacığı belirtilen PDF dosyasını açar, PDF'den görüntüleri çıkarır ve bunları geçerli çalışma dizinine kaydeder:

# Import PyMuPDF
import fitz
# File path you want to extract images from
file = "data.pdf"
# Open the file
pdf_file = fitz.open(file)
# Iterate over PDF pages
for page_index in range(len(pdf_file)):
# Get the page itself
page = pdf_file[page_index]
# Get the image list for the page
image_list = page.get_images(full=True)
# Printing the number of images found on this page
if image_list:
print(f"[+] Found a total of {len(image_list)} images in page {page_index + 1}")
else:
print("[!] No images found on page", page_index + 1)
# Extract images from the page
for image_index, img in enumerate(image_list, start=1):
xref = img[0]
base_image = pdf_file.extract_image(xref)
image_bytes = base_image["image"]
image_ext = base_image["ext"]
# Save the image to a file
image_filename = f"page_{page_index + 1}_image_{image_index}.{image_ext}"
with open(image_filename, "wb") as img_file:
img_file.write(image_bytes)
# Close the PDF document
pdf_file.close()

Çıktı

Aşağıda PDF belgesinden çıkarılan PNG Görüntüsü bulunmaktadır

PDF'den Tabloları Çıkar

Ayrıca bir PDF belgesini işlemek ve ondan tablolar çıkarmak için PyMuPDF kütüphanesini de kullanabiliriz. Belirtilen PDF dosyasını açan ve PDF belgesinden tablolar çıkaran aşağıdaki kod parçacığını kontrol edin:

# import package PyMuPDF
import fitz
# Open some document, for example a PDF (could also be EPUB, XPS, etc.)
doc = fitz.open("table_handling_example.pdf")
# Load a desired page. This works via 0-based numbers
page = doc[0]
# Look for tables on this page and display the table count
tabs = page.find_tables()
print(f"{len(tabs.tables)} table(s) on {page}")
# Select the first table
tab = tabs[0]
df = tab.to_pandas()
print("Table:")
print(df)

Çıktı

Aşağıdaki ekran görüntüsü PDF belgesinden çıkarılan tabloyu göstermektedir:

PDF'ye Metin Ekle

Aşağıdaki Python kod parçası, bir PDF dosyasına metin eklemek ve değiştirilmiş PDF'yi text.pdf olarak kaydetmek için PyMuPDF kütüphanesinin kullanımını göstermektedir:

# Import PyMuPDF
import fitz
# Open a PDF file
doc = fitz.open("documentprocessing.pdf")
page = doc[0] # Access the first page
# Define the starting point for the text
p = fitz.Point(75, 150)
# Define the text to be inserted
text = "Some text,\nspread across\nseveral lines."
# Insert the text on the page
rc = page.insert_text(p, text)
# Print the number of lines printed on the page
print("%i lines printed on page %i." % (rc, page.number))
# Save the modified PDF to a new file
doc.save("text.pdf")

Çıktı

Yukarıdaki kod kullanılarak eklenen metin aşağıda verilen kırmızı kutucuk içinde vurgulanmıştır:

PyMuPDF ile OCR kullanarak PDF Metin Tanıma

We will perform OCR on the PDF file containing the following image:

# Import PyMuPDF
import fitz
import os
# Set the TESSDATA_PREFIX environment variable to the folder containing the language file
os.environ['TESSDATA_PREFIX'] = 'F://'
# Open the PDF file
pdf_document = fitz.open('data.pdf')
# Get the page from the PDF document
page_number = 1
page = pdf_document[page_number - 1]
# Perform OCR using get_textpage_ocr
textpage_ocr = page.get_textpage_ocr(flags=3, language='eng', dpi=72, full=False, tessdata=None)
# Extract text from the OCR result
text = textpage_ocr.extractText()
# Print the OCR result
print(text)
# Close the PDF document
pdf_document.close()

Çıktı

Aşağıdaki resim, sağlanan PDF dosyasında bulunan resimden çıkarılan metni göstermektedir:

Çözüm

Özetle, PyMuPDF bazı belirgin güçlü ve zayıf yönleri olan profesyonel bir araçtır. OCR ve metin çıkarma gibi görevler için harikadır ve bu da onu PDF'lerdeki metinleri işlemek için değerli kılar.

Ancak, özellikle PDF'ler karmaşık bir yapıya veya daha fazla sayfa sayısına sahip olduğunda PDF'lerden tabloları çıkarmada pek iyi değildir, bu bazı kullanıcılar için bir dezavantaj olabilir. Ayrıca, belirli durumlarda Pandas ve Tesseract OCR dil veri dosyaları gibi ek kütüphaneler gerektirebilir ve bu da kullanımına karmaşıklık katar. Bu sınırlamalara rağmen, PyMuPDF PDF'lerdeki metinlerle çalışmak için sağlam bir seçim olmaya devam ediyor.

Benzer Ürünler

 Türkçe