File size: 2,279 Bytes
fb1a823
c41b38b
ae762c2
 
82ae7fe
fb1a823
ae762c2
 
d54c470
82ae7fe
fec538c
 
82ae7fe
 
ae762c2
82ae7fe
be301b7
 
82ae7fe
be301b7
82ae7fe
e9c0e22
82ae7fe
be301b7
fec538c
ae762c2
82ae7fe
e9c0e22
ae762c2
82ae7fe
 
ae762c2
82ae7fe
ae762c2
 
 
 
 
 
 
 
 
 
82ae7fe
 
ae762c2
82ae7fe
 
ae762c2
82ae7fe
 
 
 
 
ae762c2
82ae7fe
 
ae762c2
82ae7fe
 
 
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
import streamlit as st
from PIL import Image
from ocr_engine import extract_weight_from_image
import urllib.parse
import uuid

st.set_page_config(page_title="βš–οΈ Auto Weight Logger", layout="centered")
st.title("βš–οΈ Auto Weight Logger")

# Session state
if "image_data" not in st.session_state:
    st.session_state.image_data = None
if "camera_key" not in st.session_state:
    st.session_state.camera_key = str(uuid.uuid4())

# Clear / Retake
if st.button("πŸ” Clear / Retake Photo"):
    st.session_state.image_data = None
    st.session_state.camera_key = str(uuid.uuid4())  # new key to force reload

# Show camera
if st.session_state.image_data is None:
    img_data = st.camera_input("πŸ“· Capture the weight display", key=st.session_state.camera_key)
    if img_data:
        st.session_state.image_data = img_data

# Process image
if st.session_state.image_data:
    st.success("βœ… Image captured successfully!")
    image = Image.open(st.session_state.image_data)
    st.image(image, caption="πŸ“Έ Snapshot", use_column_width=True)

    if len(st.session_state.image_data.getvalue()) > 5 * 1024 * 1024:
        st.error("❌ Image too large (>5MB). Please try again.")
        st.stop()

    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.")
    else:
        st.success(f"βœ… Detected Weight: {weight} g (Confidence: {int(confidence)}%)")

        device_id = "BAL-001"
        image_url = ""

        salesforce_url = (
            "https://autoweightlogger-dev-ed.my.salesforce-sites.com/"
            f"weight_logger_page?WeightInput={urllib.parse.quote(str(weight))}"
            f"&DeviceID={urllib.parse.quote(device_id)}&ImageURL={urllib.parse.quote(image_url)}"
        )

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

    if st.button("πŸ” Retake Photo"):
        st.session_state.image_data = None
        st.session_state.camera_key = str(uuid.uuid4())