import gradio as gr import ObjCharRec from deep_translator import GoogleTranslator import markdown as md import translate_speak import base64 langs_list = GoogleTranslator().get_supported_languages() langs_dict = GoogleTranslator().get_supported_languages(as_dict=True) def encode_image(image_path): with open(image_path, "rb") as image_file: return base64.b64encode(image_file.read()).decode('utf-8') # Encode the images github_logo_encoded = encode_image("Images/github-logo.png") linkedin_logo_encoded = encode_image("Images/linkedin-logo.png") website_logo_encoded = encode_image("Images/ai-logo.png") usecase_img_encoded = encode_image("Images/UML/Usecase.png") class_img_encoded = encode_image("Images/UML/class.png") object_img_encoded = encode_image("Images/UML/object.png") sequence_img_encoded = encode_image("Images/UML/sequence.png") component_img_encoded = encode_image("Images/UML/component.png") colab_img_encoded = encode_image("Images/UML/colab.png") activity_img_encoded = encode_image("Images/UML/activity.png") css = ''' /* Header Styling */ h3, h4 { margin-top: 1.2em; margin-bottom: 0.6em; font-weight: bold; } h3 { font-size: 1.7em; border-bottom: 2px solid #00b9c2; color: 00b9c2; padding-bottom: 0.3em; margin-bottom: 1em; } h4 { font-size: 1.5em; } code { color: rgb(202 253 255); } code1{ color: #00b9c2; } /* Text Emphasis */ p, li { text-align: justify; margin: 0.6em 0; font-size: 1.2em; } em { color: #6c757d; font-style: italic; } /* List Styling */ ul { padding-left: 1.2em; margin-bottom: 1em; } li { margin-bottom: 0.5em; } /* Link Styling */ a { color: #007bff; text-decoration: none; } a:hover { text-decoration: underline; } /* Image Styling */ img { border-radius: 8px; box-shadow: -8px 8px 20px 0px rgb(0 185 194) i } /* Divider Styling */ hr { border: 0; height: 1px; background: linear-gradient(to right, rgba(0,0,0,0), rgba(0,0,0,0.3), rgba(0,0,0,0)); margin: 1.5em 0; } #component-34.column.svelte-vt1mxs.gap{ min-width: min(200px, 100%); ] footer {visibility: hidden} ''' with gr.Blocks(theme=gr.themes.Ocean(font=[gr.themes.GoogleFont("Noto Sans")]), css=css) as main_interface: gr.Markdown("# Welcome to The Linguistic Lens 👓🗣️") with gr.Tabs(): with gr.TabItem("Intro"): gr.HTML(md.description) # gr.HTML(md.usecase_diagram.format(usecase_img_encoded)) # gr.HTML(md.class_diagram.format(class_img_encoded)) # gr.HTML(md.object_diagram.format(object_img_encoded)) # gr.HTML(md.sequence_diagram.format(sequence_img_encoded)) # gr.HTML(md.colab_diagram.format(colab_img_encoded)) # gr.HTML(md.activity_diagram.format(activity_img_encoded)) # gr.HTML(md.component_diagram.format(component_img_encoded)) with gr.TabItem("Simple OCR"): gr.Markdown("Paddle OCR") with gr.Row(): with gr.Column(scale=0.75, min_width=300): image_input = gr.Image(label="Upload Image") with gr.Row(): clear_btn = gr.ClearButton() submit_btn = gr.Button("Submit", variant='primary') output_text = gr.Text(label="Output") # gr.Examples() submit_btn.click(fn=lambda img: ObjCharRec.ocr_with_paddle(img)[0], inputs=image_input, outputs=output_text) clear_btn.click(lambda :[None]*2, outputs=[image_input, output_text]) with gr.TabItem("⭐Translator"): with gr.Row(): with gr.Column(scale=0.75, min_width=300): with gr.Row(): image_input = gr.Image(label="Upload Image") with gr.Row(): clear_btn = gr.ClearButton() submit_btn = gr.Button("Submit", variant='primary') with gr.Column(): with gr.Row(): output_text = gr.Text(label="Output") audio_out = gr.Audio(label="Streamed Audio") lang_drop = gr.Dropdown(langs_dict, label="language", interactive=True) translate_btn = gr.Button("Translate", variant='primary') with gr.Row(): translated_txt = gr.Text(label="translated text") translated_out = gr.Audio(label="Streamed Audio") submit_btn.click(fn=ObjCharRec.ocr_with_paddle, inputs=image_input, outputs=[output_text, audio_out]) translate_btn.click(fn=translate_speak.translate_txt, inputs=[lang_drop, output_text], outputs=[translated_txt, translated_out]) clear_btn.click(lambda: [None] * 5, outputs=[image_input, output_text, translated_txt, translated_out, audio_out]) with gr.TabItem("🔜OCR Lens"): with gr.Row(): with gr.Row(): with gr.Column(scale=2): image_input = gr.Image(label="Upload Image") input_output_text = gr.Text() input_audio_out = gr.Audio() with gr.Row(): with gr.Column(scale=1): lang_abbr = {'english': 'en', 'telugu' : 'te', 'hindi': 'hi', 'kannada': 'ka', 'tamil': 'ta', 'arabic': 'ar', 'french': 'fr', 'german': 'german', 'korean': 'korean', 'Japanese': 'japan'} ocr_lang = gr.Dropdown(list(lang_abbr.keys()), label="Image-language", interactive=True) submit_btn = gr.Button("Submit", variant='primary') lang_drop = gr.Dropdown(langs_dict, label="language", interactive=True) translate_btn = gr.Button("Translate", variant='primary') clear_btn = gr.ClearButton() with gr.Row(): with gr.Column(scale=2): image_output = gr.Image(label="Upload Image") output_output_text = gr.Text() output_audio_out = gr.Audio() clear_btn.click(lambda: [None] * 6,outputs=[image_input, input_output_text, input_audio_out, image_output, output_output_text, output_audio_out]) submit_btn.click(fn=None, inputs=[image_input, ocr_lang], outputs=[image_input, input_output_text, input_audio_out]) translate_btn.click(fn=None, inputs=[]) gr.HTML(md.footer.format(github_logo_encoded, linkedin_logo_encoded, website_logo_encoded)) if __name__ == "__main__": main_interface.launch()