Sanjayraju30 commited on
Commit
04384ee
Β·
verified Β·
1 Parent(s): 5cdc778

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +27 -21
src/streamlit_app.py CHANGED
@@ -6,27 +6,31 @@ import urllib.parse
6
  st.set_page_config(page_title="βš–οΈ Auto Weight Logger", layout="centered")
7
  st.title("βš–οΈ Auto Weight Logger")
8
 
9
- # βœ… Flag to reset camera input
10
- if "retake_photo" not in st.session_state:
11
- st.session_state.retake_photo = False
12
-
13
- # πŸ”˜ Retake Photo or Clear button logic
14
- def clear_photo():
15
- st.session_state.retake_photo = True
16
-
17
- st.button("πŸ” Clear / Retake Photo", on_click=clear_photo)
18
-
19
- # βœ… Skip camera this run, and reset for next
20
- if st.session_state.retake_photo:
21
- st.session_state.retake_photo = False # reset the flag
22
- st.stop() # stop here β†’ camera will appear on next run
23
-
24
- # πŸ“· Show camera input
 
 
 
25
  img_data = st.camera_input("πŸ“· Capture the weight display")
26
 
27
  if img_data:
28
  st.success("βœ… Image captured successfully!")
29
 
 
30
  if len(img_data.getvalue()) > 5 * 1024 * 1024:
31
  st.error("❌ Image too large (>5MB). Please try again.")
32
  st.stop()
@@ -34,24 +38,26 @@ if img_data:
34
  image = Image.open(img_data)
35
  st.image(image, caption="πŸ“Έ Snapshot", use_column_width=True)
36
 
 
37
  with st.spinner("πŸ” Extracting weight..."):
38
  weight, confidence = extract_weight_from_image(image)
39
 
40
  st.write(f"πŸ› οΈ DEBUG: weight = {weight}, confidence = {confidence}")
41
 
42
- # ❌ Low confidence β€” offer retake
43
  if not weight or confidence < 80:
44
  st.error(f"⚠️ OCR confidence too low ({int(confidence)}%). Please retake the photo.")
45
  if st.button("πŸ” Retake Photo"):
46
- st.session_state.retake_photo = True
47
- st.stop()
48
  st.stop()
49
 
50
- # βœ… Success β€” show Salesforce link
51
  st.success(f"βœ… Detected Weight: {weight} g (Confidence: {int(confidence)}%)")
52
 
 
53
  device_id = "BAL-001"
54
- image_url = "" # Optional hosted image URL
55
 
56
  encoded_weight = urllib.parse.quote(str(weight))
57
  encoded_device = urllib.parse.quote(device_id)
 
6
  st.set_page_config(page_title="βš–οΈ Auto Weight Logger", layout="centered")
7
  st.title("βš–οΈ Auto Weight Logger")
8
 
9
+ # --------------------------------
10
+ # βœ… Session state to manage reset
11
+ # --------------------------------
12
+ if "clear" not in st.session_state:
13
+ st.session_state.clear = False
14
+
15
+ # πŸ”˜ Clear / Retake Photo Button
16
+ if st.button("πŸ” Clear / Retake Photo"):
17
+ st.session_state.clear = True
18
+ st.experimental_rerun() # or st.rerun() if supported
19
+
20
+ # 🧼 Skip camera input for one run if clearing
21
+ if st.session_state.clear:
22
+ st.session_state.clear = False
23
+ st.stop() # skip rest, rerun will show fresh input
24
+
25
+ # --------------------------------
26
+ # πŸ“· Camera Input
27
+ # --------------------------------
28
  img_data = st.camera_input("πŸ“· Capture the weight display")
29
 
30
  if img_data:
31
  st.success("βœ… Image captured successfully!")
32
 
33
+ # ⚠️ Optional: file size check
34
  if len(img_data.getvalue()) > 5 * 1024 * 1024:
35
  st.error("❌ Image too large (>5MB). Please try again.")
36
  st.stop()
 
38
  image = Image.open(img_data)
39
  st.image(image, caption="πŸ“Έ Snapshot", use_column_width=True)
40
 
41
+ # πŸ” Run OCR
42
  with st.spinner("πŸ” Extracting weight..."):
43
  weight, confidence = extract_weight_from_image(image)
44
 
45
  st.write(f"πŸ› οΈ DEBUG: weight = {weight}, confidence = {confidence}")
46
 
47
+ # ⚠️ If confidence too low, allow retake
48
  if not weight or confidence < 80:
49
  st.error(f"⚠️ OCR confidence too low ({int(confidence)}%). Please retake the photo.")
50
  if st.button("πŸ” Retake Photo"):
51
+ st.session_state.clear = True
52
+ st.experimental_rerun()
53
  st.stop()
54
 
55
+ # βœ… Successful result
56
  st.success(f"βœ… Detected Weight: {weight} g (Confidence: {int(confidence)}%)")
57
 
58
+ # πŸ”— Salesforce redirection setup
59
  device_id = "BAL-001"
60
+ image_url = "" # Optional: you can later host image here
61
 
62
  encoded_weight = urllib.parse.quote(str(weight))
63
  encoded_device = urllib.parse.quote(device_id)