J’ai transformé ma RTX 4060 en usine à CV grâce à une IA locale
Comment j’ai construit, chez moi, une brique d’extraction de CV on-premise avec OCR, Ollama, Qwen, Pydantic, JSON Resume et Europass.
TL;DR
Dans le cadre de HackAVP 2026, j’ai développé CV Forge, une brique capable de transformer un CV en données structurées réutilisables par d’autres services.
Ce projet s’inscrit dans un écosystème local porté par plusieurs acteurs :
- OPT-NC, à l’origine du besoin et des données du challenge,
- Station N, pour le cadre d’innovation et le challenge HackAVP,
- l’IAE / Université de la Nouvelle-Calédonie, pour l’accompagnement pédagogique,
- et mon entreprise BARRAU BUSINESS SYSTEME, qui m’a permis de développer mes compétences jusqu’à pouvoir construire cette solution.
L’objectif de CV Forge est simple : extraire, interpréter, valider et standardiser les informations contenues dans un CV afin de les rendre exploitables par d’autres briques HackAVP.
Vidéo :
Écosystème du projet
Le défi : un CV n’est pas une base de données
Un humain lit un CV presque instantanément.
Il repère naturellement :
- le nom du candidat,
- ses expériences,
- ses diplômes,
- ses compétences,
- ses coordonnées.
Mais pour une machine, le problème est beaucoup plus compliqué.
Un CV peut être :
- en une ou deux colonnes,
- très graphique,
- composé d’images,
- exporté depuis Word, Canva ou un autre outil,
- organisé différemment d’un document à l’autre.
Le problème est donc double : extraire le contenu du document, puis comprendre ce contenu sans inventer d’informations. Une mauvaise extraction ne devient pas correcte simplement parce qu'elle passe dans un LLM.
🏠 Mon laboratoire IA : du on-premise chez moi
J'ai choisi d'héberger ma solution sur mon ordinateur perso. Les CV comportent des informations personnelles : identité, coordonnées, formations et parcours professionnel. Exécuter l'OCR et le modèle d'IA localement me permet de maîtriser le traitement sans envoyer ces documents à une API d'IA cloud.
Cela ne veut pas dire que le on-premise est automatiquement sécurisé ou conforme au RGPD. Il faut aussi protéger les accès, les fichiers et les journaux, et définir des règles de conservation. En revanche, je maîtrise mieux mon environnement et je peux expérimenter sans facturation par requête.
Mon setup
| Composant | Choix |
|---|---|
| GPU | NVIDIA GeForce RTX 4060 |
| VRAM | 8 Go |
| Prix de ma carte en Nouvelle-Calédonie | Environ 60 000 F CFP |
| Hébergement | Local, chez moi |
| Moteur IA | Ollama |
| Modèle | Qwen léger 3 4B |
| Services | Python / FastAPI |
| Validation | Pydantic |
| Orchestration | n8n |
| Format d'échange | JSON Resume |
| Autre format ciblé | Europass |
Je n'ai pas essayé de faire tourner le modèle le plus volumineux possible. J'ai sélectionné une approche adaptée à mon besoin : identifier et structurer des données de CV.
Le défi n'est pas de disposer du plus gros GPU, mais de tirer le meilleur parti de celui que j'ai.
⚙️ Sous le capot : de l'OCR au JSON Resume
J'ai découpé mon traitement en briques spécialisées. Chacune a sa propre responsabilité : extraire, interpréter, valider, puis partager.
- Le workflow n8n reçoit le CV à traiter.
- Un service OCR / extraction récupère les informations du document.
- Le contenu extrait est analysé par Qwen via Ollama, exécuté localement.
- Le résultat est normalisé selon une structure attendue.
- Pydantic contrôle les types, la structure et certaines règles métier.
- Le profil est transformé en JSON Resume.
- Ce format peut être consommé par les autres services HackAVP et servir de point de départ à une conversion Europass.
Diagramme de séquence du traitement
Pourquoi séparer les services ?
Je ne veux pas que le modèle d'IA fasse tout car on ne peux pas le faire confiance à 100 % : l'OCR est chargé d'extraire, Qwen d'interpréter, Pydantic de valider la structure et le convertisseur de produire un format d'échange. Cette modularité permet de remplacer un composant sans réécrire l'ensemble de la chaîne, tant que ses interfaces restent compatibles.
🧪 Banc d'essai : une RTX 4060 face à une RTX 5080
Mes collègues chargé de CV Generator utilisent une RTX 5080 avec 16 Go de VRAM. Sa machine peut accueillir des modèles plus volumineux, selon la quantification et la mémoire nécessaire, ce qui peut être intéressant pour la génération de documents et certaines tâches de compréhension plus complexes.
De mon côté, ma carte graphique me pousse à privilégier un modèle Qwen léger et un traitement spécialisé.
| Critère | Mon projet CV Forge | Projet CV Generator |
|---|---|---|
| Carte graphique | RTX 4060 | RTX 5080 |
| Mémoire vidéo | 8 Go | 16 Go |
| Prix indicatif en NC | ~60 000 F CFP | ~300 000 F CFP |
| Priorité | Extraction et structuration | Génération de candidature |
| Approche | Petit modèle et règles de validation | Possibilité d'utiliser un modèle plus volumineux |
| Exécution | On-premise | On-premise |
Un modèle plus grand peut mieux réussir certaines tâches et produire moins d'erreurs, mais ce n'est pas automatique : il faut le vérifier avec les mêmes documents et les mêmes critères, même si les erreurs sont moins présente. Une carte plus puissante n'élimine pas magiquement les hallucinations.
Et si je change de GPU demain ?
L'architecture peut monter en puissance. Avec davantage de VRAM, je pourrais tester des modèles plus gros tout en conservant le même enchaînement :
OCR → Ollama / Qwen → Pydantic → JSON Resume → Autres applications Il faudrait bien sûr adapter la configuration, vérifier les performances et retester la précision. Mais on ne repart pas de zéro : le principe de séparation des composants reste le même.
Aujourd'hui je privilégie une IA spécialisée sur du matériel accessible. Demain je peux faire évoluer le matériel et le modèle, sans renoncer au format d'échange.
🔧 Retour d'expérience : stop aux rustines !
Pendant le développement, j'ai parfois tenté de corriger les erreurs en ajoutant des nœuds n8n, des conditions ou des instructions au prompt.
Le problème ? À force de donner des coups de clé à molette, le workflow devient une usine à gaz ! 😅
Avec ma RTX 4060, il faut que j'accepte les limites du LLM, on ne peut pas forcer une imprimante à faire de la vidéo, il faut upgrade ses composants.
🐛 Un exemple concret
Sur certains CV, mon pipeline retrouvait :
- ✅ Les expériences professionnelles
- ✅ Les formations et compétences
- ✅ Les coordonnées
- ❌ Mais parfois… pas le nom du candidat !
💡 Dix rustines ne transformeront jamais un petit LLM en modèle booster. Mieux vaut une architecture propre et évolutive qu'une accumulation de correctifs.
✅ Qualité des données : une IA sous contrôle
Avec mon modèle Qwen, j'obtiens des résultats encourageants et peu d'erreurs visibles sur les CV.
Mais une IA peut toujours halluciner ! C'est pourquoi je contrôle plusieurs points :
- ✅ Structure : JSON conforme grâce à Pydantic.
- 🎯 Exactitude : informations fidèles au CV original.
- 📄 Complétude : données essentielles récupérées.
- ⚡ Performance : environ 44 secondes sur un test.
Un JSON valide ne signifie pas forcément que les informations sont exactes !
🔗 HackAVP : l'interopérabilité avant tout !
Le véritable enseignement de HackAVP ? Faire communiquer plusieurs applications indépendantes autour d'un objectif commun.
Avec CV Forge, je transforme les CV en JSON Resume, un format standardisé que les autres équipes peuvent directement exploiter.
🔄 Un format, plusieurs possibilités
- 📄 CV Forge → Extraction et structuration.
- 🎯 CV Matching → Correspondance candidat/poste.
- ✍️ CV Generator → Génération de candidatures.
- 🇪🇺 Europass → Interopérabilité avec un standard européen.
Chaque brique possède sa propre technologie, mais toutes peuvent communiquer grâce à un format de données commun.
Europass : ne pas s'enfermer dans HackAVP
J'ai aussi travaillé sur une correspondance des champs vers le modèle de données Europass : identité, expériences, formations, langues et compétences.
Cette approche permet d'envisager la réutilisation des profils au-delà de notre écosystème. Il s'agit d'un travail de compatibilité des structures de données, pas que d'une certification officielle Europass. La validation exhaustive des exports est un point à poursuivre.
L'interopérabilité, ce n'est pas seulement réussir une requête HTTP. C'est permettre à des systèmes conçus séparément de partager une information qui garde le même sens.
Et c'est aussi une question d'architecture : si demain je change mon GPU, mon modèle Qwen ou mon service OCR, les autres équipes ne devraient pas devoir réécrire leurs applications tant que je respecte le contrat de sortie.
🚀 Et après ?
Pour aller plus loin, je souhaite surtout :
- construire un jeu de CV de test avec des résultats attendus ;
- mesurer séparément les erreurs OCR, les erreurs de normalisation et les anomalies métier ;
- comparer plusieurs versions de Qwen sur des documents identiques ;
- mesurer la latence moyenne et la consommation de VRAM ;
- améliorer les contrôles sur les champs critiques ;
- approfondir les tests de conversion vers Europass.
🏁 Conclusion : une IA locale, mais surtout une architecture ouverte
Avec CV Forge, j'ai voulu démontrer qu'une RTX 4060 de 8 Go, un modèle Qwen léger et une chaîne de traitement bien pensée suffisent déjà pour développer une brique d'extraction de CV utile.
Je retiens toutefois un enseignement plus large : la réussite d'un projet ne se résume ni à la taille du modèle, ni au nombre de nœuds n8n. Il faut savoir identifier les limites du matériel, contrôler ses résultats et concevoir des interfaces capables d'évoluer.
Mais mon principal apprentissage reste l'interopérabilité : transformer un document en donnée structurée est une première étape ; permettre à plusieurs applications de s'appuyer sur cette donnée sans dépendre les unes des autres, c'est ce qui donne toute sa valeur au projet.
Le vrai produit de CV Forge n'est pas un nouveau PDF : c'est un profil candidat structuré, contrôlable et réutilisable.
Projet : HackAVP 2026 — CV Forge
Développement : Florian Jean-Baptiste Dit Doudoute
Formation : Master MIAGE — Université de la Nouvelle-Calédonie
Stack : Python · FastAPI · OCR · Ollama · Qwen · Pydantic · n8n · JSON Resume · Europass
À lire aussi : HackAVP — CV Generator, la solution de préparation de candidature



