File size: 1,878 Bytes
87d0988
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
49
50
51
52
import streamlit as st
from PIL import Image
import io
import numpy as np

# Import our custom modules
from utils.image_preprocessing import preprocess_image
from models.document_ai import extract_text_and_layout

# App title and description
st.title("Menu to Braille Converter")
st.write("Upload a menu image to convert it to Braille text")

# File uploader
uploaded_file = st.file_uploader("Choose a menu image...", type=["jpg", "jpeg", "png"])

# Display uploaded image and process it
if uploaded_file is not None:
    # Load and display image
    image = Image.open(uploaded_file)
    st.image(image, caption="Uploaded Menu", use_column_width=True)
    
    # Add a button to process the image
    if st.button("Extract Text"):
        with st.spinner("Processing image..."):
            # Preprocess the image
            st.subheader("Preprocessed Image")
            preprocessed_img = preprocess_image(image)
            st.image(preprocessed_img, caption="Preprocessed Image", use_column_width=True)
            
            # Extract text using LayoutLMv2
            st.subheader("Extracted Text")
            try:
                result = extract_text_and_layout(preprocessed_img)
                
                # Display extracted words
                if result['words']:
                    text = ' '.join(result['words'])
                    st.text_area("Extracted Text", text, height=200)
                else:
                    st.warning("No text was extracted from the image.")
                    
            except Exception as e:
                st.error(f"Error processing image: {str(e)}")
    
    # Placeholders for future functionality
    st.subheader("Braille Translation")
    st.info("Braille translation will be implemented in Phase 4")
    
    st.subheader("Download Options")
    st.info("PDF download will be implemented in Phase 5")