Spaces:
Sleeping
Sleeping
import streamlit as st | |
from PIL import Image | |
from ocr_engine import extract_weight_from_image | |
import urllib.parse | |
import uuid | |
st.set_page_config(page_title="βοΈ Auto Weight Logger", layout="centered") | |
st.title("βοΈ Auto Weight Logger") | |
# Session state | |
if "image_data" not in st.session_state: | |
st.session_state.image_data = None | |
if "camera_key" not in st.session_state: | |
st.session_state.camera_key = str(uuid.uuid4()) | |
# Clear / Retake | |
if st.button("π Clear / Retake Photo"): | |
st.session_state.image_data = None | |
st.session_state.camera_key = str(uuid.uuid4()) # new key to force reload | |
# Show camera | |
if st.session_state.image_data is None: | |
img_data = st.camera_input("π· Capture the weight display", key=st.session_state.camera_key) | |
if img_data: | |
st.session_state.image_data = img_data | |
# Process image | |
if st.session_state.image_data: | |
st.success("β Image captured successfully!") | |
image = Image.open(st.session_state.image_data) | |
st.image(image, caption="πΈ Snapshot", use_column_width=True) | |
if len(st.session_state.image_data.getvalue()) > 5 * 1024 * 1024: | |
st.error("β Image too large (>5MB). Please try again.") | |
st.stop() | |
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.") | |
else: | |
st.success(f"β Detected Weight: {weight} g (Confidence: {int(confidence)}%)") | |
device_id = "BAL-001" | |
image_url = "" | |
salesforce_url = ( | |
"https://autoweightlogger-dev-ed.my.salesforce-sites.com/" | |
f"weight_logger_page?WeightInput={urllib.parse.quote(str(weight))}" | |
f"&DeviceID={urllib.parse.quote(device_id)}&ImageURL={urllib.parse.quote(image_url)}" | |
) | |
st.markdown("### π€ Send to Salesforce") | |
st.markdown(f"[β Click here to confirm and log in Salesforce]({salesforce_url})", unsafe_allow_html=True) | |
if st.button("π Retake Photo"): | |
st.session_state.image_data = None | |
st.session_state.camera_key = str(uuid.uuid4()) | |