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