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}")