File size: 2,550 Bytes
fb1a823 c41b38b 844e1ad fb1a823 7a171bf 7aa5221 04384ee a26d1e2 b985185 fa29632 1f1d6d4 fa29632 04384ee 844e1ad aba4a6b 04384ee 844e1ad f038ea6 7a171bf 04384ee 844e1ad 09d2cb1 e789af9 04384ee 844e1ad 04384ee f352fb7 04384ee 844e1ad 04384ee 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 68 69 70 71 72 73 |
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")
# --------------------------------
# β
Session state to manage reset
# --------------------------------
if "clear" not in st.session_state:
st.session_state.clear = False
# π Clear / Retake Photo Button
if st.button("π Clear / Retake Photo"):
st.session_state.clear = True
st.experimental_rerun() # or st.rerun() if supported
# π§Ό Skip camera input for one run if clearing
if st.session_state.clear:
st.session_state.clear = False
st.stop() # skip rest, rerun will show fresh input
# --------------------------------
# π· Camera Input
# --------------------------------
img_data = st.camera_input("π· Capture the weight display")
if img_data:
st.success("β
Image captured successfully!")
# β οΈ Optional: file size check
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)
# π Run OCR
with st.spinner("π Extracting weight..."):
weight, confidence = extract_weight_from_image(image)
st.write(f"π οΈ DEBUG: weight = {weight}, confidence = {confidence}")
# β οΈ If confidence too low, allow 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.clear = True
st.experimental_rerun()
st.stop()
# β
Successful result
st.success(f"β
Detected Weight: {weight} g (Confidence: {int(confidence)}%)")
# π Salesforce redirection setup
device_id = "BAL-001"
image_url = "" # Optional: you can later host image here
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)
|