import gradio as gr import cv2 import pytesseract from PIL import Image def ocr(image): # Step 1: Convert the image to gray scale gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # Step 2: Perform OCR on the image text = pytesseract.image_to_string(gray) # Step 3: Prepare the output output = { "step1": "The first step is to convert the image to grayscale. This often improves the accuracy of OCR.", "step1_image": gray, "step2": "The second step is to perform OCR on the grayscale image using pytesseract.", "step2_text": text } return output def process_output(output): output["step1_image"] = Image.fromarray(output["step1_image"]) return output iface = gr.Interface(fn=ocr, inputs=gr.Image(type="pil"), outputs=["text", "image", "text", "text"]) iface.process_output = process_output iface.launch()