Spaces:
Sleeping
Sleeping
File size: 2,313 Bytes
fb1a823 c41b38b 844e1ad fb1a823 7a171bf 7aa5221 45d41b6 3c80166 45d41b6 44fd5b1 3c80166 b985185 3c80166 9561543 f352fb7 3c80166 b985185 45d41b6 fb1a823 3c80166 b985185 3c80166 fa29632 1f1d6d4 fa29632 844e1ad aba4a6b 844e1ad f038ea6 7a171bf 3c80166 844e1ad 3c80166 44fd5b1 45d41b6 844e1ad 3c80166 f352fb7 3c80166 844e1ad 3c80166 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 |
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 for clearing input
# ------------------------------
if "reset" not in st.session_state:
st.session_state.reset = False
# π Auto rerun if reset is active
if st.session_state.reset:
st.session_state.reset = False
st.rerun()
# π Manual clear/reset button
if st.button("π Clear Photo"):
st.session_state.reset = True
st.rerun()
# π· Capture webcam image
img_data = st.camera_input("π· Capture the weight display")
# π Process image only if captured
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 confidence is low or result missing β show Retake
if not weight or confidence < 80:
st.error(f"β οΈ OCR confidence too low ({int(confidence)}%). Please retake the image.")
if st.button("π Retake Photo"):
st.session_state.reset = True
st.rerun()
st.stop()
# β
Valid result
st.success(f"β
Detected Weight: {weight} g (Confidence: {int(confidence)}%)")
# π Salesforce URL
device_id = "BAL-001"
image_url = "" # Optional
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)
|