File size: 2,301 Bytes
fb1a823 c41b38b ae762c2 fb1a823 ae762c2 d54c470 be301b7 fec538c ae762c2 be301b7 e9c0e22 fec538c be301b7 fec538c be301b7 ae762c2 be301b7 e9c0e22 ae762c2 be301b7 fec538c be301b7 ae762c2 be301b7 ae762c2 be301b7 ae762c2 be301b7 ae762c2 be301b7 ae762c2 be301b7 ae762c2 be301b7 ae762c2 be301b7 |
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 |
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")
# Initialize session state
if "image_data" not in st.session_state:
st.session_state.image_data = None
# Clear button to retake image
if st.button("π Clear / Retake Photo"):
st.session_state.image_data = None
# Show camera if no image captured
if st.session_state.image_data is None:
img_data = st.camera_input("π· Capture the weight display")
if img_data:
st.session_state.image_data = img_data
st.experimental_rerun() # NOTE: Works fine in most Streamlit cloud spaces
# Show captured image and process
if 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_data = None
st.experimental_rerun()
st.stop()
st.success(f"β
Detected Weight: {weight} g (Confidence: {int(confidence)}%)")
# π Salesforce URL
device_id = "BAL-001"
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)
|