import streamlit as st from PIL import Image, ImageEnhance, ImageFilter import pytesseract import google.generativeai as genai import os # Set your Gemini API key genai.configure(api_key=os.getenv("GOOGLE_API_KEY")) model = genai.GenerativeModel("gemini-1.5-flash") def preprocess_image(image): image = image.convert("L") # grayscale image = image.filter(ImageFilter.MedianFilter()) enhancer = ImageEnhance.Contrast(image) image = enhancer.enhance(2) return image def extract_text(image): return pytesseract.image_to_string(image) def summarize_text(text): prompt = f"Summarize the following handwritten note:\n\n{text}" response = model.generate_content(prompt) return response.text # Streamlit UI st.set_page_config(page_title="Handwritten Note Summarizer", layout="centered") st.title("📝 Handwritten Note Summarizer") uploaded_file = st.file_uploader("Upload an image of handwritten notes", type=["jpg", "jpeg", "png"]) if uploaded_file: image = Image.open(uploaded_file) st.image(image, caption="Uploaded Image", use_column_width=True) if st.button("Extract & Summarize"): with st.spinner("Processing..."): preprocessed = preprocess_image(image) extracted_text = extract_text(preprocessed) summary = summarize_text(extracted_text) st.subheader("🔍 Extracted Text") st.text(extracted_text.strip() or "Could not extract text.") st.subheader("🧠 Summary") st.markdown(summary.strip() or "Summary not available.")