IZERE HIRWA Roger commited on
Commit
1cc833a
·
1 Parent(s): a457084
Files changed (2) hide show
  1. app.py +5 -2
  2. static/script.js +13 -2
app.py CHANGED
@@ -284,7 +284,8 @@ def classify_document():
284
  D, I = index.search(np.array([embedding]), k=k)
285
 
286
  if len(labels) > 0 and I[0][0] < len(labels):
287
- similarity = 1 - D[0][0]
 
288
  confidence_threshold = 0.35
289
 
290
  best_match = labels[I[0][0]]
@@ -292,7 +293,8 @@ def classify_document():
292
 
293
  for i in range(min(k, len(D[0]))):
294
  if I[0][i] < len(labels):
295
- sim = 1 - D[0][i]
 
296
  matches.append({"category": labels[I[0][i]], "similarity": round(sim, 3)})
297
 
298
  # Save classified document to SQLite
@@ -332,6 +334,7 @@ def classify_document():
332
 
333
  return jsonify({"error": "Document not recognized"}), 400
334
  except Exception as e:
 
335
  return jsonify({"error": str(e)}), 500
336
 
337
  @app.route("/api/categories", methods=["GET"])
 
284
  D, I = index.search(np.array([embedding]), k=k)
285
 
286
  if len(labels) > 0 and I[0][0] < len(labels):
287
+ # Convert numpy float32 to Python float for JSON serialization
288
+ similarity = float(1 - D[0][0])
289
  confidence_threshold = 0.35
290
 
291
  best_match = labels[I[0][0]]
 
293
 
294
  for i in range(min(k, len(D[0]))):
295
  if I[0][i] < len(labels):
296
+ # Convert numpy float32 to Python float
297
+ sim = float(1 - D[0][i])
298
  matches.append({"category": labels[I[0][i]], "similarity": round(sim, 3)})
299
 
300
  # Save classified document to SQLite
 
334
 
335
  return jsonify({"error": "Document not recognized"}), 400
336
  except Exception as e:
337
+ print(f"Classification error: {e}")
338
  return jsonify({"error": str(e)}), 500
339
 
340
  @app.route("/api/categories", methods=["GET"])
static/script.js CHANGED
@@ -592,11 +592,22 @@ document.getElementById('classifyForm').addEventListener('submit', async (e) =>
592
  fileInput.value = '';
593
  document.querySelector('#classifyUpload p').textContent = 'Click to select or drag & drop files here';
594
  loadStats();
 
595
  } else {
596
- showResult(resultDiv, result.detail, 'error');
 
 
 
 
 
 
 
 
 
597
  }
598
  } catch (error) {
599
- showResult(resultDiv, 'Classification failed: ' + error.message, 'error');
 
600
  }
601
  });
602
 
 
592
  fileInput.value = '';
593
  document.querySelector('#classifyUpload p').textContent = 'Click to select or drag & drop files here';
594
  loadStats();
595
+ loadCategories();
596
  } else {
597
+ // Handle different error types
598
+ let errorMessage = result.error || result.detail || 'Classification failed';
599
+ if (errorMessage.includes('No categories')) {
600
+ errorMessage = '⚠️ Please add some document categories first before classifying documents.';
601
+ } else if (errorMessage.includes('Failed to process')) {
602
+ errorMessage = '❌ Could not process the uploaded file. Please ensure it\'s a valid image or PDF.';
603
+ } else if (errorMessage.includes('JSON serializable')) {
604
+ errorMessage = '🔧 Processing error occurred. Please try again.';
605
+ }
606
+ showResult(resultDiv, errorMessage, 'error');
607
  }
608
  } catch (error) {
609
+ console.error('Classification error:', error);
610
+ showResult(resultDiv, '❌ Network error: Please check your connection and try again.', 'error');
611
  }
612
  });
613