Des données plus riches et mieux structurées pour Open Food Facts

Des données plus riches et mieux structurées pour Open Food Facts

Lorsque nous avons pensé la structure de la base de données Open Food Facts en 2012, nous avons essayé de la rendre aussi simple et intelligente que possible afin que les utilisateurs puissent saisir rapidement les données relatives aux produits alimentaires. Par exemple, nous avons permis aux utilisateurs de saisir les valeurs nutritionnelles pour 100 g ou par portion, puis nous avons automatiquement calculé l’une à partir de l’autre en utilisant la taille de la portion. Nous convertissions également automatiquement le sel en sodium, l’énergie en kJ en énergie en kcal, etc.

Au début, cela fonctionnait très bien, mais au fil des ans, nous avons constaté que pour certaines utilisations, nous devions mieux refléter la complexité de certains produits alimentaires dans nos modèles :

  • Nous avons ajouté les valeurs nutritionnelles pour les produits préparés
  • Nous avons constaté que les règles d’arrondis sur les tableaux nutritionnels peuvent avoir un impact sur le calcul de certains scores comme le Nutri-Score
  • Nous avons commencé à estimer le pourcentage de chaque ingrédient afin de pouvoir estimer les nutriments qui ne figurent pas sur le tableau nutritionnel (comme la plupart des minéraux, vitamines et acides gras).
  • Nous disposons désormais de valeurs nutritionnelles provenant d’autres sources que les emballages, car des centaines de fabricants de produits alimentaires nous envoient directement les données relatives à leurs produits via notre plateforme professionnelle gratuite par exemple.

L’année dernière, grâce à une subvention du NGI0 Commons Fund de NLnet et de la Commission Européenne, nous nous sommes lancés dans une aventure avec nos réutilisateurs, contributeurs et bénévoles afin de repenser la manière dont nous stockons et traitons les valeurs nutritionnelles dans Open Food Facts.

Après de nombreuses séances de brainstorming, nous avons décidé d’adopter une nouvelle structure qui conserve la même approche simple et intelligente pour la plupart des cas d’utilisation, tout en conservant toute la richesse des données pour les cas d’utilisation qui en ont besoin :

Nous stockons désormais séparément les ensembles de valeurs nutritionnelles provenant de différentes sources :

  • données d’emballage
  • données des fabricants
  • données d’autres bases de données ouvertes comme l’USDA
  • données nutritionnelles estimées à partir des ingrédients
  • etc.

Nous calculons aussi un ensemble de valeurs nutritionnelles agrégées combinées à partir des différentes sources d’entrée, qui donne la préférence aux sources les plus fiables (données des fabricants et données d’emballage). Cet ensemble agrégé indique clairement quel nutriment provient de quelle source, afin que les réutilisateurs puissent décider s’ils souhaitent utiliser les données estimées ou non, par exemple.

Cette refonte a pris près d’un an, car les valeurs nutritionnelles sont au cœur de nombreux algorithmes des systèmes d’Open Food Facts. Nous avons aussi pris des mesures minutieuses pour garantir la rétrocompatibilité avec les centaines de réutilisateurs de notre API et de notre base de données, afin qu’ils puissent continuer à lire et à écrire des données nutritionnelles de manière transparente avec l’ancienne version de l’API et du schéma.

La nouvelle structure du schéma des valeurs nutritionnelles est détaillée dans notre documentation OpenAPI.

Ce projet a été financé par le NGI0 Commons Fund, un fonds créé par NLnet avec le soutien financier du programme Next Generation Internet de la Commission européenne, sous l’égide de la DG Communications Networks, Content and Technology, dans le cadre de la convention de subvention n° 101135429. Un financement supplémentaire est fourni par le Secrétariat d’État suisse à la formation, à la recherche et à l’innovation (SERI).