Spaces:
Sleeping
Sleeping
import streamlit as st | |
from PIL import Image | |
from ocr_engine import extract_weight_from_image | |
import urllib.parse | |
from datetime import datetime | |
st.set_page_config(page_title="βοΈ Auto Weight Logger", layout="centered") | |
st.title("βοΈ Auto Weight Logger") | |
img_data = st.camera_input("π· Capture the weight display") | |
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 not weight or confidence < 80: | |
st.error(f"β οΈ OCR confidence too low ({int(confidence)}%). Please retake the image.") | |
if st.button("π Try Again"): | |
st.experimental_rerun() | |
st.stop() | |
# β Prepare data for preview and URL | |
device_id = "BAL-001" | |
image_url = "" # optional - add later if you host the image | |
captured_at = datetime.now().strftime("%Y-%m-%d %H:%M:%S") | |
status = "Pending Submission" | |
# β Show full preview | |
st.markdown("### π Record Preview (before sending to Salesforce)") | |
st.write({ | |
"Auto Number": "Will be generated in Salesforce", | |
"Captured Weight": f"{weight} g", | |
"Captured At": captured_at, | |
"Snapshot Image": "Attached" if image_url else "Not available", | |
"Device ID": device_id, | |
"Status": status | |
}) | |
# β Encode for Salesforce | |
encoded_weight = urllib.parse.quote(str(weight)) | |
encoded_device = urllib.parse.quote(device_id) | |
encoded_image_url = urllib.parse.quote(image_url) | |
salesforce_url = ( | |
f"https://autoweightlogger-dev-ed.my.salesforce-sites.com/" | |
f"weight_logger_page?WeightInput={encoded_weight}&DeviceID={encoded_device}&ImageURL={encoded_image_url}" | |
) | |
# β Show Salesforce link | |
st.markdown("### π€ Send to Salesforce") | |
st.markdown(f"[β Click here to confirm and log in Salesforce]({salesforce_url})", unsafe_allow_html=True) | |