Étape 1 — Identification
Un mot en réponse, parmi six. Cet appel n'existe que pour rendre l'appel suivant étroit, et l'étroitesse est ce qui rend l'extraction juste (C8).
Prompt d'identification
Texte du code
Doit continuer de proposer les termes exacts (engagement, exigences, diplome, formation, equipement, assurance, identification, autre) : ce ne sont pas des libellés mais un contrat de code — le schéma des champs et la lecture de la réponse en dépendent. Réponse attendue : un mot, rien d'autre.
Indication tirée du nom de fichier
Texte du code
Ajoutée au prompt d'identification quand le fichier déposé porte un nom parlant. Doit contenir [[nom_du_fichier]], remplacé par le nom du fichier. Le nom est un indice, jamais un verdict : ce fragment doit continuer de le dire, sans quoi un fichier mal nommé imposerait son type à la page (T4.1).
Laissé vide : Le nom du fichier n'est pas transmis au modèle..
Enveloppe JSON de l'identification
Texte du code
Ajoutée au prompt d'identification uniquement lorsque le fournisseur sait contraindre sa réponse par un schéma. Le prompt ci-dessus demande un mot nu ; une grammaire, elle, impose un objet. Ce fragment est ce qui réconcilie les deux, et il n'est envoyé qu'au modèle qui reçoit aussi la grammaire. La lecture de la réponse accepte les deux formes, donc le vider ne casse rien.
Laissé vide : Le bras contraint envoie le prompt d'identification tel quel..
Étape 2 — Localisation de la zone utile
Sur une page d'engagement, 70 % de la surface est du texte pré-imprimé. Cet appel choisit parmi des bandes numérotées ce qui sera relu finement. Une intention laissée vide veut dire « lire la page entière » pour ce type de document.
Question de localisation
Texte du code
Gabarit de la question posée sur une page découpée en bandes. Doit contenir [[nombre_de_bandes]] (remplacé par le nombre de bandes trouvées) et [[zone_utile]] (remplacé par l'intention du type de document, ci-dessous). Ne jamais y demander de coordonnées : un petit modèle choisit bien dans une liste et régresse mal des nombres.
Zone utile — Engagement sur l'honneur
Texte du code
Ce qu'il faut repérer sur une page de ce type, inséré dans la question de localisation. Une attestation d'assurance porte ses réponses du haut en bas de la page : la recadrer perdrait la moitié du texte de garantie.
Laissé vide : page entière, aucun recadrage pour ce type.
Zone utile — Exigences
Texte du code
Ce qu'il faut repérer sur une page de ce type, inséré dans la question de localisation. Une attestation d'assurance porte ses réponses du haut en bas de la page : la recadrer perdrait la moitié du texte de garantie.
Laissé vide : page entière, aucun recadrage pour ce type.
Zone utile — Diplôme
Texte du code
Ce qu'il faut repérer sur une page de ce type, inséré dans la question de localisation. Une attestation d'assurance porte ses réponses du haut en bas de la page : la recadrer perdrait la moitié du texte de garantie.
Laissé vide : page entière, aucun recadrage pour ce type.
Zone utile — Moyens matériels
Texte du code
Ce qu'il faut repérer sur une page de ce type, inséré dans la question de localisation. Une attestation d'assurance porte ses réponses du haut en bas de la page : la recadrer perdrait la moitié du texte de garantie.
Laissé vide : page entière, aucun recadrage pour ce type.
Zone utile — Assurance
Texte du code
Ce qu'il faut repérer sur une page de ce type, inséré dans la question de localisation. Une attestation d'assurance porte ses réponses du haut en bas de la page : la recadrer perdrait la moitié du texte de garantie.
Laissé vide : page entière, aucun recadrage pour ce type.
Zone utile — Fiche d'identification
Texte du code
Ce qu'il faut repérer sur une page de ce type, inséré dans la question de localisation. Une attestation d'assurance porte ses réponses du haut en bas de la page : la recadrer perdrait la moitié du texte de garantie.
Laissé vide : page entière, aucun recadrage pour ce type.
Zone utile — Autre document
Texte du code
Ce qu'il faut repérer sur une page de ce type, inséré dans la question de localisation. Une attestation d'assurance porte ses réponses du haut en bas de la page : la recadrer perdrait la moitié du texte de garantie.
Laissé vide : page entière, aucun recadrage pour ce type.
Étape 3 — Extraction
Le prompt coûteux. Il ne nomme que les champs du type identifié : élargir cette liste a été mesuré plus lent ET plus faux.
Orientation — Engagement sur l'honneur
Texte du code
La première ligne du prompt d'extraction : ce que le modèle regarde, et où regarder de près.
Champs demandés — Engagement sur l'honneur
Texte du code
Corps de l'objet d'exemple, en JSON : les noms de champs sont ceux du schéma, les chevrons décrivent ce qu'il faut y mettre. Ne nommer que les champs de ce type : énumérer ceux des autres a été mesuré à 536 s pour un résultat faux, contre 308 s et juste.
Laissé vide : aucun champ demandé, transcription seule.
Orientation — Exigences
Texte du code
La première ligne du prompt d'extraction : ce que le modèle regarde, et où regarder de près.
Champs demandés — Exigences
Texte du code
Corps de l'objet d'exemple, en JSON : les noms de champs sont ceux du schéma, les chevrons décrivent ce qu'il faut y mettre. Ne nommer que les champs de ce type : énumérer ceux des autres a été mesuré à 536 s pour un résultat faux, contre 308 s et juste.
Laissé vide : aucun champ demandé, transcription seule.
Orientation — Diplôme
Texte du code
La première ligne du prompt d'extraction : ce que le modèle regarde, et où regarder de près.
Champs demandés — Diplôme
Texte du code
Corps de l'objet d'exemple, en JSON : les noms de champs sont ceux du schéma, les chevrons décrivent ce qu'il faut y mettre. Ne nommer que les champs de ce type : énumérer ceux des autres a été mesuré à 536 s pour un résultat faux, contre 308 s et juste.
Laissé vide : aucun champ demandé, transcription seule.
Orientation — Moyens matériels
Texte du code
La première ligne du prompt d'extraction : ce que le modèle regarde, et où regarder de près.
Champs demandés — Moyens matériels
Texte du code
Corps de l'objet d'exemple, en JSON : les noms de champs sont ceux du schéma, les chevrons décrivent ce qu'il faut y mettre. Ne nommer que les champs de ce type : énumérer ceux des autres a été mesuré à 536 s pour un résultat faux, contre 308 s et juste.
Laissé vide : aucun champ demandé, transcription seule.
Orientation — Assurance
Texte du code
La première ligne du prompt d'extraction : ce que le modèle regarde, et où regarder de près.
Champs demandés — Assurance
Texte du code
Corps de l'objet d'exemple, en JSON : les noms de champs sont ceux du schéma, les chevrons décrivent ce qu'il faut y mettre. Ne nommer que les champs de ce type : énumérer ceux des autres a été mesuré à 536 s pour un résultat faux, contre 308 s et juste.
Laissé vide : aucun champ demandé, transcription seule.
Orientation — Fiche d'identification
Texte du code
La première ligne du prompt d'extraction : ce que le modèle regarde, et où regarder de près.
Champs demandés — Fiche d'identification
Texte du code
Corps de l'objet d'exemple, en JSON : les noms de champs sont ceux du schéma, les chevrons décrivent ce qu'il faut y mettre. Ne nommer que les champs de ce type : énumérer ceux des autres a été mesuré à 536 s pour un résultat faux, contre 308 s et juste.
Laissé vide : aucun champ demandé, transcription seule.
Orientation — Autre document
Texte du code
La première ligne du prompt d'extraction : ce que le modèle regarde, et où regarder de près.
Champs demandés — Autre document
Texte du code
Corps de l'objet d'exemple, en JSON : les noms de champs sont ceux du schéma, les chevrons décrivent ce qu'il faut y mettre. Ne nommer que les champs de ce type : énumérer ceux des autres a été mesuré à 536 s pour un résultat faux, contre 308 s et juste.
Laissé vide : aucun champ demandé, transcription seule.
Textes communs à l'extraction
Assemblés autour des champs de chaque type, à chaque appel d'extraction.
Annonce de la forme attendue
Texte du code
Introduit l'objet JSON d'exemple.
Ligne de transcription
Texte du code
Demandée seulement si « Transcrire la page en Markdown » est actif, ce qui n'est plus le cas par défaut : elle coûte ~80 s par page et concurrence les champs pour l'attention du modèle (C9), pour le budget de sortie (C19) et pour survivre à une troncature (C21). Elle est demandée en dernier, justement parce qu'elle est ce qu'une réponse tronquée peut le mieux se permettre de perdre.
Règles impératives
Texte du code
La politique du nul, qui est le cœur de la justesse du dispositif : sur un document de conformité, une valeur inventée coûte plus cher qu'un champ manquant, parce qu'elle ne se signale pas au relecteur.
Règles de confiance
Texte du code
Ajouté aux règles impératives dès qu'une note de confiance est demandée. Doit continuer de parler de la lisibilité de l'encre et non de la véracité du fait : la note sert à diriger l'œil du relecteur vers les deux champs à revoir, pas à filtrer ni à corriger une valeur (R14.8). Les trois niveaux eux-mêmes — haute, moyenne, basse — ne sont pas éditables : `parsing.py` ne reconnaît que ces mots.
Clôture
Texte du code
Dernière ligne du prompt d'extraction ordinaire.
Mention de recadrage
Texte du code
Ajoutée à l'orientation quand l'image envoyée est une zone et non la page. Énoncée comme un fait, sans suggérer que les réponses y sont nécessairement : un mauvais recadrage doit produire des nulls, pas une supposition confiante.
Reprise stricte — consigne
Texte du code
Utilisée à la seconde tentative, quand la première réponse n'a pas pu être lue comme du JSON (R5.4).
Reprise stricte — rappel final
Texte du code
Dernière ligne de la reprise stricte.