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