Débutant 11 minJuridique

Juriste : analyser un contrat sans fuite

Réponse directe

Pour analyser un contrat sans qu'il quitte votre poste, servez un modèle avec Ollama (Qwen 3.5 9B ou Mistral Small 24B), extrayez le texte du PDF et imposez une règle : chaque point signalé cite le passage mot pour mot. Un script vérifie ensuite que la citation existe dans le contrat. Relevez la fenêtre de contexte d'Ollama, fixée à 4 000 tokens par défaut sous 24 Go de mémoire vidéo.

Un contrat contient des informations que ni le secret professionnel ni un accord de confidentialité ne permettent de confier à n'importe quel service en ligne. Un pipeline local lit le PDF, signale les clauses à examiner et cite les passages, sans qu'aucune donnée ne sorte du poste. Ce guide monte ce pipeline, ajoute la vérification automatique des citations et dit clairement ce que l'outil ne sait pas faire.

Par Mohamed Meguedmi·Màj 2026-09-30·Testé sur Windows, macOS, Linux

#Pourquoi un contrat ne doit pas passer par un chat en ligne

Un contrat contient des noms, des prix, des conditions négociées et parfois des données personnelles. Le déposer dans un service d'IA hébergé revient à envoyer ces informations chez un tiers, dans un cadre défini par ses conditions d'utilisation et non par votre engagement de confidentialité. Pour les avocats, la question est déontologique : le guide « La déontologie et l'IA », adopté par le Conseil national des barreaux en mars 2026, rappelle parmi les exigences de la profession la protection du secret professionnel et le respect du RGPD. Les commentateurs du guide notent que le secret interdit toute divulgation d'informations confidentielles relatives aux dossiers ou aux clients, y compris lors de l'utilisation d'outils d'intelligence artificielle.

Pour les juristes d'entreprise, la contrainte est contractuelle : un accord de confidentialité signé avec un partenaire ne prévoit presque jamais que ses clauses soient soumises à un fournisseur d'IA. Les offres professionnelles des éditeurs proposent des garanties de non-réutilisation des données, mais elles se vérifient dans le contrat que vous avez signé, pas dans un slogan. L'analyse locale supprime la question : le texte du contrat ne quitte pas votre poste, il n'y a donc ni sous-traitant à déclarer ni transfert à justifier.

!
Local ne veut pas dire fiable
Le local règle la confidentialité, pas l'exactitude. Une étude de Stanford publiée en 2024 sur des outils commerciaux de recherche juridique américains a relevé des réponses erronées dans plus de 17 % des cas pour les meilleurs d'entre eux. Ces outils ne sont pas des lecteurs de contrat, mais l'ordre de grandeur rappelle qu'un modèle qui écrit avec aplomb peut se tromper. D'où la règle de ce guide : chaque affirmation du modèle doit être adossée à un passage vérifiable.

#Un chat sur PDF en interne sans écrire de code

Le kit IA Locale

Ton ChatGPT privé et gratuit sur ta machine en 1 heure — LM Studio, Ollama, Open WebUI, tes documents, sans cloud.

  • Espace en ligne à vie
  • PDF + fichiers
  • Mises à jour à vie

Une partie des lecteurs cherche seulement à interroger des contrats déposés dans un dossier, sans que rien ne sorte du système d'information. Deux voies existent. La première, sans programmation, consiste à installer une interface comme Open WebUI ou AnythingLLM sur un serveur interne, connectée à Ollama : on charge les PDF, on pose des questions, l'outil retrouve les passages utiles. Ces guides existent sur le site. La seconde, décrite ci-dessous, est un script court qui donne un contrôle total sur le prompt et sur la vérification des citations.

Le script convient à l'analyse d'un contrat à la fois, avec des questions précises. L'interface avec recherche documentaire convient à un corpus de plusieurs dizaines de contrats, où l'on veut retrouver par exemple tous les contrats contenant une clause de reconduction tacite. Dans ce second cas, la qualité dépend du découpage des documents et de la recherche, pas seulement du modèle.

Quelle approche pour quel besoin
BesoinApprochePoint de vigilance
Lire un contrat de 10 à 25 pagesScript direct, contrat entier dans le contexteFenêtre de contexte à relever dans Ollama
Interroger 20 à 500 contratsInterface RAG (Open WebUI, AnythingLLM)Qualité du découpage et de la recherche
Comparer à un contrat-modèleScript avec deux textes dans le promptContexte doublé : vérifier la mémoire
Contrat scannéOCR avant toutLe texte bruité fausse les citations

#La pile minimale : modèle, lecteur de PDF, script

Trois éléments suffisent. Ollama sert le modèle. Un lecteur de PDF comme pdfplumber ou PyMuPDF extrait le texte. Un script Python d'une quarantaine de lignes relie le tout. Côté modèle, deux repères dans la bibliothèque Ollama : Qwen 3.5 en 9 milliards de paramètres pèse 6,6 Go et annonce 256 000 tokens de contexte ; Mistral Small en 24 milliards pèse 14 Go avec 32 000 tokens annoncés. Le premier tient sur une carte de 8 à 12 Go, le second demande 16 Go ou plus. Testez les deux sur trois de vos propres contrats : la compréhension du français juridique varie d'un contrat à l'autre.

Le contexte est le point qui piège. Ollama fixe par défaut la fenêtre selon la mémoire vidéo : pour moins de 24 Go, elle est de 4 000 tokens, très inférieure à la taille d'un contrat. Un contrat de 20 pages représente plusieurs milliers de mots, soit une quinzaine de milliers de tokens ou davantage selon la mise en page, ce qui est un ordre de grandeur à mesurer sur vos documents. Sans réglage, le début du contrat est tronqué en silence et le modèle répond sur une partie seulement. Le guide sur la fenêtre de contexte explique le mécanisme.

#Installer les outils

Modèle et bibliothèques
ollama pull qwen3.5:9b   # ou mistral-small si vous avez 16 Go de VRAM
pip install pdfplumber requests

Vérifiez ensuite que le PDF contient du texte sélectionnable : si pdfplumber renvoie une chaîne vide, le fichier est un scan et il faut passer par un OCR. Ne fabriquez jamais un texte à partir d'un OCR de mauvaise qualité sans le signaler à l'utilisateur, car les citations du modèle ne pourront pas être vérifiées.

#Le prompt système d'un assistant de premier repérage

Le prompt fixe le rôle, les interdits et le format. Le point central est l'obligation de citer : un modèle qui doit recopier le passage sur lequel il s'appuie invente moins, et vous pouvez contrôler la citation par programme. Le prompt ci-dessous demande une sortie structurée pour faciliter cette vérification.

system_prompt.txt
Tu assistes un juriste pour un premier repérage rapide dans un contrat
commercial de droit français.

RÈGLES
- Tu ne donnes jamais d'avis juridique. Tu signales des points à examiner.
- Pour chaque point, recopie MOT POUR MOT le passage du contrat concerné.
- Si le contrat ne traite pas un sujet demandé, écris explicitement : non traité.
- Ne suppose jamais l'intention des parties. Ne complète pas un passage manquant.

FORMAT : un JSON, liste d'objets {"point": ..., "citation": ..., "pourquoi": ...}

#Le script complet, avec vérification des citations

Le script lit le PDF, interroge le modèle avec un contexte élargi et impose un format JSON par schéma, ce que l'API d'Ollama permet dans son champ format. Il vérifie ensuite que chaque citation figure réellement dans le texte du contrat, après normalisation des espaces. Une citation introuvable est marquée à part : c'est le signe d'une invention ou d'une paraphrase à contrôler.

analyse_contrat.py
import json, re, sys, requests, pdfplumber

SYSTEM = open('system_prompt.txt', encoding='utf-8').read()
SCHEMA = {'type': 'array', 'items': {'type': 'object',
  'properties': {'point': {'type': 'string'}, 'citation': {'type': 'string'},
                 'pourquoi': {'type': 'string'}},
  'required': ['point', 'citation', 'pourquoi']}}

def lire_pdf(chemin):
    with pdfplumber.open(chemin) as pdf:
        return '\n'.join(p.extract_text() or '' for p in pdf.pages)

def norm(s):
    return re.sub(r'\s+', ' ', s).strip().lower()

def demander(question, contrat, modele='qwen3.5:9b'):
    r = requests.post('http://localhost:11434/api/chat', json={
      'model': modele, 'stream': False, 'format': SCHEMA,
      'messages': [{'role': 'system', 'content': SYSTEM},
                   {'role': 'user', 'content': 'CONTRAT :\n' + contrat + '\n\nQUESTION : ' + question}],
      'options': {'temperature': 0.1, 'num_ctx': 24576}})
    return json.loads(r.json()['message']['content'])

if __name__ == '__main__':
    texte = lire_pdf(sys.argv[1])
    if len(texte.strip()) < 500:
        sys.exit('PDF sans texte exploitable : passer par un OCR.')
    base = norm(texte)
    for p in demander('Liste les clauses à risque pour le signataire.', texte):
        ok = norm(p['citation']) in base
        print(('[OK]  ' if ok else '[CITATION INTROUVABLE]  ') + p['point'])
        print('      ' + p['citation'][:200])
→
Pourquoi une vérification mécanique
Le modèle peut réécrire légèrement une citation, changer un chiffre ou fusionner deux phrases. Le contrôle mot pour mot ne prouve pas que le point soulevé est pertinent, mais il élimine la catégorie d'erreur la plus dangereuse : une clause qui n'existe pas. Relisez toujours le passage dans le PDF avant d'en tirer une conséquence.

#Les questions qui font ressortir les risques

Posez des questions précises plutôt qu'une demande générale, une thématique à la fois. Chaque réponse doit citer le contrat ou déclarer le sujet non traité. Voici une liste de départ à adapter à votre pratique.

Non-concurrence
« Le contrat contient-il une clause de non-concurrence ? Cite-la avec sa durée, son périmètre géographique et sa contrepartie financière. »
Responsabilité
« Quelle est la limitation de responsabilité ? Est-elle réciproque ? Quels dommages sont exclus ? »
Résiliation
« Quelles sont les conditions de résiliation ? Le préavis est-il identique pour les deux parties ? »
Reconduction
« Existe-t-il une reconduction tacite ? Quel délai pour s'y opposer, et sous quelle forme ? »
Pénalités
« Liste les pénalités de retard, de rupture ou d'inexécution. Sont-elles réciproques ? »
Droit applicable
« Quelle loi s'applique ? Quelle juridiction est désignée ? »
Propriété intellectuelle
« Comment la propriété des livrables est-elle traitée : cession, licence, durée, territoire ? »
Données personnelles
« Le contrat prévoit-il un traitement de données personnelles ? Y a-t-il des clauses de sous-traitance ? »

#Comparer un contrat à votre modèle habituel

Si vous disposez d'un modèle validé, comme les conditions générales de votre cabinet ou de votre entreprise, la comparaison est plus utile qu'une lecture isolée : elle montre ce qui s'écarte de votre référence. Le modèle voit deux textes, ce qui double la place occupée dans le contexte : vérifiez que la fenêtre demandée à Ollama suffit, sinon comparez clause par clause.

Prompt de comparaison
Compare le CONTRAT proposé au MODÈLE de référence.
Liste les écarts en trois catégories :
1. Plus favorables au signataire que le modèle
2. Moins favorables au signataire que le modèle
3. Clauses présentes dans le modèle et absentes du contrat

Pour chaque écart, recopie mot pour mot les deux passages.

MODÈLE :
<<<
[texte du modèle]
>>>

CONTRAT :
<<<
[texte du contrat]
>>>

#Éprouver l'outil sur vos propres contrats avant de vous y fier

Avant d'intégrer cet assistant à un flux de travail, mesurez ce qu'il rate. Prenez cinq contrats que vous avez déjà relus vous-même, dont un contenant volontairement une clause que vous connaissez bien, par exemple une reconduction tacite peu visible. Lancez la même liste de questions, puis comptez : les clauses réelles retrouvées, les points inutiles signalés, les citations introuvables.

  1. 01
    Choisir cinq contrats connus
    Variez les types : prestation de services, fourniture, bail commercial, contrat de travail atypique. Un seul type de document ne dit rien de la robustesse générale.
  2. 02
    Noter votre propre relevé
    Avant de lancer l'outil, listez pour chaque contrat les clauses que vous attendez. Ce relevé est votre vérité de référence.
  3. 03
    Comparer le rappel et le bruit
    Comptez les clauses attendues que l'outil a retrouvées, et le nombre de points signalés à tort. Un outil qui rate une clause sur trois est un aide-mémoire, pas un filtre.
  4. 04
    Chronométrer la relecture
    Mesurez le temps pour relire les points signalés et leurs citations. Si cette relecture dure presque autant que la lecture complète, le gain est faible.
  5. 05
    Décider de l'usage
    Réservez l'outil aux tâches où il aide vraiment : premier tri, comparaison à un modèle, repérage de clauses précises. Écartez-le pour les contrats à fort enjeu, lus intégralement de toute façon.

#Limites et garde-fous

Pas un avocat
Le modèle ne connaît pas la jurisprudence récente ni les subtilités de rédaction qui changent le sens d'une clause. Il fait un premier tri ; la décision reste celle du juriste.
Invention de clauses
Un petit modèle peut décrire une clause absente du contrat. La citation obligatoire et la vérification par script réduisent ce risque sans le supprimer.
Contrat long
Au-delà de ce que le contexte accepte, découpez par sections et interrogez chaque partie, ou passez à une recherche documentaire. Le guide sur les stratégies de découpage détaille les options.
Scans
Un PDF image exige un OCR. Le texte issu d'un OCR contient des erreurs qui rendent la vérification des citations incertaine.
Journalisation
Ne conservez pas les contrats ni les réponses dans des fichiers non protégés : la sécurité du poste et le chiffrement du disque restent nécessaires. La checklist de confidentialité liste les points à contrôler.
FAQ
Peut-on analyser un contrat avec une IA sans envoyer le document sur internet ?+
Oui : Ollama sert un modèle sur votre machine, un lecteur de PDF extrait le texte et un script interroge le modèle. Rien ne quitte le poste. Le local règle la confidentialité, pas l'exactitude : gardez la règle de citer le passage et vérifiez chaque point dans le contrat avant de conclure.
Comment faire un chat sur PDF en interne sans sortir les contrats du système d'information ?+
Installez Open WebUI ou AnythingLLM sur un serveur interne, connectés à Ollama, puis chargez les PDF. La recherche documentaire retrouve les passages utiles, et le modèle répond en les citant. Sécurisez l'accès par authentification et limitez le réseau : les documents restent sur votre infrastructure.
Quel modèle local pour lire des contrats en français ?+
Deux candidats raisonnables : Qwen 3.5 9B (6,6 Go, 256 000 tokens annoncés) pour une carte de 8 à 12 Go, et Mistral Small 24B (14 Go, 32 000 tokens annoncés) à partir de 16 Go. Comparez-les sur trois de vos contrats plutôt que sur un classement général.
Un contrat de 30 pages tient-il dans le contexte du modèle ?+
Souvent oui pour un contrat de 20 à 30 pages, à condition de relever la fenêtre d'Ollama, fixée par défaut à 4 000 tokens pour moins de 24 Go de mémoire vidéo. Mesurez le nombre de tokens réel de votre document. Au-delà de ce que la mémoire accepte, découpez par sections.
Le modèle peut-il inventer une clause qui n'existe pas ?+
Oui, surtout les petits modèles. La parade consiste à exiger la citation mot pour mot, puis à vérifier par script qu'elle figure dans le texte du contrat. Une citation introuvable signale une invention. Relisez toujours le passage dans le PDF avant d'en tirer une conséquence.
L'analyse par IA remplace-t-elle la relecture d'un avocat ?+
Non. Elle sert de premier tri pour repérer des points à examiner, avec leurs passages. Elle ne connaît pas la jurisprudence récente ni le contexte de la négociation. Un professionnel du droit reste responsable de l'analyse, en particulier pour les enjeux importants ou les clauses inhabituelles.
Ce guide vous a aidé ?

Un retour, une erreur, une précision ? Faites-nous signe, ça améliore le guide pour tout le monde.