Spaces:
Runtime error
Runtime error
| import cv2 | |
| import easyocr | |
| import gradio as gr | |
| import base64 | |
| import json | |
| def text_extraction(image): | |
| # Convert base64 image to OpenCV format | |
| image = base64.b64decode(image.split(",")[1]) | |
| nparr = np.frombuffer(image, np.uint8) | |
| img = cv2.imdecode(nparr, cv2.IMREAD_COLOR) | |
| # Instance text detector | |
| reader = easyocr.Reader(['en'], gpu=False) | |
| # Detect text on image | |
| text_ = reader.readtext(img) | |
| threshold = 0.25 | |
| # Draw bbox and text | |
| for t_, t in enumerate(text_): | |
| bbox, text, score = t | |
| if score > threshold: | |
| cv2.rectangle(img, tuple(map(int, bbox[0])), tuple(map(int, bbox[2])), (255, 0, 0), 2) | |
| # Encode image to base64 | |
| retval, buffer = cv2.imencode('.jpg', img) | |
| img_base64 = base64.b64encode(buffer).decode('utf-8') | |
| # Create JSON response | |
| response_json = { | |
| 'annotated_image_base64': img_base64, | |
| 'text_data': text_ | |
| } | |
| # Convert the dictionary to a JSON string | |
| response_json_str = json.dumps(response_json, default=str) | |
| return response_json_str | |
| # Define Gradio interface | |
| iface = gr.Interface( | |
| fn=text_extraction, | |
| inputs=gr.Image(), | |
| outputs=["image", "json"] | |
| ) | |
| # Launch the Gradio interface | |
| iface.launch() | |