File size: 2,933 Bytes
fb1a823 c41b38b 844e1ad fb1a823 7a171bf 7aa5221 45d41b6 44fd5b1 45d41b6 b985185 45d41b6 9561543 f352fb7 45d41b6 b985185 45d41b6 fb1a823 45d41b6 b985185 fa29632 1f1d6d4 fa29632 45d41b6 844e1ad 45d41b6 aba4a6b 45d41b6 844e1ad f038ea6 7a171bf 45d41b6 844e1ad f352fb7 44fd5b1 45d41b6 844e1ad 45d41b6 f352fb7 45d41b6 844e1ad 45d41b6 f352fb7 844e1ad 45d41b6 844e1ad f352fb7 844e1ad aba4a6b 45d41b6 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 76 77 78 79 80 81 82 83 84 85 86 87 88 |
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 clearing
# ------------------------------
if "reset" not in st.session_state:
st.session_state.reset = False
# ------------------------------
# π If reset is active, clear and rerun once
# ------------------------------
if st.session_state.reset:
st.session_state.reset = False # clear the flag
st.rerun()
# ------------------------------
# π Clear Photo Button
# ------------------------------
if st.button("π Clear Photo"):
st.session_state.reset = True
st.rerun()
# ------------------------------
# π· Capture Image from Webcam
# ------------------------------
img_data = st.camera_input("π· Capture the weight display")
if img_data:
st.success("β
Image captured successfully!")
# β
Optional: check file size
if len(img_data.getvalue()) > 5 * 1024 * 1024:
st.error("β Image too large (>5MB). Please try again.")
st.stop()
# Open and display image
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}")
# --------------------------
# β Retry if confidence low
# --------------------------
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()
# --------------------------
# β
Success β show result
# --------------------------
st.success(f"β
Detected Weight: {weight} g (Confidence: {int(confidence)}%)")
# Salesforce parameters
device_id = "BAL-001"
image_url = "" # Optional: set if you host the image
encoded_weight = urllib.parse.quote(str(weight))
encoded_device = urllib.parse.quote(device_id)
encoded_image_url = urllib.parse.quote(image_url)
# β
Salesforce VF Page 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}"
)
# --------------------------
# π Display Salesforce link
# --------------------------
st.markdown("### π€ Send to Salesforce")
st.markdown(f"[β
Click here to confirm and log in Salesforce]({salesforce_url})", unsafe_allow_html=True)
|