File size: 2,345 Bytes
fb1a823 c41b38b 844e1ad fb1a823 7a171bf 7aa5221 5cdc778 09d2cb1 a26d1e2 b985185 fa29632 1f1d6d4 fa29632 844e1ad aba4a6b 844e1ad f038ea6 7a171bf 5cdc778 844e1ad 09d2cb1 e789af9 5cdc778 844e1ad 5cdc778 f352fb7 844e1ad 5cdc778 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 65 66 67 |
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")
# β
Flag to reset camera input
if "retake_photo" not in st.session_state:
st.session_state.retake_photo = False
# π Retake Photo or Clear button logic
def clear_photo():
st.session_state.retake_photo = True
st.button("π Clear / Retake Photo", on_click=clear_photo)
# β
Skip camera this run, and reset for next
if st.session_state.retake_photo:
st.session_state.retake_photo = False # reset the flag
st.stop() # stop here β camera will appear on next run
# π· Show camera input
img_data = st.camera_input("π· Capture the weight display")
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}")
# β Low confidence β offer retake
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.retake_photo = True
st.stop()
st.stop()
# β
Success β show Salesforce link
st.success(f"β
Detected Weight: {weight} g (Confidence: {int(confidence)}%)")
device_id = "BAL-001"
image_url = "" # Optional hosted 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)
|