File size: 1,928 Bytes
37b9a66
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import streamlit as st
import pandas as pd
from src.main import process_image  # Assume process_image is a function in main.py
from src.assess_text import assess_essay_with_gpt
from src.transcribe_image import transcribe_image
from PIL import Image

st.title("AutoAssess: Student Essay Transcription and Assessment")

# Upload folder of images
uploaded_files = st.file_uploader("Upload a folder of student essays (images)", type=['jpg', 'jpeg', 'png'], accept_multiple_files=True)

# Text inputs for question and criteria
essay_question = st.text_input("Enter the essay question:")
grading_criteria = st.text_area("Enter grading criteria or relevant marking information:")

# Upload Excel file with student IDs and page count
student_info_file = st.file_uploader("Upload Excel file with student IDs and page count", type=["xlsx"])

if st.button("Process Essays"):
    if not uploaded_files or not essay_question or not grading_criteria or not student_info_file:
        st.warning("Please upload all required files and enter necessary information.")
    else:
        # Process student info file
        student_df = pd.read_excel(student_info_file)
        st.write("Student Information:")
        st.write(student_df)

        results = []
        for uploaded_file in uploaded_files:
            image = Image.open(uploaded_file)
            # Use your backend function to process each image
            transcription = process_image(image, essay_question, grading_criteria)
            results.append({"filename": uploaded_file.name, "transcription": transcription})

        for result in results:
            st.write(f"**File:** {result['filename']}")
            st.write(result['transcription'])

        # Optional: Save results to the output folder
        output_file = "output/results.csv"
        pd.DataFrame(results).to_csv(output_file)
        st.success(f"All essays processed. Results saved to {output_file}")