#!/usr/bin/env node /** * Script de test pour analyser les images via l'interface web * et vérifier la détection de CANTU, NICOLAS et codes CNI */ const http = require('http') const fs = require('fs') const path = require('path') console.log('🌐 Test de l\'interface web pour l\'analyse CNI') console.log('===============================================') // Vérifier que les images existent const images = [ 'IMG_20250902_162159.jpg', 'IMG_20250902_162210.jpg' ] console.log('📸 Vérification des images de test:') images.forEach(image => { const imagePath = path.join(__dirname, 'test-files', image) if (fs.existsSync(imagePath)) { const stats = fs.statSync(imagePath) console.log(`✅ ${image}: ${(stats.size / 1024).toFixed(1)} KB`) } else { console.log(`❌ ${image}: Non trouvée`) } }) // Fonction pour faire une requête HTTP function makeRequest(url, options = {}) { return new Promise((resolve, reject) => { const req = http.request(url, options, (res) => { let data = '' res.on('data', chunk => data += chunk) res.on('end', () => resolve({ statusCode: res.statusCode, headers: res.headers, data })) }) req.on('error', reject) req.setTimeout(10000, () => reject(new Error('Timeout'))) req.end() }) } // Test de l'interface frontend async function testFrontendInterface() { console.log('\n🌐 Test de l\'interface frontend...') try { const response = await makeRequest('http://localhost:5174') if (response.statusCode === 200) { console.log('✅ Interface frontend accessible sur http://localhost:5174') } else { console.log(`❌ Erreur d'accès à l'interface: ${response.statusCode}`) return false } } catch (error) { console.log(`❌ Erreur de connexion à l'interface: ${error.message}`) return false } return true } // Test du serveur backend async function testBackendServer() { console.log('\n🔧 Test du serveur backend...') try { const response = await makeRequest('http://localhost:3001/api/health') if (response.statusCode === 200) { console.log('✅ Serveur backend accessible sur http://localhost:3001') console.log(`📊 Réponse: ${response.data}`) } else { console.log(`❌ Erreur d'accès au backend: ${response.statusCode}`) return false } } catch (error) { console.log(`❌ Erreur de connexion au backend: ${error.message}`) return false } return true } // Test d'accès aux images via le serveur async function testImageAccess() { console.log('\n📸 Test d\'accès aux images...') for (const image of images) { try { const imageUrl = `http://localhost:5174/test-files/${image}` const response = await makeRequest(imageUrl) if (response.statusCode === 200) { console.log(`✅ ${image}: Accessible via ${imageUrl}`) } else { console.log(`❌ ${image}: Erreur ${response.statusCode}`) } } catch (error) { console.log(`❌ ${image}: Erreur de connexion - ${error.message}`) } } } // Instructions pour l'analyse manuelle function printManualInstructions() { console.log('\n📋 INSTRUCTIONS POUR L\'ANALYSE MANUELLE:') console.log('=' .repeat(60)) console.log('1. Ouvrez votre navigateur et allez sur: http://localhost:5174') console.log('2. Ouvrez la console développeur (F12)') console.log('3. Dans l\'interface, chargez l\'une des images de test:') images.forEach((image, index) => { console.log(` ${index + 1}. ${image}`) }) console.log('4. Observez les logs d\'extraction dans la console du navigateur') console.log('5. Vérifiez les résultats d\'extraction dans l\'interface') console.log('\n🔍 ÉLÉMENTS À RECHERCHER:') console.log('=' .repeat(60)) console.log('• Nom de famille (en MAJUSCULES)') console.log('• Prénom(s)') console.log('• Numéro de carte d\'identité (format: 2 lettres + 6 chiffres)') console.log('• Date de naissance') console.log('• Lieu de naissance') console.log('• Spécifiquement: "NICOLAS" et "CANTU"') console.log('\n⚙️ CONFIGURATION RECOMMANDÉE:') console.log('=' .repeat(60)) console.log('• Mode sans LLM: VITE_DISABLE_LLM=true') console.log('• Extraction par règles: VITE_USE_RULE_NER=true') console.log('• Pas de clé API OpenAI requise') console.log('\n📊 LOGS ATTENDUS DANS LA CONSOLE:') console.log('=' .repeat(60)) console.log('🔧 [CONFIG] Mode sans LLM activé: { useRuleNer: true, disableLLM: true, ... }') console.log('🚀 [OCR] Début de l\'extraction OCR locale...') console.log('⏳ [OCR] Progression: 30%') console.log('⏳ [OCR] Progression: 70%') console.log('✅ [OCR] Progression: 100% - Extraction terminée') console.log('🔍 [NER] Début de l\'extraction par règles...') console.log('👥 [RULE-NER] Identités extraites: X') console.log('🏠 [RULE-NER] Adresses extraites: X') console.log('🆔 [RULE-NER] Numéros CNI détectés: X') console.log('📅 [RULE-NER] Dates détectées: X') console.log('📋 [RULE-NER] Type détecté: CNI') console.log('🚫 [LLM] LLM désactivé - Mode 100% local') console.log('✅ [LLM] Progression simulée: 100%') console.log('🎉 [FINAL] Extraction complète terminée') } // Fonction principale async function runTests() { console.log('\n🚀 Démarrage des tests...') const frontendOk = await testFrontendInterface() const backendOk = await testBackendServer() if (frontendOk && backendOk) { await testImageAccess() printManualInstructions() console.log('\n🎯 RÉSUMÉ:') console.log('=' .repeat(60)) console.log('✅ Interface frontend: Opérationnelle') console.log('✅ Serveur backend: Opérationnel') console.log('✅ Images de test: Disponibles') console.log('') console.log('💡 Pour analyser les images et rechercher CANTU/NICOLAS:') console.log(' 1. Ouvrez http://localhost:5174 dans votre navigateur') console.log(' 2. Chargez une image de test') console.log(' 3. Observez les résultats dans la console et l\'interface') console.log('') console.log('🔍 Le système est configuré pour détecter:') console.log(' • "NICOLAS" avec corrections OCR (N1colas, Nicol@s, etc.)') console.log(' • "CANTU" avec corrections OCR (C@ntu, CantU, etc.)') console.log(' • Numéros CNI au format 2 lettres + 6 chiffres') console.log(' • Type de document CNI') } else { console.log('\n❌ PROBLÈMES DÉTECTÉS:') console.log('=' .repeat(60)) if (!frontendOk) { console.log('❌ Interface frontend non accessible') console.log(' → Vérifiez que le serveur de développement est démarré') console.log(' → Commande: npm run dev') } if (!backendOk) { console.log('❌ Serveur backend non accessible') console.log(' → Vérifiez que le serveur backend est démarré') console.log(' → Commande: node backend/server.js') } } } // Exécuter les tests runTests().then(() => { console.log('\n🎉 Tests terminés !') }).catch(error => { console.error('❌ Erreur lors des tests:', error.message) process.exit(1) })