import gradio as gr import numpy as np from transformers import InferenceClient client = InferenceClient("models/microsoft/trocr-base-handwritten") def sepia(input_img): sepia_filter = np.array([ [0.393, 0.769, 0.189], [0.349, 0.686, 0.168], [0.272, 0.534, 0.131] ]) sepia_img = input_img.dot(sepia_filter.T) sepia_img /= sepia_img.max() sepia_values = repr(sepia_img) return sepia_img, sepia_values ## https://www.gradio.app/docs/gradio/blocks ## required positional arguments: 'inputs' and 'outputs' def process_image(image): try: # Run the image through the model result = client(inputs=image) # Extract the text from the result text = result['text'] return text except Exception as e: return f"Error: {str(e)}" def additional_input(text): return f"Additional input received: {text}" sepia_interface = gr.Interface(sepia, gr.Image(), "image") with gr.Blocks() as generated_output: with gr.Column(): sepia_values_text=gr.Textbox(label="Sepia Values") output_img = gr.Image(label="Output Image") gr.Interface(fn=sepia, inputs=gr.Image(), outputs=[output_img, sepia_values_text], show_progress="full") with gr.Row(): gr.Interface( fn=process_image, inputs=output_img, outputs=gr.Textbox(label="Recognized Text"), show_progress="full") #with gr.Blocks() as generated_output: # inp = gr.Interface(sepia, gr.Image(), "image") # out = gr.Textbox() #demo = gr.TabbedInterface([sepia_interface, generated_output], ["RGB Sepia Filter", "Handwritten to Text"]) #with gr.Blocks() as demo: # with gr.Row(): # input_img = gr.Image(label="Input Image") # submit_button = gr.Button("Submit") # output_img = gr.Image(label="Output Image") # sepia_values_text = gr.Textbox(label="Sepia Values") # submit_button.click(sepia, inputs=input_img, outputs=[output_img, sepia_values_text]) if __name__ == "__main__": generated_output.launch()