4NK_IA_front/test-web-interface.cjs
4NK IA 8033afd748 docs: rendre générique la documentation et tests OCR
- docs/ocr_cni_adresse.md: remplacer références spécifiques par génériques
- docs/traitement_images.md: généraliser la description des cas cibles
- tests/ocr_cni_adresse.md: tests génériques pour identités
- test-web-interface.cjs: interface générique pour détection d\identités
2025-09-18 20:15:55 +00:00

207 lines
7.1 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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)
})