Spaces:
Sleeping
Sleeping
import gradio as gr | |
import easyocr | |
import cv2 | |
import numpy as np | |
from PIL import Image | |
# Create an EasyOCR Reader | |
reader = easyocr.Reader(['en']) | |
def process_image(image): | |
# Convert the PIL image to a numpy array (compatible with OpenCV) | |
image_np = np.array(image) | |
# Convert the image to RGB (OpenCV loads as BGR, EasyOCR expects RGB) | |
image_rgb = cv2.cvtColor(image_np, cv2.COLOR_BGR2RGB) | |
# Use EasyOCR to read text from the image | |
result = reader.readtext(image_rgb) | |
# Draw bounding boxes around detected text | |
for (bbox, text, prob) in result: | |
(top_left, top_right, bottom_right, bottom_left) = bbox | |
top_left = tuple(map(int, top_left)) | |
bottom_right = tuple(map(int, bottom_right)) | |
cv2.rectangle(image_np, top_left, bottom_right, (0, 255, 0), 2) | |
# Convert back to RGB for display | |
result_image = Image.fromarray(cv2.cvtColor(image_np, cv2.COLOR_BGR2RGB)) | |
# Combine detected text and their confidence scores | |
detected_text = "\n".join([f"Detected text: {text}, Confidence: {prob:.2f}" for (_, text, prob) in result]) | |
return result_image, detected_text | |
# Gradio Interface | |
interface = gr.Interface( | |
fn=process_image, | |
inputs="image", | |
outputs=["image", "text"], | |
title="OCR with EasyOCR", | |
description="Upload an image, and the system will detect text using EasyOCR and display it." | |
) | |
# Launch the interface | |
interface.launch() | |