Spaces:
Build error
Build error
| 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() | |