File size: 2,301 Bytes
fb1a823
c41b38b
ae762c2
 
fb1a823
ae762c2
 
d54c470
be301b7
fec538c
 
ae762c2
be301b7
 
 
 
 
e9c0e22
fec538c
be301b7
fec538c
be301b7
ae762c2
be301b7
e9c0e22
ae762c2
 
be301b7
fec538c
be301b7
ae762c2
 
 
be301b7
 
 
ae762c2
 
 
 
 
 
 
be301b7
 
 
 
ae762c2
be301b7
ae762c2
be301b7
 
 
ae762c2
be301b7
 
 
ae762c2
be301b7
 
 
 
ae762c2
be301b7
 
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
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")

# Initialize session state
if "image_data" not in st.session_state:
    st.session_state.image_data = None

# Clear button to retake image
if st.button("πŸ” Clear / Retake Photo"):
    st.session_state.image_data = None

# Show camera if no image captured
if st.session_state.image_data is None:
    img_data = st.camera_input("πŸ“· Capture the weight display")
    if img_data:
        st.session_state.image_data = img_data
        st.experimental_rerun()  # NOTE: Works fine in most Streamlit cloud spaces

# Show captured image and process
if st.session_state.image_data:
    st.success("βœ… Image captured successfully!")

    img_data = st.session_state.image_data

    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 photo.")
        if st.button("πŸ” Retake Photo"):
            st.session_state.image_data = None
            st.experimental_rerun()
        st.stop()

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

    # 🌐 Salesforce URL
    device_id = "BAL-001"
    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)