4NK_IA_front/docs/revision_ia_ollama.md

3.5 KiB
Raw Permalink Blame History

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 sappuyant 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.review et metadata.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 }.
  • Frontend:
    • Bouton “Révision IA” par document (état completed): déclenche lendpoint manuel puis rafraîchit la liste.
    • Affichage: Chip IA: x.xx (tooltip = avis si présent). Chip Corrections: N ouvrant 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 identities et cniNumbers (poids renforcés).
  • Score global côté backend (avant Ollama): plafonné à 0.99, agrège OCR, présence didentités, CNI, boost annuaire.
  • Révision Ollama: si review.score est supérieur au globalConfidence, le backend rehausse metadata.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 endpoint confirm-address.

Dépendances et configuration

  • Ollama: service HTTP local sur http://localhost:11434. Modèle configurable via OLLAMA_MODEL (défaut llama3.1). Timeout 8s.
  • Aucune dépendance Node additionnelle (utilisation dhttp natif).

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.corrections non vide. Clic: ouvre un dialogue listant { path, value, confidence }.
    • Bouton “Révision IA”: relance la révision et rafraîchit litem.
    • Indicateurs visuels: spinner sur le bouton pendant lappel, disabled, snackbar de confirmation dexécution.

Tests manuels (checklist)

  • Vérifier quun upload image/PDF completed affiche le Chip IA: x.xx et/ou Corrections: N si présents.
  • Cliquer “Révision IA”: confirmer que la liste se rafraîchit et que status.review est renseigné.
  • Ouvrir le dialogue des corrections et vérifier laffichage 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 lexploitation et éviter les parsings fragiles.
  • Utilisation dhttp natif côté Node pour éviter lajout de dépendances.