import cv2 import requests import time import os import gradio as gr def textdetect(img): if img is not None: cv2.imwrite("input.jpg",img) #if flag == True: with open('input.jpg', 'rb') as f: data = f.read() r = requests.post(os.environ["endpoint"],data=data,headers={"Ocp-Apim-Subscription-Key":os.environ["key"],"Content-Type": "application/octet-stream"}) time.sleep(3) try: r2 = requests.get(r.headers['Operation-Location'],headers={"Ocp-Apim-Subscription-Key":os.environ["key"]}) my_dict = {} print(r2.json()) lines=[] for line in r2.json()['analyzeResult']['readResults'][0]['lines']: lines.append(line['text']) #st.markdown(f"

{line['text']}

",unsafe_allow_html=True) for word in line['words']: my_dict[word['text']] = word['confidence'] #for key in my_dict: #st.metric(label='',value=f"{key}", delta=f"{my_dict[key]*100} %") #st.progress(my_dict[key]) print(lines) s = '\n'.join(lines) #s = '

' +s+ '

' return (s,my_dict) except: return 'Something went wrong, try refreshing',None else: return None,None css = """ footer {display:none !important} .output-markdown{display:none !important} .gr-button-primary { z-index: 14; height: 43px; left: 0px; top: 0px; padding: 0px; cursor: pointer !important; background: none rgb(17, 20, 45) !important; border: none !important; text-align: center !important; font-family: Poppins !important; font-size: 14px !important; font-weight: 500 !important; color: rgb(255, 255, 255) !important; line-height: 1 !important; border-radius: 12px !important; transition: box-shadow 200ms ease 0s, background 200ms ease 0s !important; box-shadow: none !important; } .gr-button-primary:hover{ z-index: 14; height: 43px; left: 0px; top: 0px; padding: 0px; cursor: pointer !important; background: none rgb(66, 133, 244) !important; border: none !important; text-align: center !important; font-family: Poppins !important; font-size: 14px !important; font-weight: 500 !important; color: rgb(255, 255, 255) !important; line-height: 1 !important; border-radius: 12px !important; transition: box-shadow 200ms ease 0s, background 200ms ease 0s !important; box-shadow: rgb(0 0 0 / 23%) 0px 1px 7px 0px !important; } .hover\:bg-orange-50:hover { --tw-bg-opacity: 1 !important; background-color: rgb(229,225,255) !important; } .to-orange-200 { --tw-gradient-to: rgb(37 56 133 / 37%) !important; } .from-orange-400 { --tw-gradient-from: rgb(17, 20, 45) !important; --tw-gradient-to: rgb(255 150 51 / 0); --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to) !important; } .group-hover\:from-orange-500{ --tw-gradient-from:rgb(17, 20, 45) !important; --tw-gradient-to: rgb(37 56 133 / 37%); --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to) !important; } .group:hover .group-hover\:text-orange-500{ --tw-text-opacity: 1 !important; color:rgb(37 56 133 / var(--tw-text-opacity)) !important; } """ with gr.Blocks(title="Sketchpad Text Detection | Data Science Dojo", css=css) as demo: with gr.Row(): inp = gr.Paint() but = gr.Button('Submit',variant='primary') with gr.Row(): with gr.Column(): out1 = gr.Text(label='Lines') with gr.Column(): out2 = gr.Label(label='Words') but.click(textdetect,inputs =[inp],outputs = [out1,out2]) demo.launch(debug=True)