3.5 KiB
3.5 KiB
Révision IA (Ollama): scoring, corrections et avis
Objectif
Fournir une évaluation automatique de la fiabilité des extractions (score), proposer des corrections potentielles (champ, valeur, confiance) et un avis court, en s’appuyant sur un LLM local accessible via Ollama.
Composants et endpoints
- Backend:
- Appel automatique après chaque extraction: intégration du résultat de révision dans
status.reviewetmetadata.quality.ollamaScore. - Endpoint manuel:
POST /api/folders/:folderHash/files/:fileHash/review(pas de payload requis). Retourne{ success, review }. - Format attendu du LLM (réponse stricte JSON):
{ "score": number (0..1), "corrections": Array<{ path, value, confidence }>, "avis": string }.
- Appel automatique après chaque extraction: intégration du résultat de révision dans
- Frontend:
- Bouton “Révision IA” par document (état completed): déclenche l’endpoint manuel puis rafraîchit la liste.
- Affichage: Chip
IA: x.xx(tooltip =avissi présent). ChipCorrections: Nouvrant un dialogue listant les corrections.
Calcul des scores et arbitrage
- Base OCR: confiance Tesseract/pdf-parse normalisée.
- Boost annuaire de noms (
backend/data/names/firstnames_all.csv,lastnames_all.csv): +0.05 si prénom trouvé, +0.05 si nom trouvé (après normalisation), agrégé au score. - Ensembles de règles NER (CNI/MRZ, adresses, entités) influent indirectement via
identitiesetcniNumbers(poids renforcés). - Score global côté backend (avant Ollama): plafonné à 0.99, agrège OCR, présence d’identités, CNI, boost annuaire.
- Révision Ollama: si
review.scoreest supérieur auglobalConfidence, le backend rehaussemetadata.quality.globalConfidenceà ce score et persiste le résultat.
Suggestions de qualité
needsReupload: déclenché si confiance OCR < 0.75, ou si CNI sans NOM/PRÉNOM.needsAddressConfirmation: déclenché si une adresse est détectée; confirmation côté UI via dialogue et endpointconfirm-address.
Dépendances et configuration
- Ollama: service HTTP local sur
http://localhost:11434. Modèle configurable viaOLLAMA_MODEL(défautllama3.1). Timeout 8s. - Aucune dépendance Node additionnelle (utilisation d’
httpnatif).
Données persistées
- Cache fichier par document:
cache/<folderHash>/<fileHash>.json. - Champs ajoutés/modifiés:
metadata.quality.ollamaScore: number(0..1)status.review: { score, corrections[], avis }metadata.quality.globalConfidence: number(peut être rehaussé par Ollama)
UI et interactions
- Liste des documents:
- Chip “IA: x.xx” si présent (tooltip:
avis). - Chip “Corrections: N” si
status.review.correctionsnon vide. Clic: ouvre un dialogue listant{ path, value, confidence }. - Bouton “Révision IA”: relance la révision et rafraîchit l’item.
- Indicateurs visuels: spinner sur le bouton pendant l’appel, disabled, snackbar de confirmation d’exécution.
- Chip “IA: x.xx” si présent (tooltip:
Tests manuels (checklist)
- Vérifier qu’un upload image/PDF completed affiche le Chip
IA: x.xxet/ouCorrections: Nsi présents. - Cliquer “Révision IA”: confirmer que la liste se rafraîchit et que
status.reviewest renseigné. - Ouvrir le dialogue des corrections et vérifier l’affichage des champs.
- Confirmer/infirmer une adresse détectée et vérifier la mise à jour côté backend et disparition du flag.
Journal des décisions
- Choix du JSON strict pour la sortie LLM afin de faciliter l’exploitation et éviter les parsings fragiles.
- Utilisation d’
httpnatif côté Node pour éviter l’ajout de dépendances.