File size: 2,159 Bytes
fb1a823
c41b38b
 
844e1ad
fb1a823
7a171bf
7aa5221
 
44fd5b1
 
 
 
 
 
 
9561543
f352fb7
44fd5b1
 
 
 
 
 
fb1a823
fa29632
1f1d6d4
fa29632
844e1ad
 
 
 
aba4a6b
 
 
844e1ad
 
 
f038ea6
7a171bf
844e1ad
 
f352fb7
44fd5b1
9561543
844e1ad
 
f352fb7
 
44fd5b1
844e1ad
44fd5b1
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
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")

# βœ… Use session_state to manage resets
if "reset" not in st.session_state:
    st.session_state.reset = False

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

# Only show camera input if not resetting
if not st.session_state.reset:
    img_data = st.camera_input("πŸ“· Capture the weight display")
else:
    st.info("πŸ“Έ Photo cleared. Click Restart to take again.")
    st.stop()

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 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()

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

    # Salesforce URL Parameters
    device_id = "BAL-001"
    image_url = ""  # You can host and link if needed

    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)