File size: 2,933 Bytes
fb1a823
c41b38b
 
844e1ad
fb1a823
7a171bf
7aa5221
 
45d41b6
 
 
44fd5b1
 
 
45d41b6
 
 
b985185
45d41b6
9561543
f352fb7
45d41b6
 
 
b985185
 
45d41b6
fb1a823
45d41b6
 
 
b985185
 
fa29632
1f1d6d4
fa29632
45d41b6
844e1ad
 
 
 
45d41b6
aba4a6b
 
 
45d41b6
 
 
844e1ad
 
 
f038ea6
7a171bf
45d41b6
 
 
844e1ad
 
f352fb7
44fd5b1
45d41b6
844e1ad
 
45d41b6
 
 
f352fb7
 
45d41b6
844e1ad
45d41b6
f352fb7
844e1ad
 
 
 
45d41b6
844e1ad
f352fb7
844e1ad
 
aba4a6b
45d41b6
 
 
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
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")

# ------------------------------
# βœ… Setup session state for clearing
# ------------------------------
if "reset" not in st.session_state:
    st.session_state.reset = False

# ------------------------------
# πŸ” If reset is active, clear and rerun once
# ------------------------------
if st.session_state.reset:
    st.session_state.reset = False  # clear the flag
    st.rerun()

# ------------------------------
# πŸ”˜ Clear Photo Button
# ------------------------------
if st.button("πŸ” Clear Photo"):
    st.session_state.reset = True
    st.rerun()

# ------------------------------
# πŸ“· Capture Image from Webcam
# ------------------------------
img_data = st.camera_input("πŸ“· Capture the weight display")

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

    # βœ… Optional: check file size
    if len(img_data.getvalue()) > 5 * 1024 * 1024:
        st.error("❌ Image too large (>5MB). Please try again.")
        st.stop()

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

    # --------------------------
    # 🧠 Extract weight via OCR
    # --------------------------
    with st.spinner("πŸ” Extracting weight..."):
        weight, confidence = extract_weight_from_image(image)

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

    # --------------------------
    # ❌ Retry if confidence low
    # --------------------------
    if not weight or confidence < 80:
        st.error(f"⚠️ OCR confidence too low ({int(confidence)}%). Please retake the image.")
        if st.button("πŸ” Retry"):
            st.session_state.reset = True
            st.rerun()
        st.stop()

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

    # Salesforce parameters
    device_id = "BAL-001"
    image_url = ""  # Optional: set if you host the image

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

    # βœ… Salesforce VF Page 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}"
    )

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