isslao commited on
Commit
58c58b9
·
verified ·
1 Parent(s): d30a9ba

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +32 -16
app.py CHANGED
@@ -36,11 +36,13 @@ def process_document(image):
36
  def process_batch(images):
37
  if not images:
38
  return None, []
39
- results = [process_document(Image.open(image.name).convert("RGB")) for image in images]
40
  return images, results
41
 
42
- description = "Démo Gradio pour Donut, une instance du modèle VisionEncoderDecoderModel affiné sur CORD (analyse de documents). Pour l'utiliser, téléchargez une ou plusieurs images et cliquez sur 'Submit', ou cliquez sur l'un des exemples pour les charger."
43
- article = "Cette application permet maintenant de traiter plusieurs images de tickets de caisse à la fois et affiche les images uploadées à côté des noms de fichiers pour une meilleure visibilité."
 
 
44
 
45
  with gr.Blocks() as demo:
46
  gr.Markdown("# Reconnaissance des tickets de caisse en lot 🧾")
@@ -49,32 +51,46 @@ with gr.Blocks() as demo:
49
  with gr.Row():
50
  input_images = gr.File(file_count="multiple", type="file", label="Images à traiter")
51
 
 
 
 
 
52
  with gr.Row():
53
  submit_btn = gr.Button("Submit")
54
  clear_btn = gr.Button("Clear")
55
 
56
  output_json = gr.JSON(label="Résultats")
57
 
58
- gr.Examples(
59
- examples=[
60
- ["example.jpg"],
61
- ["example_2.jpg"]
62
- ],
63
- inputs=input_images,
64
- outputs=[input_images, output_json],
65
- fn=process_batch,
66
- cache_examples=True,
 
 
67
  )
68
 
 
 
 
 
 
 
 
 
69
  submit_btn.click(
70
- process_batch,
71
- inputs=input_images,
72
  outputs=[input_images, output_json]
73
  )
74
 
75
  clear_btn.click(
76
- lambda: (None, None),
77
- outputs=[input_images, output_json]
78
  )
79
 
80
  gr.Markdown(article)
 
36
  def process_batch(images):
37
  if not images:
38
  return None, []
39
+ results = [process_document(Image.open(image).convert("RGB")) for image in images]
40
  return images, results
41
 
42
+ description = "Démo Gradio pour Donut, une instance du modèle VisionEncoderDecoderModel affiné sur CORD (analyse de documents). Sélectionnez des exemples ou téléchargez vos propres images, puis cliquez sur 'Submit'."
43
+ article = "Cette application permet de traiter plusieurs images de tickets de caisse à la fois. Vous pouvez sélectionner des exemples ou uploader vos propres images."
44
+
45
+ example_images = ["example.jpg", "example_1.jpg", "example_2.jpg", "example_3.jpg", "example_4.jpg"]
46
 
47
  with gr.Blocks() as demo:
48
  gr.Markdown("# Reconnaissance des tickets de caisse en lot 🧾")
 
51
  with gr.Row():
52
  input_images = gr.File(file_count="multiple", type="file", label="Images à traiter")
53
 
54
+ with gr.Row():
55
+ example_gallery = gr.Gallery(example_images, label="Exemples (cliquez pour sélectionner)")
56
+ selected_examples = gr.State([])
57
+
58
  with gr.Row():
59
  submit_btn = gr.Button("Submit")
60
  clear_btn = gr.Button("Clear")
61
 
62
  output_json = gr.JSON(label="Résultats")
63
 
64
+ def update_selected_examples(evt: gr.SelectData, state):
65
+ if evt.index in state:
66
+ state.remove(evt.index)
67
+ else:
68
+ state.append(evt.index)
69
+ return state
70
+
71
+ example_gallery.select(
72
+ update_selected_examples,
73
+ inputs=[selected_examples],
74
+ outputs=[selected_examples]
75
  )
76
 
77
+ def process_images(uploaded_images, selected_indices):
78
+ all_images = []
79
+ if uploaded_images:
80
+ all_images.extend(uploaded_images)
81
+ for idx in selected_indices:
82
+ all_images.append(example_images[idx])
83
+ return process_batch(all_images)
84
+
85
  submit_btn.click(
86
+ process_images,
87
+ inputs=[input_images, selected_examples],
88
  outputs=[input_images, output_json]
89
  )
90
 
91
  clear_btn.click(
92
+ lambda: (None, None, []),
93
+ outputs=[input_images, output_json, selected_examples]
94
  )
95
 
96
  gr.Markdown(article)