4NK_IA_front/docs/revision_ia_ollama.md

53 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### 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 d`http` 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 d`http` natif côté Node pour éviter lajout de dépendances.