Spaces:
Running
Running
import gradio as gr | |
import matplotlib.pyplot as plt | |
import keras_ocr | |
import cv2 | |
import math | |
import numpy as np | |
def midpoint(x1, y1, x2, y2): | |
x_mid = int((x1 + x2) / 2) | |
y_mid = int((y1 + y2) / 2) | |
return (x_mid, y_mid) | |
def inpaint_text(img, pipeline): | |
prediction_groups = pipeline.recognize([img]) | |
mask = np.zeros(img.shape[:2], dtype="uint8") | |
for box in prediction_groups[0]: | |
x0, y0 = box[1][0] | |
x1, y1 = box[1][1] | |
x2, y2 = box[1][2] | |
x3, y3 = box[1][3] | |
x_mid0, y_mid0 = midpoint(x1, y1, x2, y2) | |
x_mid1, y_mid1 = midpoint(x0, y0, x3, y3) | |
thickness = int(math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)) | |
cv2.line(mask, (x_mid0, y_mid0), (x_mid1, y_mid1), 255, thickness) | |
inpainted_img = cv2.inpaint(img, mask, 7, cv2.INPAINT_NS) | |
return inpainted_img | |
pipeline = keras_ocr.pipeline.Pipeline() | |
def process_image(img): | |
img = np.array(img) | |
result = inpaint_text(img, pipeline) | |
return result | |
interface = gr.Interface( | |
fn=process_image, | |
inputs=gr.Image(type="numpy"), | |
outputs=gr.Image(type="numpy"), | |
title="Remove Text from Images", | |
description="Upload an image, and the model will remove any text present in the image using OCR and inpainting techniques." | |
) | |
interface.launch() | |