Spaces:
Running
Running
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.")
|