D'où viennent les données de Vnutri : 8 bases, un catalogue
Huit bases de composition alimentaire sous licence ouverte, comment nous les fusionnons en un catalogue unique de 845+ aliments avec 38 nutriments chacun, et les choix méthodologiques derrière.

« Combien de calories dans une pomme ? » — une question simple à la réponse pas si simple. Cela dépend de la variété, du degré de maturité, de l'origine et de qui a mesuré. Les chiffres des étiquettes, des manuels et des apps peuvent varier de 1,5 à 2×. Cet article explique comment Vnutri tente de combler cet écart.
Le catalogue Vnutri contient 845+ aliments du quotidien et 340 plats, avec 38 nutriments chacun. Dessous : 8 bases de composition alimentaire curées, sous licence ouverte, fusionnées en un ensemble unique. Voici les bases, pourquoi nous les avons choisies et comment nous les combinons.
Qu'est-ce qu'une base de composition alimentaire ?
Une base de composition alimentaire, ce sont des données de nutriments mesurés en laboratoire pour des aliments. Chaque enregistrement est un produit précis (par exemple, « Apple, raw, with skin, including foods for USDA's Food Distribution Program ») avec des dizaines à des centaines de colonnes de nutriments pour 100 g.
Elles sont construites par des institutions nationales : USDA aux US, ANSES en France, FSANZ en Australie, etc. Les données proviennent d'analyses instrumentales (HPLC pour les vitamines, ICP-MS pour les minéraux, chromatographie en phase gazeuse pour les acides gras) sur des échantillonnages réguliers. C'est cher : un enregistrement coûte plusieurs milliers de dollars aux laboratoires.
C'est pour cela que la plupart sont publiques — elles ont été construites avec l'argent des contribuables, et les gouvernements obligent à l'ouvrir.
Les huit sources de Vnutri
| Source | Enregistrements | Licence | Région |
|---|---|---|---|
| USDA FoodData Central (Foundation + SR Legacy) | 7 928 | Domaine public | États-Unis |
| USDA FNDDS 2021–2023 (plats mixtes) | 5 431 | Domaine public | États-Unis |
| Canadian Nutrient File | 5 690 | OGL Canada | Canada |
| UK CoFID (McCance & Widdowson 2021) | 2 636 | OGL v3.0 | Royaume-Uni |
| ANSES Ciqual 2020 | 2 298 | Etalab | France |
| Matvaretabellen | 2 118 | NLOD | Norvège |
| AFCD (FSANZ Release 3) | 1 588 | CC BY 3.0 AU | Australie |
| Frida (DTU) | 1 381 | Open | Danemark |
| USDA Choline DB | ~25 | Domaine public | États-Unis |
Environ 29 000 enregistrements avant filtrage.
Pourquoi celles-ci
Trois critères.
- Licence ouverte. Domaine public, CC, OGL, NLOD. Pas de « usage personnel uniquement » — nous construisons un produit commercial. Cela exclut les bases fermées comme NEVO (Pays-Bas) et certaines bases universitaires.
- Mises à jour régulières. Bases étiquetées « Release 18 » et rafraîchies tous les 3 à 5 ans. Cela exclut les projets archivés ou ponctuels.
- Mesure en laboratoire, pas calcul par recette. Nous avons choisi des sources où la majorité des enregistrements viennent d'analyses instrumentales. USDA FNDDS n'est utilisé que pour les plats (ses valeurs sont calculées par recette, et c'est explicitement indiqué).
Ce qui n'est pas inclus, et pourquoi :
- Open Food Facts (OFF) — base contribuée par les utilisateurs, ODbL. Trop bruyante : marques, noms déformés, pas de validation. Nous utilisons OFF uniquement pour la localisation (dictionnaire multilingue de noms d'aliments), pas pour les valeurs nutritionnelles.
- Fineli (Finlande) — bonne base, CC BY 4.0, mais l'accès CLI est bloqué et nous n'avons pas encore fait l'export manuel.
- Livsmedelsverket (Suède) — CC0, dépôt manuel, en attente.
- NEVO (Pays-Bas) — licence fermée.
Quels nutriments
38 nutriments par aliment :
Énergie et macros (10) : calories, protéines, lipides, glucides, fibres, sucres, amidon, lipides saturés/mono/poly/trans, cholestérol.
Minéraux (10) : calcium, fer, magnésium, phosphore, potassium, sodium, zinc, cuivre, sélénium, manganèse, iode.
Vitamines (13) : A, rétinol, D, E, K, C, B1 (thiamine), B2 (riboflavine), B3 (niacine), B5 (pantothénate), B6, B9 (folate), B12.
Acides gras (3) : oméga-3, oméga-6, plus le détail des matières grasses.
Autres (3) : choline, lactose, index glycémique (quand disponible).
C'est plus que ce que publie une seule source : USDA SR Legacy ne liste pas l'iode, USDA FDC ne liste pas la choline, Ciqual ne liste pas le sélénium, etc. Chaque nutriment est tiré des bases qui le publient effectivement.
Comment nous fusionnons les sources
Une moyenne simple ne marche pas. Les bases échantillonnent des variétés, des méthodes et des régions différentes. La même « pomme » dans USDA et dans Ciqual est physiquement un produit différent.
Vnutri regroupe les enregistrements de toutes les sources en clusters (aliment × variété × état), puis prend la médiane pondérée par nutriment dans chaque cluster.
Concrètement :
- Normalisation des noms. Suppression des suffixes catégoriels (« raw, with skin, includes… »), application de synonymes (
yoghurt → yogurt,aubergine → eggplant), normalisation du formatage. - Clustering. Tokens triés + état (raw/cooked/dried) → clé de cluster. « Black beans, cooked » d'USDA et « Beans, black, cooked » de CoFID atterrissent dans le même cluster.
- Contrôle de cohérence. Test d'Atwater : calories prédites (protéines × 4 + lipides × 9 + glucides × 4) doivent correspondre à la valeur déclarée à ±25 % près. Hors gamme — rejeté, souvent erreur de saisie.
- Médiane pondérée. USDA Foundation, Ciqual, CoFID, CNF, Frida, AFCD — poids 3. USDA SR Legacy, Matvaretabellen — poids 2. Médiane plutôt que moyenne, pour qu'un outlier ne tire pas le résultat.
- Sources minimales. Un cluster doit avoir des données d'au moins 2 sources. Les anomalies à une seule source sont rejetées.
Résultat : un enregistrement par aliment avec les meilleures données disponibles par nutriment. Les sources sont indiquées sur la fiche détaillée.
Couverture des nutriments
Tous les nutriments ne sont pas mesurés avec le même soin. Couverture sur 845 aliments :
| Couverture | Nutriments |
|---|---|
| 100 % | Calories, protéines, lipides, glucides |
| 90–95 % | Fibres, calcium, fer, sodium, potassium, magnésium, phosphore, niacine, A, C, B1, B2, B6, zinc, cuivre, folate, B12 |
| 85–90 % | Sucres, cholestérol, lipides sat/mono/poly, manganèse, sélénium, D |
| 75–85 % | Pantothénate, E, oméga-3 |
| 60–75 % | Oméga-6, amidon, lipides trans, K |
| 50–60 % | Choline, iode |
L'iode et la choline restent à 50–60 % à cause des limites des sources : USDA SR Legacy ne reporte pas l'iode (la colonne existe mais n'est pas remplie), et la choline n'est présente que dans USDA et CNF.
Et les plats
Sur ~340 plats du catalogue, environ 150 viennent de USDA FNDDS 2021–2023 — base gouvernementale de plats avec valeurs calculées par recette. Le reste (~190) sont des plats régionaux sans équivalent FNDDS : borscht, pelmeni, bibimbap, dal, pho, jollof rice, etc. Leurs valeurs nutritionnelles sont estimées par Claude Opus à partir d'une recette typique et des ingrédients mesurés en laboratoire du catalogue principal.
Ces plats portent un badge « approximate » sur leur fiche — leur profil nutritionnel est une estimation LLM, pas une donnée de laboratoire. La précision y est nettement plus faible que pour les aliments à un seul ingrédient.
Localisation des noms
Les noms du catalogue sont traduits en 6 langues (en, es, ca, fr, de, ru). Le pipeline a trois couches, de la moins chère à la plus chère.
- Taxonomie OFF — vocabulaire multilingue curé, 4 212 entrées sur 100+ langues. Issue de la taxonomie des ingrédients Open Food Facts sur GitHub. Taux d'appariement ~70 %.
- Wikidata — API
wbsearchentitiespour les aliments rares ou régionaux. Sélecteur en niveaux avec filtresP31(instance d'aliment). - Google Cloud Translation v3 (Translation LLM) — passe finale. Retraduit tout pour corriger les fuites de noms scientifiques et appliquer l'accord en genre et en nombre.
Plus — comment nous nommons la nourriture dans 6 langues.
Et les états (cru vs cuit)
Le même aliment cru et cuit sont deux produits différents sur le plan nutritionnel. Le riz cuit contient plus d'eau et moins de protéines et de calories pour 100 g que le cru. Les épinards cuits ont une densité plus élevée pour de nombreux minéraux que les crus, parce que l'eau est partie.
Vnutri gère cela avec un modèle de variantes par état : chaque aliment a un state (raw, cooked, dried, baked, etc.) et un groupId commun à tous les états du même aliment. La liste montre un primaire (souvent raw) ; le détail propose un sélecteur d'états.
Plus — pourquoi « poulet cuit » et « poulet cru » sont deux aliments différents.
Index glycémique
L'IG est le seul nutriment de Vnutri qui ne provient pas des 8 bases alimentaires. Source : la méta-analyse Atkinson 2021 (Am J Clin Nutr), International Tables of Glycemic Index and Glycemic Load Values 2021. La compilation systématique d'IG la plus complète à ce jour.
Tous les aliments n'ont pas un IG mesuré — uniquement ceux contenant des glucides, et seulement si au moins une session de laboratoire est documentée dans la littérature. Environ 30 % du catalogue porte un IG. Voir l'index glycémique.
Ce que nous NE faisons PAS
- Pas d'achat de bases fermées. Licence ouverte uniquement.
- Pas de données contribuées par utilisateurs pour les nutriments. OFF uniquement pour les noms.
- Pas de confiance dans les données d'étiquette de production. Les calories déclarées sur l'emballage peuvent différer jusqu'à 20 % de la valeur de laboratoire (tolérance FDA). Les données de laboratoire sont plus précises.
- Pas de somme de nutriments par recette, sauf pour les « mixed dishes » de FNDDS.
Précision et limites
À quoi s'attendre.
Précision des données : pour les aliments à un seul ingrédient — valeurs mesurées en laboratoire. Pour les plats FNDDS — valeurs calculées par recette. Pour les plats régionaux — estimations LLM.
Variation régionale : une pomme aux US, en Norvège et en Australie sont physiquement des produits différents. Notre médiane lisse les effets régionaux. Si vous analysez la nourriture d'une région précise, une base locale peut être plus précise.
Variation variétale : Honeycrisp ≠ Granny Smith pour le sucre et l'acidité. Dans le catalogue, « pomme » est la médiane des variétés. Les variétés précises se cherchent à part.
Cuisson : « pomme de terre bouillie » dans le catalogue est moyennée sur les méthodes de cuisson. Rôtie ou frite — profil différent.
Vieillissement des données : USDA SR Legacy de 2018 ; CoFID 2021 ; Ciqual 2020. Les aliments très récents n'apparaissent pas vite.
Attribution
Toutes les sources sont citées sur la page Acknowledgments avec leurs licences. Chaque nutriment sur la fiche d'un aliment peut être retracé jusqu'à sa source.
Si vous voulez utiliser les données Vnutri dans votre projet, nous sommes ouverts à en parler. Contactez-nous : hello@vnutri.app.
Références
- US Department of Agriculture. FoodData Central. 2024.
- Health Canada. Canadian Nutrient File. 2023.
- Public Health England. McCance and Widdowson's The Composition of Foods Integrated Dataset 2021.
- ANSES. Ciqual French food composition table. 2020.
- Norwegian Food Safety Authority. Matvaretabellen. 2023.
- Food Standards Australia New Zealand. Australian Food Composition Database, Release 3. 2024.
- Technical University of Denmark. Frida Food Database. 2023.
- Atkinson FS, Brand-Miller JC, Foster-Powell K, et al. International tables of glycemic index and glycemic load values 2021. Am J Clin Nutr. 2021;114(5):1625–1632.