File size: 2,554 Bytes
fb1a823 c41b38b 844e1ad fb1a823 7a171bf 7aa5221 45d41b6 09d2cb1 45d41b6 09d2cb1 44fd5b1 09d2cb1 e789af9 f352fb7 09d2cb1 45d41b6 fb1a823 09d2cb1 b985185 09d2cb1 fa29632 1f1d6d4 fa29632 844e1ad aba4a6b 844e1ad f038ea6 7a171bf 09d2cb1 844e1ad 09d2cb1 e789af9 844e1ad 09d2cb1 f352fb7 09d2cb1 844e1ad e789af9 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 74 75 76 |
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 management
# ------------------------------
if "show_camera" not in st.session_state:
st.session_state.show_camera = True
# π Clear or Retake Button pressed
if st.button("π Clear / Retake Photo"):
st.session_state.show_camera = False # hide camera temporarily
st.rerun()
# π Reset camera on next run
if not st.session_state.show_camera:
st.session_state.show_camera = True
st.rerun()
# ------------------------------
# π· Show camera input
# ------------------------------
img_data = None
if st.session_state.show_camera:
img_data = st.camera_input("π· Capture the weight display")
# ------------------------------
# β
Process if image is 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}")
# β Handle low 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.show_camera = False
st.rerun()
st.stop()
# β
Success
st.success(f"β
Detected Weight: {weight} g (Confidence: {int(confidence)}%)")
# Salesforce URL setup
device_id = "BAL-001"
image_url = "" # Optional: add image hosting logic later
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)
|