File size: 2,345 Bytes
fb1a823
c41b38b
 
844e1ad
fb1a823
7a171bf
7aa5221
 
5cdc778
 
 
 
 
 
 
 
 
 
 
 
 
 
 
09d2cb1
a26d1e2
b985185
fa29632
1f1d6d4
fa29632
844e1ad
 
 
 
aba4a6b
 
 
844e1ad
 
 
f038ea6
7a171bf
5cdc778
844e1ad
09d2cb1
e789af9
5cdc778
 
844e1ad
 
5cdc778
f352fb7
 
844e1ad
5cdc778
f352fb7
844e1ad
 
 
 
 
f352fb7
844e1ad
 
aba4a6b
844e1ad
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import streamlit as st
from PIL import Image
from ocr_engine import extract_weight_from_image
import urllib.parse

st.set_page_config(page_title="βš–οΈ Auto Weight Logger", layout="centered")
st.title("βš–οΈ Auto Weight Logger")

# βœ… Flag to reset camera input
if "retake_photo" not in st.session_state:
    st.session_state.retake_photo = False

# πŸ”˜ Retake Photo or Clear button logic
def clear_photo():
    st.session_state.retake_photo = True

st.button("πŸ” Clear / Retake Photo", on_click=clear_photo)

# βœ… Skip camera this run, and reset for next
if st.session_state.retake_photo:
    st.session_state.retake_photo = False  # reset the flag
    st.stop()  # stop here β†’ camera will appear on next run

# πŸ“· Show camera input
img_data = st.camera_input("πŸ“· Capture the weight display")

if img_data:
    st.success("βœ… Image captured successfully!")

    if len(img_data.getvalue()) > 5 * 1024 * 1024:
        st.error("❌ Image too large (>5MB). Please try again.")
        st.stop()

    image = Image.open(img_data)
    st.image(image, caption="πŸ“Έ Snapshot", use_column_width=True)

    with st.spinner("πŸ” Extracting weight..."):
        weight, confidence = extract_weight_from_image(image)

    st.write(f"πŸ› οΈ DEBUG: weight = {weight}, confidence = {confidence}")

    # ❌ Low confidence β€” offer retake
    if not weight or confidence < 80:
        st.error(f"⚠️ OCR confidence too low ({int(confidence)}%). Please retake the photo.")
        if st.button("πŸ” Retake Photo"):
            st.session_state.retake_photo = True
            st.stop()
        st.stop()

    # βœ… Success β€” show Salesforce link
    st.success(f"βœ… Detected Weight: {weight} g (Confidence: {int(confidence)}%)")

    device_id = "BAL-001"
    image_url = ""  # Optional hosted image URL

    encoded_weight = urllib.parse.quote(str(weight))
    encoded_device = urllib.parse.quote(device_id)
    encoded_image_url = urllib.parse.quote(image_url)

    salesforce_url = (
        "https://autoweightlogger-dev-ed.my.salesforce-sites.com/"
        f"weight_logger_page?WeightInput={encoded_weight}&DeviceID={encoded_device}&ImageURL={encoded_image_url}"
    )

    st.markdown("### πŸ“€ Send to Salesforce")
    st.markdown(f"[βœ… Click here to confirm and log in Salesforce]({salesforce_url})", unsafe_allow_html=True)