File size: 2,313 Bytes
fb1a823
c41b38b
 
844e1ad
fb1a823
7a171bf
7aa5221
 
45d41b6
3c80166
45d41b6
44fd5b1
 
 
3c80166
b985185
3c80166
9561543
f352fb7
3c80166
b985185
 
45d41b6
fb1a823
3c80166
b985185
 
3c80166
fa29632
1f1d6d4
fa29632
844e1ad
 
 
 
aba4a6b
 
 
844e1ad
 
 
f038ea6
7a171bf
3c80166
844e1ad
 
3c80166
44fd5b1
45d41b6
844e1ad
 
3c80166
f352fb7
 
3c80166
844e1ad
3c80166
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
68
69
70
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")

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

# πŸ” Auto rerun if reset is active
if st.session_state.reset:
    st.session_state.reset = False
    st.rerun()

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

# πŸ“· Capture webcam image
img_data = st.camera_input("πŸ“· Capture the weight display")

# πŸ” Process image only if captured
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}")

    # ❌ If confidence is low or result missing β€” show Retake
    if not weight or confidence < 80:
        st.error(f"⚠️ OCR confidence too low ({int(confidence)}%). Please retake the image.")
        if st.button("πŸ” Retake Photo"):
            st.session_state.reset = True
            st.rerun()
        st.stop()

    # βœ… Valid result
    st.success(f"βœ… Detected Weight: {weight} g (Confidence: {int(confidence)}%)")

    # πŸ”— Salesforce URL
    device_id = "BAL-001"
    image_url = ""  # Optional

    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)