#!/usr/bin/env node /** * Script de test pour analyser les images via l'interface web * et vérifier la détection des identités 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('• Noms et prénoms extraits du document') 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 extraire les identités:') 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(' • Noms et prénoms avec corrections OCR automatiques') console.log(' • Numéros CNI au format 2 lettres + 6 chiffres') console.log(' • Type de document CNI') console.log(' • Adresses et autres entités') } 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) })