multiocr / app.py
Aravindh
doctr ocr added
75601b5
import gradio as gr
from multiocr import OcrEngine
from multiocr.utils import draw_bounding_boxes
# Define a function that takes an input image and processes it
def process_image(input_image, ocr_type):
# Perform y`our internal processing here
# Example: Convert the image to grayscale
ocr = OcrEngine(ocr_type)
data = ocr.text_extraction(input_image)
json_response = ocr.text_extraction_to_df(data)
output_image = draw_bounding_boxes(input_image, data)
return output_image, json_response
# Define the Gradio interface
def app():
ocr_type = gr.inputs.Dropdown(choices=["tesseract", "paddle_ocr", "easy_ocr", "aws_textract", "doctr_ocr"], label="selct one ocr")
# Create an input component for uploading the image
image_input = gr.inputs.Image(label="Upload Image", type="filepath")
# Create an output component for displaying the processed image
image_output = gr.outputs.Image(label="Output Image", type="pil")
# Create an output component for displaying the JSON response
df = gr.outputs.Dataframe(label="DataFrame", type="pandas")
# Create a function that will be called when the app is run
def process_and_display_image(input_image, ocr_type):
processed_image, json_response = process_image(input_image, ocr_type)
return processed_image, json_response
# Create the Gradio interface
examples = [["./data/simple.jpg"], ["./data/invoice.jpg"], ["./data/publay_sample.jpeg"], ["./data/complicated.jpg"]]
gr.Interface(fn=process_and_display_image, inputs=[image_input, ocr_type], outputs=[image_output, df], examples=examples).launch(server_port=7860,server_name="0.0.0.0")
if __name__ == "__main__":
# Run the app
app()