openfoodfacts / openfoodfacts-server

Open Food Facts database, API server and web interface - 🐪🦋 Perl, CSS and JS coders welcome 😊 For helping in Python, see Robotoff or taxonomy-editor
http://openfoodfacts.github.io/openfoodfacts-server/
GNU Affero General Public License v3.0
655 stars 384 forks source link

"Sugars in unknown quantity" in food preferences despite sucrose quantity #6850

Open aleksejrs opened 2 years ago

aleksejrs commented 2 years ago

Describe the bug

"Sugars in unknown quantity" in food preferences, though sucrose quantity is high, so sugars quantity would be high.

To Reproduce

  1. Go to a product with a high sucrose quantity, but no explicit sugar quantity.
  2. Enable sugar in food preferences (click the "Edit food preferences" button).
  3. See "Sugars in unknown quantity"

Expected behavior

Since Sucrose is 45.5 g, it is obvious that Sugar is at least as much.

Type of device

Browser

Browser version

Firefox 100.x

stephanegigandet commented 2 years ago

Hi @aleksejrs , is it common to have products with sucrose listed, but not sugars?

If it is, we could try to create some special logic for that kind of cases.

aleksejrs commented 2 years ago

@stephanegigandet, most condensed milks, probably. I don't know how to check.

github-actions[bot] commented 2 years ago

This issue is stale because it has been open 90 days with no activity.

CharlesNepote commented 1 year ago

I have built a simple query to list this kind of products: there are 99 products as of 2023-02-15.

benbenben2 commented 1 year ago

99 products:
a) 80 products where sugars_100g is null

b) 10 products where sugars_100g is 0.0 c) 9 products where sugars_100g is some value


a) Among the products where sugars_100g is null:

A large number of Russian speaking countries. 2 hypothesis:

Remark: Sugar = sucrose + <0.25% impurities (Russian wikipedia page for sugar)

For other countries, we can find some or all among fructose, glucose, sucrose, maltose, lactose instead of sugar

Reminder: On nutritional labelling, the information including sugars, located under the line Carbohydrates that it completes, designates all "ose" carbohydrates with a sweetening power, essentially fructose, sucrose, glucose, maltose and lactose. (French wikipedia page for sugar)

b) Among the products where sugars_100g is 0.0

c) Among the products where sugars_100g is some value:

Conclusion: if we create a facet for sucrose > sugar we should not get any false positive. I would suggest to make it an error

Remark: we could include all fructose, glucose, maltose, lactose > sugar as well. Some more nutrients that belongs to sugar? mirabelle_query

So, I will start to develop a quality facet (error) for any of fructose, glucose, maltose, lactose, sucrose > sugar.

stephanegigandet commented 1 year ago

So, I will start to develop a quality facet (error) for any of fructose, glucose, maltose, lactose, sucrose > sugar.

Perfect, thank you @benbenben2 ! And thanks a lot for the detailed analysis.

benbenben2 commented 1 year ago

@stephanegigandet , meanwhile I realized that this does not reply to the question from @aleksejrs, that I could reformulate as: when sugar value is not given, but any of fructose, glucose, maltose, lactose, sucrose is, should we use the sum of fructose, glucose, maltose, lactose, sucrose?

Can we somehow use this summed value to replace sugar to calculate the nutrition score?

Can we somehow use this summed value in food preferences ?

stephanegigandet commented 1 year ago

@benbenben2 A long term solution would be to have a separate nutrition table that could be estimated or derived from the stated nutrition table and/or nutrients etc. and then use that estimated nutrition table for Nutri-Score, the food preferences etc. There we could have rules to estimate that sugars = sucrose + the other sugars. That could be used for instance for raw fruits etc. for which we don't have a nutrition table: we could use some nutrition facts databases for raw foods for instance. (e.g. see #7225

We should probably do something like this as part of a larger refactor of how we structure nutrition data, the current way with everything under nutriments and lots of suffixes doesn't scale very well.

In the mean time, we could introduce some special cases in the Nutri-Score / food preferences computations, in order to take sucrose into account when we don't have sugars. It introduces complexity and technical debt though, so I wouldn't do it if it's only for 100 products. On the other hand, if the vast majority of Russian products that are sold today have nutrition facts on their labels without sugars but with sucrose, it would make sense to introduce those special cases I think.