PyMuPDF / app.py
kivilaid's picture
Update app.py
b18b09a verified
import gradio as gr
import fitz # PyMuPDF
import os
import shutil
from PIL import Image
def extract_images_pymupdf(pdf_file):
pdf_path = "uploaded_pdf.pdf"
with open(pdf_path, "wb") as f:
f.write(pdf_file)
doc = fitz.open(pdf_path)
images = []
for page in doc:
pix = page.get_pixmap()
img = Image.frombytes("RGB", [pix.width, pix.height], pix.samples)
images.append(img)
return images if images else None
def clear_directory(directory):
for filename in os.listdir(directory):
file_path = os.path.join(directory, filename)
try:
if os.path.isfile(file_path) or os.path.islink(file_path):
os.unlink(file_path)
elif os.path.isdir(file_path):
shutil.rmtree(file_path)
except Exception as e:
print(f"Failed to delete {file_path}. Reason: {e}")
def handle_pymupdf_extraction(pdf_file):
images = extract_images_pymupdf(pdf_file)
return images
interface = gr.Interface(
fn=handle_pymupdf_extraction,
inputs=gr.File(type="binary", label="Upload PDF"),
outputs=gr.Gallery(label="Extracted Images"),
title="PDF Image Extractor - PyMuPDF",
description="Upload a PDF to extract images using PyMuPDF.",
)
interface.launch(share=True)