File size: 1,557 Bytes
254bbd5
f19c5b9
 
254bbd5
 
 
f19c5b9
254bbd5
 
f19c5b9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
254bbd5
 
f19c5b9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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.")