Spaces:
Sleeping
Sleeping
| import docx | |
| from ocr_processing import OCRProcessor | |
| class GradingSystem: | |
| def __init__(self, ocr_handler): | |
| self.ocr_handler = ocr_handler | |
| def extract_answers(self, student_images): | |
| responses = [] | |
| for image_path in student_images: | |
| try: | |
| encoded_img = self.ocr_handler.encode_image(image_path) | |
| prompt = "Extract the visible text from the provided image and organize it as structured responses." | |
| result = self.ocr_handler.extract_text_from_image(encoded_img, prompt) | |
| responses.append(result.content) | |
| except Exception as err: | |
| responses.append(f"[Error extracting {image_path}: {err}]") | |
| return "\n".join(responses) | |
| def extract_marking_criteria(self, docx_file): | |
| try: | |
| doc = docx.Document(docx_file) | |
| criteria = [para.text.strip() for para in doc.paragraphs if para.text.strip()] | |
| return "\n".join(criteria) | |
| except Exception as err: | |
| raise Exception(f"Failed to extract criteria: {err}") | |
| def grade_answers(self, student_text, marking_criteria): | |
| prompt = f"Compare the student's responses with the marking scheme and assign grades accordingly. Marking Scheme:\n{marking_criteria}\n\nStudent Response:\n{student_text}" | |
| try: | |
| result = self.ocr_handler.extract_text_from_image("", prompt) | |
| return result.content | |
| except Exception as err: | |
| raise Exception(f"Grading failed: {err}") |