Spaces:
Sleeping
Sleeping
File size: 2,594 Bytes
fb1a823 c41b38b ae762c2 fb1a823 ae762c2 d54c470 fec538c ae762c2 fec538c ae762c2 fec538c ae762c2 fec538c ae762c2 fec538c ae762c2 fec538c ae762c2 fec538c ae762c2 fec538c ae762c2 fec538c ae762c2 |
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 retake and image
if "image_captured" not in st.session_state:
st.session_state.image_captured = False
if "image_data" not in st.session_state:
st.session_state.image_data = None
# π Retake / Clear Button
if st.button("π Clear / Retake Photo"):
st.session_state.image_captured = False
st.session_state.image_data = None
st.experimental_rerun()
# β
Show camera only if no image captured
if not st.session_state.image_captured:
img_data = st.camera_input("π· Capture the weight display")
if img_data:
st.session_state.image_data = img_data
st.session_state.image_captured = True
st.experimental_rerun()
# β
If image is already captured
if st.session_state.image_captured and st.session_state.image_data:
st.success("β
Image captured successfully!")
img_data = st.session_state.image_data
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 photo.")
if st.button("π Retake Photo"):
st.session_state.image_captured = False
st.session_state.image_data = None
st.experimental_rerun()
st.stop()
st.success(f"β
Detected Weight: {weight} g (Confidence: {int(confidence)}%)")
# π Salesforce link logic
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)
|