weightlogger / src /streamlit_app.py
Sanjayraju30's picture
Update src/streamlit_app.py
1aeda96 verified
raw
history blame
1.6 kB
import streamlit as st
import numpy as np
import cv2
from paddleocr import PaddleOCR
from PIL import Image
import re
from datetime import datetime
import pytz
ocr = PaddleOCR(use_angle_cls=True, lang='en')
def preprocess_image(image):
img = np.array(image.convert("RGB"))
gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
_, thresh = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)
return Image.fromarray(thresh)
def extract_weight_text(image):
results = ocr.ocr(np.array(image), cls=True)
for line in results[0]:
text = line[1][0]
match = re.search(r"\d+\.\d+", text)
if match:
return match.group()
return None
st.set_page_config(page_title="Auto Weight Logger", layout="centered")
st.title("πŸ“¦ Auto Weight Logger")
st.write("Upload or click image of weight display. App will read the weight.")
uploaded_file = st.file_uploader("Upload Image", type=["jpg", "jpeg", "png"])
camera_image = st.camera_input("Or Capture Image")
input_image = uploaded_file or camera_image
if input_image:
image = Image.open(input_image)
st.image(image, caption="Original", use_column_width=True)
processed = preprocess_image(image)
st.image(processed, caption="Processed", use_column_width=True)
weight = extract_weight_text(processed)
if weight:
time_now = datetime.now(pytz.timezone('Asia/Kolkata')).strftime('%Y-%m-%d %H:%M:%S')
st.success(f"βœ… Weight Detected: {weight} kg")
st.info(f"⏱️ Captured At: {time_now}")
else:
st.error("❌ Weight not detected. Try clearer image.")