|
|
import gradio as gr |
|
|
import cv2 |
|
|
import easyocr |
|
|
|
|
|
|
|
|
reader = easyocr.Reader(['en', 'hi']) |
|
|
|
|
|
|
|
|
def preprocess_image(image): |
|
|
|
|
|
return cv2.cvtColor(image, cv2.COLOR_RGB2BGR) |
|
|
|
|
|
def ocr_and_search(image, keyword): |
|
|
processed_image = preprocess_image(image) |
|
|
|
|
|
|
|
|
results = reader.readtext(processed_image) |
|
|
|
|
|
|
|
|
extracted_text = "\n".join([result[1] for result in results]) |
|
|
|
|
|
|
|
|
search_results = [line for line in extracted_text.split('\n') if keyword.lower() in line.lower()] |
|
|
|
|
|
return extracted_text, search_results |
|
|
|
|
|
|
|
|
iface = gr.Interface( |
|
|
fn=ocr_and_search, |
|
|
inputs=[gr.Image(type="numpy"), gr.Textbox(label="Keyword")], |
|
|
outputs=["text", "text"], |
|
|
title="OCR and Keyword Search", |
|
|
description="Upload an image with text and search for a keyword." |
|
|
) |
|
|
|
|
|
|
|
|
iface.launch(share=True) |
|
|
|