AutoAssess / app.py
TensorFlo's picture
minor changes
03c245b
raw
history blame
2.64 kB
import streamlit as st
from src.main import process_essays
from PIL import Image
import os
from openpyxl import load_workbook, Workbook
from io import BytesIO
import openai
def save_workbook_to_bytes(wb):
# Save the workbook into a BytesIO object (in memory, not on disk)
byte_io = BytesIO()
wb.save(byte_io)
byte_io.seek(0) # Go to the beginning of the BytesIO buffer
return byte_io.getvalue()
openai_api_key = os.getenv("OPENAI_API_KEY")
# Set the OpenAI API key
openai.api_key = openai_api_key
st.title("AutoAssess: Student Essay Transcription and Assessment")
st.title("AutoAssess")
st.write("If you see this, the basic app is loading correctly!")
# Upload folder of images
# uploaded_files = sorted(st.file_uploader("Upload a folder of student essays (images)", type=['jpg', 'jpeg', 'png'], accept_multiple_files=True))
# replace uploaded files with files loading from directory
image_dir = "data/images"
uploaded_files = []
for file in os.listdir(image_dir):
with open(image_dir + '/' + file, "rb") as image_file:
uploaded_files.append(image_file.read())
# 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:")
essay_question = "What is beauty?"
grading_criteria = "1. Introduction\n2. Body\n3. Conclusion\n4. Grammar\n5. Spelling\n6. Punctuation\n7. Originality\n8. Creativity"
# 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"])
excel_file = "data/essays.xlsx"
if st.button("Process Essays"):
if not uploaded_files or not essay_question or not grading_criteria or not excel_file:
st.warning("Please upload all required files and enter necessary information.")
else:
# Process student info file
workbook = load_workbook(excel_file)
new_workbook = process_essays(uploaded_files,essay_question,grading_criteria,workbook)
# Optional: Save results to the output folder
output_file = "output/results.xlsx"
new_workbook.save(output_file)
st.success(f"All essays processed. Results saved to {output_file}")
# Convert the workbook to bytes
excel_file = save_workbook_to_bytes(new_workbook)
# Display the download button
st.download_button(
label="Download the Excel file",
data=excel_file,
file_name="results.xlsx",
mime="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
)