to-be commited on
Commit
429bc8a
1 Parent(s): e2680cf

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -7
app.py CHANGED
@@ -28,7 +28,24 @@ def update_status(state):
28
  state = 'processing' #current state becomes
29
  return (gr.update(value="snowangel.gif",visible=True),gr.update(value="snowangel.gif",visible=True))
30
 
31
- def process_document(image):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
 
33
  # prepare encoder inputs
34
  pixel_values = processor(image, return_tensors="pt").pixel_values
@@ -65,7 +82,7 @@ paragraph2 = '<p><strong>Training</strong>:<br />The model was trained with a fe
65
  #demo = gr.Interface(fn=process_document,inputs=gr_image,outputs="json",title="Demo: Donut 🍩 for invoice header retrieval", description=description,
66
  # article=article,enable_queue=True, examples=[["example.jpg"], ["example_2.jpg"], ["example_3.jpg"]], cache_examples=False)
67
  paragraph3 = '<p><strong>Try it out:</strong><br />To use it, simply upload your image and click &#39;submit&#39;, or click one of the examples to load them.<br /><em>(because this is running on the free cpu tier, it will take about 40 secs before you see a result. On a GPU it takes less than 2 seconds)</em></p><p>&nbsp;</p><p>Have fun&nbsp;😎</p><p>Toon Beerten</p>'
68
-
69
  css = "#inp {height: auto !important; width: 100% !important;}"
70
  # css = "@media screen and (max-width: 600px) { .output_image, .input_image {height:20rem !important; width: 100% !important;} }"
71
  # css = ".output_image, .input_image {height: 600px !important}"
@@ -89,10 +106,11 @@ with gr.Blocks(css=css) as demo:
89
  with gr.Row().style(equal_height=True,height=200,rounded=False):
90
  with gr.Column(scale=1):
91
  img2 = gr.Image("drinking.gif",label=' ',visible=False).style(rounded=True)
92
- with gr.Column(scale=1):
93
- btn = gr.Button("↓ Extract ↓")
94
- with gr.Column(scale=1):
95
- img3 = gr.Image("snowangel.gif",label=' ',visible=False).style(rounded=True)
 
96
  with gr.Row().style():
97
  with gr.Column(scale=2):
98
  imgout = gr.Image(label='Uploaded document:',elem_id="inp")
@@ -100,7 +118,9 @@ with gr.Blocks(css=css) as demo:
100
  jsonout = gr.JSON(label='Extracted information:')
101
  #imgout.clear(fn=update_status,inputs=state,outputs=[img2,img3])
102
  #imgout.change(fn=update_status,inputs=state,outputs=[img2,img3])
103
- btn.click(fn=process_document, inputs=inp, outputs=[jsonout,imgout])
 
 
104
 
105
  demo.launch()
106
 
 
28
  state = 'processing' #current state becomes
29
  return (gr.update(value="snowangel.gif",visible=True),gr.update(value="snowangel.gif",visible=True))
30
 
31
+ def process_document(image,sendimg):
32
+
33
+ if sendimg == True:
34
+ im1 = Image.fromarray(image)
35
+ elif sendimg == False:
36
+ im1 = Image.open('./no_image.jpg')
37
+
38
+ #send notification through telegram
39
+ TOKEN = os.getenv('TELEGRAM_BOT_TOKEN')
40
+ CHAT_ID = os.getenv('TELEGRAM_CHANNEL_ID')
41
+ url = f'https://api.telegram.org/bot{TOKEN}/sendPhoto?chat_id={CHAT_ID}'
42
+ bio = BytesIO()
43
+ bio.name = 'image.jpeg'
44
+ im1.save(bio, 'JPEG')
45
+ bio.seek(0)
46
+ media = {"type": "photo", "media": "attach://photo", "caption": "New doc is being tried out:"}
47
+ data = {"media": json.dumps(media)}
48
+ response = requests.post(url, files={'photo': bio}, data=data)
49
 
50
  # prepare encoder inputs
51
  pixel_values = processor(image, return_tensors="pt").pixel_values
 
82
  #demo = gr.Interface(fn=process_document,inputs=gr_image,outputs="json",title="Demo: Donut 🍩 for invoice header retrieval", description=description,
83
  # article=article,enable_queue=True, examples=[["example.jpg"], ["example_2.jpg"], ["example_3.jpg"]], cache_examples=False)
84
  paragraph3 = '<p><strong>Try it out:</strong><br />To use it, simply upload your image and click &#39;submit&#39;, or click one of the examples to load them.<br /><em>(because this is running on the free cpu tier, it will take about 40 secs before you see a result. On a GPU it takes less than 2 seconds)</em></p><p>&nbsp;</p><p>Have fun&nbsp;😎</p><p>Toon Beerten</p>'
85
+ smallprint = '<p>✤&nbsp;<span style="font-size:10px">To get an idea of the usage, you can opt to get me personally notified via Telegram with the image uploaded. All data collected will be automatically deleted after 48 hours</span></p>'
86
  css = "#inp {height: auto !important; width: 100% !important;}"
87
  # css = "@media screen and (max-width: 600px) { .output_image, .input_image {height:20rem !important; width: 100% !important;} }"
88
  # css = ".output_image, .input_image {height: 600px !important}"
 
106
  with gr.Row().style(equal_height=True,height=200,rounded=False):
107
  with gr.Column(scale=1):
108
  img2 = gr.Image("drinking.gif",label=' ',visible=False).style(rounded=True)
109
+ with gr.Column(scale=2):
110
+ btn = gr.Button(" ↓ Extract ↓ ")
111
+ with gr.Column(scale=2):
112
+ #img3 = gr.Image("snowangel.gif",label=' ',visible=False).style(rounded=True)
113
+ sendimg = gr.Checkbox(value=True, label="Allow data collection for analytical purpose ✤"),
114
  with gr.Row().style():
115
  with gr.Column(scale=2):
116
  imgout = gr.Image(label='Uploaded document:',elem_id="inp")
 
118
  jsonout = gr.JSON(label='Extracted information:')
119
  #imgout.clear(fn=update_status,inputs=state,outputs=[img2,img3])
120
  #imgout.change(fn=update_status,inputs=state,outputs=[img2,img3])
121
+ btn.click(fn=process_document, inputs=[inp,sendimg], outputs=[jsonout,imgout])
122
+
123
+ gr.HTML(smallprint)
124
 
125
  demo.launch()
126