Nur Arifin Akbar commited on
Commit
0b4d45d
·
1 Parent(s): b6de031

Fix Gemini model name and add detailed error handling for sample data loading

Browse files
Files changed (2) hide show
  1. app.py +39 -12
  2. config.py +2 -2
app.py CHANGED
@@ -195,7 +195,11 @@ def load_sample_data():
195
 
196
  # Initialize recognizer if needed
197
  if recognizer is None:
198
- recognizer = HandwritingRecognizer(GEMINI_API_KEY)
 
 
 
 
199
 
200
  # Load pre-generated sample images
201
  try:
@@ -203,20 +207,43 @@ def load_sample_data():
203
  student_response_img = Image.open("sample_student_response.png")
204
  except FileNotFoundError:
205
  # Fallback: use the sample_images module if files don't exist
206
- from sample_images import create_sample_answer_key_image, create_sample_student_response_image
207
- answer_key_img = create_sample_answer_key_image()
208
- student_response_img = create_sample_student_response_image()
 
 
 
 
209
 
210
  # Process through actual OCR
211
- answer_key_text = recognizer.extract_text_from_image(answer_key_img)
212
- student_response_text = recognizer.extract_text_from_image(student_response_img)
 
 
 
 
 
 
 
 
 
 
213
 
214
- if answer_key_text.startswith("Error") or student_response_text.startswith("Error"):
 
 
 
 
 
 
 
 
 
215
  return (
216
- " Error processing sample images through OCR",
217
- answer_key_text if not answer_key_text.startswith("Error") else "",
218
- "❌ Error processing sample images through OCR",
219
- student_response_text if not student_response_text.startswith("Error") else ""
220
  )
221
 
222
  return (
@@ -227,7 +254,7 @@ def load_sample_data():
227
  )
228
 
229
  except Exception as e:
230
- error_msg = f"❌ Error in demo: {str(e)}"
231
  return (error_msg, "", error_msg, "")
232
 
233
  def process_answer_key(api_key: str, file) -> Tuple[str, str]:
 
195
 
196
  # Initialize recognizer if needed
197
  if recognizer is None:
198
+ try:
199
+ recognizer = HandwritingRecognizer(GEMINI_API_KEY)
200
+ except Exception as e:
201
+ error_msg = f"❌ Error initializing Gemini API: {str(e)}"
202
+ return (error_msg, "", error_msg, "")
203
 
204
  # Load pre-generated sample images
205
  try:
 
207
  student_response_img = Image.open("sample_student_response.png")
208
  except FileNotFoundError:
209
  # Fallback: use the sample_images module if files don't exist
210
+ try:
211
+ from sample_images import create_sample_answer_key_image, create_sample_student_response_image
212
+ answer_key_img = create_sample_answer_key_image()
213
+ student_response_img = create_sample_student_response_image()
214
+ except Exception as e:
215
+ error_msg = f"❌ Error creating sample images: {str(e)}"
216
+ return (error_msg, "", error_msg, "")
217
 
218
  # Process through actual OCR
219
+ try:
220
+ answer_key_text = recognizer.extract_text_from_image(answer_key_img)
221
+ if answer_key_text.startswith("Error"):
222
+ return (
223
+ f"❌ Error processing answer key: {answer_key_text}",
224
+ "",
225
+ f"❌ Error processing answer key: {answer_key_text}",
226
+ ""
227
+ )
228
+ except Exception as e:
229
+ error_msg = f"❌ Error processing answer key image: {str(e)}"
230
+ return (error_msg, "", error_msg, "")
231
 
232
+ try:
233
+ student_response_text = recognizer.extract_text_from_image(student_response_img)
234
+ if student_response_text.startswith("Error"):
235
+ return (
236
+ "✅ Answer key processed successfully!",
237
+ answer_key_text,
238
+ f"❌ Error processing student response: {student_response_text}",
239
+ ""
240
+ )
241
+ except Exception as e:
242
  return (
243
+ " Answer key processed successfully!",
244
+ answer_key_text,
245
+ f"❌ Error processing student response: {str(e)}",
246
+ ""
247
  )
248
 
249
  return (
 
254
  )
255
 
256
  except Exception as e:
257
+ error_msg = f"❌ Unexpected error in demo: {str(e)}"
258
  return (error_msg, "", error_msg, "")
259
 
260
  def process_answer_key(api_key: str, file) -> Tuple[str, str]:
config.py CHANGED
@@ -30,8 +30,8 @@ SCORE_THRESHOLDS = {
30
 
31
  # API settings
32
  GEMINI_API_KEY = os.getenv('GEMINI_API_KEY', '')
33
- # Using gemini-2.0-flash-exp (gemini3n series) for all processing including vision (supports 256x256, 512x512, 768x768 images)
34
- GEMINI_MODEL = os.getenv('GEMINI_MODEL', 'gemma-3n-e4b-it')
35
  ENVIRONMENT = os.getenv('ENVIRONMENT', 'development')
36
 
37
  # Image preprocessing settings for gemini3n series models
 
30
 
31
  # API settings
32
  GEMINI_API_KEY = os.getenv('GEMINI_API_KEY', '')
33
+ # Using gemini-2.0-flash-exp for vision and text processing
34
+ GEMINI_MODEL = os.getenv('GEMINI_MODEL', 'gemini-2.0-flash-exp')
35
  ENVIRONMENT = os.getenv('ENVIRONMENT', 'development')
36
 
37
  # Image preprocessing settings for gemini3n series models