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)