File size: 2,518 Bytes
fb1a823
c41b38b
 
844e1ad
fb1a823
7a171bf
7aa5221
 
45d41b6
a26d1e2
45d41b6
a26d1e2
 
44fd5b1
a26d1e2
 
 
e789af9
f352fb7
a26d1e2
 
 
45d41b6
fb1a823
09d2cb1
 
 
a26d1e2
b985185
09d2cb1
a26d1e2
09d2cb1
fa29632
1f1d6d4
fa29632
844e1ad
 
 
 
aba4a6b
 
 
a26d1e2
844e1ad
 
 
f038ea6
7a171bf
a26d1e2
844e1ad
09d2cb1
e789af9
a26d1e2
e789af9
844e1ad
 
09d2cb1
f352fb7
 
a26d1e2
844e1ad
a26d1e2
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
71
72
73
74
75
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 reset
# ------------------------------
if "reset" not in st.session_state:
    st.session_state.reset = False

# πŸ” Handle reset if needed (immediately rerun and then show camera again)
if st.session_state.reset:
    st.session_state.reset = False  # Clear flag
    st.rerun()

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

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

# ------------------------------
# βœ… Handle image 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)

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

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

    # ❌ If low confidence, ask to 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.reset = True
            st.rerun()
        st.stop()

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

    # Salesforce parameters
    device_id = "BAL-001"
    image_url = ""  # Optional image hosting 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)