mashaelalbu commited on
Commit
7a45448
·
verified ·
1 Parent(s): 2cf116a

Update app/routes.py

Browse files
Files changed (1) hide show
  1. app/routes.py +12 -14
app/routes.py CHANGED
@@ -18,14 +18,12 @@ allergy_analyzer = None
18
 
19
  ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg'}
20
 
21
- def init_allergy_analyzer():
 
22
  global allergy_analyzer
23
  if allergy_analyzer is None:
24
- allergy_analyzer = AllergyAnalyzer(current_app.config['ALLERGY_DATASET_PATH'])
25
-
26
- @main.before_app_first_request
27
- def before_first_request():
28
- init_allergy_analyzer()
29
 
30
  def allowed_file(filename):
31
  """Validate file extension"""
@@ -49,13 +47,12 @@ def index():
49
 
50
  @main.route('/api/ocr', methods=['POST'])
51
  def process_image():
 
52
  try:
53
- # التحقق من وجود الملف
54
  if 'file' not in request.files:
55
  logger.warning("No file uploaded")
56
  return jsonify({"error": "No file uploaded"}), 400
57
 
58
- # التحقق من وجود قائمة الحساسيات
59
  if 'allergens' not in request.form:
60
  logger.warning("Allergens not specified")
61
  return jsonify({"error": "Allergens not specified"}), 400
@@ -65,7 +62,6 @@ def process_image():
65
  logger.warning("No file selected")
66
  return jsonify({"error": "No file selected"}), 400
67
 
68
- # التحقق من نوع الملف
69
  if not allowed_file(file.filename):
70
  logger.warning(f"Invalid file type: {file.filename}")
71
  return jsonify({
@@ -73,23 +69,22 @@ def process_image():
73
  "supported_formats": list(ALLOWED_EXTENSIONS)
74
  }), 400
75
 
76
- # تحضير قائمة الحساسيات
77
  user_allergens = [a.strip().lower() for a in request.form['allergens'].split(',')]
78
  logger.info(f"Processing image for allergens: {user_allergens}")
79
 
80
- # قراءة الصورة
81
  file_bytes = file.read()
82
  file_stream = io.BytesIO(file_bytes)
83
  image = Image.open(file_stream)
84
 
85
- # معالجة الصورة واستخراج النص
86
  extracted_text = ocr_model.process_image(image)
87
  logger.info(f"Extracted text: {extracted_text}")
88
 
89
- # تحليل الحساسيات
 
 
 
90
  analysis_results = allergy_analyzer.analyze_text(extracted_text, user_allergens)
91
 
92
- # إعداد الرد
93
  response = {
94
  "success": True,
95
  "extracted_text": extracted_text,
@@ -113,6 +108,9 @@ def process_image():
113
 
114
  @main.route('/api/allergens', methods=['GET'])
115
  def get_known_allergens():
 
 
 
116
  allergens = allergy_analyzer.get_allergen_list()
117
  return jsonify({
118
  "allergens": allergens,
 
18
 
19
  ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg'}
20
 
21
+ def init_allergy_analyzer(app):
22
+ """تهيئة محلل الحساسيات باستخدام سياق التطبيق"""
23
  global allergy_analyzer
24
  if allergy_analyzer is None:
25
+ with app.app_context():
26
+ allergy_analyzer = AllergyAnalyzer(current_app.config['ALLERGY_DATASET_PATH'])
 
 
 
27
 
28
  def allowed_file(filename):
29
  """Validate file extension"""
 
47
 
48
  @main.route('/api/ocr', methods=['POST'])
49
  def process_image():
50
+ global allergy_analyzer
51
  try:
 
52
  if 'file' not in request.files:
53
  logger.warning("No file uploaded")
54
  return jsonify({"error": "No file uploaded"}), 400
55
 
 
56
  if 'allergens' not in request.form:
57
  logger.warning("Allergens not specified")
58
  return jsonify({"error": "Allergens not specified"}), 400
 
62
  logger.warning("No file selected")
63
  return jsonify({"error": "No file selected"}), 400
64
 
 
65
  if not allowed_file(file.filename):
66
  logger.warning(f"Invalid file type: {file.filename}")
67
  return jsonify({
 
69
  "supported_formats": list(ALLOWED_EXTENSIONS)
70
  }), 400
71
 
 
72
  user_allergens = [a.strip().lower() for a in request.form['allergens'].split(',')]
73
  logger.info(f"Processing image for allergens: {user_allergens}")
74
 
 
75
  file_bytes = file.read()
76
  file_stream = io.BytesIO(file_bytes)
77
  image = Image.open(file_stream)
78
 
 
79
  extracted_text = ocr_model.process_image(image)
80
  logger.info(f"Extracted text: {extracted_text}")
81
 
82
+ # تأكد من تهيئة محلل الحساسيات
83
+ if allergy_analyzer is None:
84
+ init_allergy_analyzer(current_app._get_current_object())
85
+
86
  analysis_results = allergy_analyzer.analyze_text(extracted_text, user_allergens)
87
 
 
88
  response = {
89
  "success": True,
90
  "extracted_text": extracted_text,
 
108
 
109
  @main.route('/api/allergens', methods=['GET'])
110
  def get_known_allergens():
111
+ global allergy_analyzer
112
+ if allergy_analyzer is None:
113
+ init_allergy_analyzer(current_app._get_current_object())
114
  allergens = allergy_analyzer.get_allergen_list()
115
  return jsonify({
116
  "allergens": allergens,