import fitz import io import base64 from PIL import Image import gradio as gr import cv2 import tempfile import os def pdf_to_img(pdf_path): pdf_document = fitz.open(pdf_path) counter = 1 img_list = [] for page_number in range(len(pdf_document)): page = pdf_document[page_number] image_list = page.get_images() for image in image_list: base_img = pdf_document.extract_image(image[0]) image_data = base_img["image"] img = Image.open(io.BytesIO(image_data)) # if img.mode == "RGBA": # # Convert RGBA image to RGB # img = img.convert("RGB") extention = base_img['ext'] img.save(open(f"image{counter}.{extention}","wb")) img_list.append(f"image{counter}.{extention}") counter += 1 return (img_list) def extract_text_from_pdf(pdf_file): # Open the PDF file doc = fitz.open(pdf_file) # Initialize an empty string to store the extracted text extracted_text = "" # Iterate through each page of the PDF for page_num in range(len(doc)): # Load the page page = doc.load_page(page_num) # Extract text from the page and append it to the extracted_text string extracted_text += page.get_text() # Close the PDF document doc.close() return extracted_text title = "Extract Image and Text" with gr.Blocks(theme=gr.themes.Glass(primary_hue=gr.themes.colors.slate)) as demo: gr.Markdown(f'