Schéma JSON : extraire une facture
JSON Schema pour extraire une facture avec un LLM : fournisseur, numéro, date, lignes, totaux HT, TVA et TTC. Prêt pour les sorties structurées.
Extrais les informations de la facture fournie. Les montants sont des nombres en euros, sans symbole. Si une information manque, ne l'invente pas.
JSON Schema
{
"type": "object",
"required": [
"fournisseur",
"date",
"total_ttc"
],
"properties": {
"tva": {
"type": "number"
},
"date": {
"type": "string",
"format": "date",
"description": "Date d'émission (AAAA-MM-JJ)"
},
"lignes": {
"type": "array",
"items": {
"type": "object",
"required": [
"libelle",
"montant_ht"
],
"properties": {
"libelle": {
"type": "string"
},
"quantite": {
"type": "number"
},
"montant_ht": {
"type": "number"
}
}
}
},
"numero": {
"type": "string",
"description": "Numéro de la facture"
},
"total_ht": {
"type": "number"
},
"total_ttc": {
"type": "number"
},
"fournisseur": {
"type": "string",
"description": "Raison sociale du fournisseur"
}
}
}Output example
{
"fournisseur": "Imprimerie Martin SARL",
"numero": "F-2026-0412",
"date": "2026-09-15",
"lignes": [
{
"libelle": "Cartes de visite x500",
"quantite": 1,
"montant_ht": 80.0
},
{
"libelle": "Flyers A5 x1000",
"quantite": 1,
"montant_ht": 120.0
}
],
"total_ht": 200.0,
"tva": 40.0,
"total_ttc": 240.0
}Estimated cost
Input tokens per call : ≈ 539
| Model | Per call | Per 1,000 calls |
|---|---|---|
| Mistral Large · Mistral AI | €0.00024 | €0.24 |
| DeepSeek Flash · DeepSeek | €0.00014 | €0.14 |
| DeepSeek V4 Pro · DeepSeek | €0.00063 | €0.63 |
| GPT-6 Luna · OpenAI | €0.00005 | €0.05 |
| GPT-6 Sol · OpenAI | €0.00095 | €0.95 |
| Claude Sonnet 5.5 · Anthropic | €0.00095 | €0.95 |
| Claude Opus 5.5 · Anthropic | €0.00190 | €1.90 |
| Self-hosted open-source model (Ollama, vLLM) | €0 in API fees (server cost only) | |
Input cost only, excluding the model's answer. Providers' public standard prices (Mistral AI, DeepSeek, OpenAI, Anthropic) converted from USD to euros at the ECB rate of September 29, 2026. Estimate: 1 token ≈ 3.6 characters.
Common to all 3 regions
Created by the author, no outside source.
Commercial use allowed · credit the author · changes allowed.
Text or data only: no access to files, network or commands.
Hosted in France (Scaleway, Paris). No transfer outside the EU.
European Union · 5/5
No personal data.
No training data: no summary required.
United States · 5/5
No personal data.
No training data: no documentation to publish.
China · 5/5
No personal data.
No training data; AI-generated content published in China must be labelled (2025).
Indicative summary as of 30/09/2026, not a legal certification. Method and sources →
Statistics
Likes : 0 · Comments : 0
Click a counter to show or hide it, hover the chart for details. One view per visitor per day, bots excluded; counting started on 30 September 2026.
- Identifier
- contextetech--extraire-une-facture
- Type
- Output schemas
- File
- extraire-une-facture.schema.json
- Format
- JSON (application/json)
- Size
- 977 bytes
- Encoding
- UTF-8
- Estimated tokens
- ≈ 271
- Language
- French
- License
- MIT
- Commercial use
- Allowed
- Personal data
- None
- Version
- 1.0
- Published on
- October 1, 2026 at 6:46 PM
- Updated on
- October 1, 2026 at 6:46 PM
- Storage
- in database
- Uses
- 0
- Likes
- 0
extraire-une-facture.schema.json
{
"type": "object",
"required": [
"fournisseur",
"date",
"total_ttc"
],
"properties": {
"tva": {
"type": "number"
},
"date": {
"type": "string",
"format": "date",
"description": "Date d'émission (AAAA-MM-JJ)"
},
"lignes": {
"type": "array",
"items": {
"type": "object",
"required": [
"libelle",
"montant_ht"
],
"properties": {
"libelle": {
"type": "string"
},
"quantite": {
"type": "number"
},
"montant_ht": {
"type": "number"
}
}
}
},
"numero": {
"type": "string",
"description": "Numéro de la facture"
},
"total_ht": {
"type": "number"
},
"total_ttc": {
"type": "number"
},
"fournisseur": {
"type": "string",
"description": "Raison sociale du fournisseur"
}
}
}Anthropic API (Python)
import json, anthropic
schema = json.load(open("extraire-une-facture.schema.json"))
client = anthropic.Anthropic()
resp = client.messages.create(model="claude-sonnet-5", max_tokens=1024,
tools=[{"name": "extraire", "description": "Renvoie les données extraites", "input_schema": schema}],
tool_choice={"type": "tool", "name": "extraire"},
messages=[{"role": "user", "content": "your input here"}])
print(resp.content[0].input)OpenAI format (response_format)
{
"type": "json_schema",
"json_schema": {
"name": "extraire-une-facture",
"schema": {
"type": "object",
"required": [
"fournisseur",
"date",
"total_ttc"
],
"properties": {
"tva": {
"type": "number"
},
"date": {
"type": "string",
"format": "date",
"description": "Date d'émission (AAAA-MM-JJ)"
},
"lignes": {
"type": "array",
"items": {
"type": "object",
"required": [
"libelle",
"montant_ht"
],
"properties": {
"libelle": {
"type": "string"
},
"quantite": {
"type": "number"
},
"montant_ht": {
"type": "number"
}
}
}
},
"numero": {
"type": "string",
"description": "Numéro de la facture"
},
"total_ht": {
"type": "number"
},
"total_ttc": {
"type": "number"
},
"fournisseur": {
"type": "string",
"description": "Raison sociale du fournisseur"
}
}
},
"strict": true
}
}
Community
No comments yet. Share your feedback, it will help the next person.