- 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
2.4 KiB
2.4 KiB
Objet
Décrire le pipeline de traitement des images et comment diagnostiquer un blocage.
Contexte
- Backend: Node.js/Express, OCR: tesseract.js, prétraitement: sharp, PDF: pdf-parse.
- Répertoires:
uploads/<folderHash>/(entrées) etcache/<folderHash>/(résultats JSON). - Métadonnées ignorées:
folder.json,*.meta.
Pipeline
- Découverte des fichiers (ignore métadonnées)
- Prétraitement image (grayscale, normalisation, contraste, débruitage)
- OCR (multi-pass
ocrb+eng, fallbackeng) - Extraction PDF (pdf-parse ou OCR si scanné)
- NER/Classification (règles personnes/entreprises/adresses, type doc)
- Écriture JSON dans
cache/<hash>/<fileHash>.json
Délais attendus
- JPEG ~1 Mo: 45–120 s (par image)
- PDF texte: 0.2–2 s; PDF scanné: 30–90 s/page
- 2 images: 3–6 min au total (normal)
Vérifications rapides
- Santé backend:
GET /api/health→{ status: "OK" } - État dossier:
GET /api/folders/<hash>/resultshasPendingtrue si traitements restantspending[].timestamprécentresults[].document.fileNameprésent
- Fichiers cache: apparition de
cache/<hash>/<fileHash>.json
Signes de blocage
hasPending: true> 10 min sans nouveaux JSON danscache/<hash>/- Logs erreurs répétées (ex: type de fichier non supporté)
- Port 3001 occupé (EADDRINUSE)
Actions correctives
- Redémarrage simple:
pkill -9 -f 'node.*backend/server.js' || truenohup node backend/server.js > backend.log 2>&1 &
- Vérifier l’ignorance des métadonnées dans
backend/server.jsif (file === 'folder.json' || file.endsWith('.meta')) { continue }
- Recalcul pending: relancer l’endpoint results puis vérifier
pending
Qualité OCR CNI (note)
- Multi-pass Tesseract, amélioration d’image, regex adresse renforcée, MRZ si présent
- Cas cible: détecter les noms et prénoms selon qualité du scan
État courant (vérifié)
- Backend UP; dossier
7d99a85daf66a0081a0e881630e6b39b results: 3 fichiers traités;pending: 0 (suite correctif normalisation)
Correctif appliqué (normalisation Sharp)
- Problème: erreurs OCR « Expected number between 1 and 100 for upper but received 0.9 » dues à
normalize({ lower: 0.1, upper: 0.9 }). - Cause: Sharp attend des percentiles entiers 1..100 pour
lower/upper. - Correctif:
backend/enhancedOcr.js→normalize({ lower: 10, upper: 90 }). - Effet: fin des boucles d’erreurs;
hasPending: false.