# Recette documentaire : quatre champs avant le pilote

Version du 9 octobre 2026. Méthode proposée par Nymphar.ai, sans benchmark
Google. Les deux JSON fournis sont entièrement fictifs et créés à la main.
Le script ne contacte aucun service et ne consomme aucun crédit cloud.

## Fichiers

- `verifier_extraction.py` : Python 3.9+, bibliothèque standard.
- `attendu.json` : vérité terrain fictive, à remplacer par une annotation relue.
- `reponse-exemple.json` : réponse fictive imitant quatre entités plates du
  champ `document` d'une réponse ProcessResponse, pas une sortie du modèle.

Placez les trois fichiers dans le même dossier puis exécutez :

```bash
python3 verifier_extraction.py attendu.json reponse-exemple.json
```

Le résultat attendu est `conforme_au_referentiel: true`. Modifiez ensuite le
montant en `1 520,00` dans la réponse : le script doit signaler
`valeur_differente` et sortir avec le code 1. Il ne corrige jamais une valeur.

## Schéma à essayer dans Custom Extractor

Quatre champs plats, type texte, occurrence unique, méthode Extract :

| Champ | Description proposée |
| --- | --- |
| document_number | Invoice number printed on this document. Preserve prefixes and leading zeros. |
| invoice_date | Issue date printed on this invoice, not the due date. Preserve the source wording. |
| total_ht | Invoice total excluding tax, not tax amount or total including tax. Preserve the source wording. |
| currency | Currency explicitly printed for the invoice total. Do not infer it from the supplier country. |

Chaque champ du référentiel contient le texte visible à restituer. Utilisez
`null` si l'information est absente du document. Une entité renvoyée pour ce
champ constitue alors un écart. Une chaîne vide n'est pas une absence.
Les champs répétés ou inattendus bloquent également le résultat.

Comparaison : Unicode NFC et retrait des espaces aux extrémités uniquement.
Les espaces internes, séparateurs, zéros initiaux et formulations de dates
restent significatifs. `normalizedValue` et les scores de confiance ne sont
pas utilisés. Pour évaluer la normalisation, créez un test séparé avec un
contrat explicite ; ne relâchez pas silencieusement cette recette.

## Premier essai réel, séparé de la démonstration locale

1. Choisissez un PDF de test autorisé, court, sans données sensibles réelles.
   Préparez aussi une version anglaise équivalente comme contrôle.
2. Dans Document AI, créez un Custom Extractor dédié, choisissez la région et
   vérifiez l'accès à la version voulue. Ne changez pas le défaut en production.
3. Créez le schéma ci-dessus. Consignez version, région, schéma, date, pages,
   mode de traitement et coût. La preview annoncée le 21 septembre est
   `pretrained-foundation-model-v3.1-lite-2026-07-15`.
4. Annotez les quatre champs avant de regarder la réponse. Sauvegardez le
   ProcessResponse JSON dans `reponse.json` et la vérité terrain dans
   `attendu.json`. Lancez le script sur ces deux fichiers.
5. Comparez chaque écart au PDF. Un passage réussi ne prouve ni support
   officiel du français, ni qualité sur d'autres mises en page.

La fiche Google indique que seul l'anglais est officiellement pris en charge
pour l'extraction générative. Un essai français est donc exploratoire, hors
de ce support déclaré. La région européenne ne change pas ce périmètre.

## Fiche d'expérience à compléter

- Version, statut, région, schéma et date de consultation des docs :
- Documents annotés pour ajuster le schéma / lot tenu à l'écart :
- Résultats séparés par langue, fournisseur, mise en page et qualité du scan :
- Nombre de champs attendus présents, absents, corrects, manquants, inventés :
- Documents entièrement corrects / documents examinés :
- Temps de traitement, erreurs API, reprises et temps humain de correction :
- Pages facturées, stockage et hébergement applicables, coût total :
- Coût par document accepté et règle de passage en revue humaine :
- Motif de poursuite ou d'arrêt du pilote, responsable et date :

Un référentiel est disponible en recette, pas sur chaque nouveau document en
production. Ce script ne peut donc pas autoriser automatiquement l'écriture
dans un ERP. Il ne vérifie pas la réalité d'un fournisseur, l'authenticité d'une
facture, les lignes de détail ou les règles fiscales.

## Sources Google

- https://docs.cloud.google.com/document-ai/docs/release-notes
- https://docs.cloud.google.com/document-ai/docs/ce-with-genai
- https://docs.cloud.google.com/document-ai/docs/processors-list
- https://docs.cloud.google.com/document-ai/docs/send-request
- https://cloud.google.com/products/document-ai/pricing
