Adra · Label reading
Point the camera at a nutrition label.
Adra reads the table on the package and turns it into structured macros. On your phone, with no typing and no cloud.
Example
A Swiss fish pack, printed in four languages at once. Here is what the reader takes from the photo.
Label photo from the Open Food Facts nutrient-detection-layout benchmark set (CC BY-SA 3.0).
| Energy | Protein | Carbs | Fat | Basis | Serving |
|---|---|---|---|---|---|
| 158 kcal | 23 g | 0 g | 7.2 g | per 100 g | 50 g |
The kJ and kcal pair is read as one value. The 8400 kJ adult reference column is ignored.
Pairs, columns, reference values, and two bases at once. Energy, protein, carbs, and fat all come out of it. Everything is understood before you confirm anything.
Tested on up to 300 labels
The reader goes through a benchmark of up to 300 real label photos. The core set is the Open Food Facts nutrition-table test split, plus US-format labels and close-up photos of packaged food. Every field is scored against the values printed on the label.
-
Spanish. Energy: 425 kJ and 101 kcal, read as 101. -
French. 235 kcal, with all four macros correct on the device. -
Rotated 90 degrees. Read anyway: 256 kcal.
All label photos from the Open Food Facts nutrient-detection-layout benchmark set (CC BY-SA 3.0).
| Photo | Energy (kcal) | Protein (g) | Carbs (g) | Fat (g) |
|---|---|---|---|---|
| Swiss fish pack, four languages | 158 | 23 | 0 | 7.2 |
| Spanish fish fillets | 101 | missed* | 0 | 1.16 |
| French rillettes | 235 | 17 | 1.3 | 18 |
| Gratin, rotated 90 degrees | 256 | 4.4 | 41 | 6.2 |
* The protein line on the Spanish label is the one macro value missed across these four photos.
Labels vary and yours may surprise it. The reader always shows its numbers before anything is saved, so you can catch what it missed.
What it reads
- Energy in kcal, fat and saturated fat, carbs and sugars, protein, fiber, and sodium.
- Per 100 g, per serving, or both, when the pack prints both.
- The values land in your meal as that ingredient's nutrition. Set the portion and the macros follow.
- German labels work too, words like Brennwert and Kohlenhydrate included. More than a dozen languages in total.
Many languages, many layouts
Labels are not standardized across countries. Adra reads the patterns that repeat everywhere. Field names are matched in more than a dozen languages.
Brennwert · Energie · Energy → calories Fett · matières grasses → fat Kohlenhydrate · glucides → carbs Eiweiß · protéines · Protein → protein
German, English, French, Spanish, Italian, Portuguese, Dutch, Polish, and other Latin-script labels read directly. Numbers are numbers in every language. Other script families are a planned expansion.
Layouts that show up in the wild, all handled:
- Per 100 g tables, per serving tables, and packs that print both bases.
- US-style Nutrition Facts panels with a percent-daily-value column.
- Rotated and tilted photos, including full 90-degree turns.
- Reference columns like 8400 kJ and 2000 kcal, recognized and left out.
- Bilingual packaging, where one field appears twice or three times.
- Photos with a barcode in frame. The text is still read.
How one label works
-
Take a photo.
Camera or gallery. Straight or tilted, both are fine.
-
Adra finds the text.
On-device text recognition detects the words and their positions on the package.
-
It rebuilds the table.
The words become rows and columns, the way a person would read them.
-
You confirm.
The values are shown for review, then they land in your meal.
What makes it good
-
Rotation handled.
Tilted and rotated photos are straightened before reading. Vertical text does not scare it.
-
The fine print knows its place.
The 8400 kJ reference column that packages print is recognized and excluded automatically.
-
Both number styles.
Energy pairs like 660 kJ (158 kcal) are understood in one step, whether they share a cell or sit side by side.
-
Two bases at once.
Packs that print per 100 g and per pack are read as both, with the serving grams taken from the pack itself.
Honest limits
- A blurry or badly angled photo can lose a field. Crowded multi-column labels are the hardest case.
- Energy is stored in kcal.
- It reads what is printed. It does not guess.
Label logging is part of the free version, like everything except history beyond today. Compare with the pricing model.
FAQ
Does the label reader need the internet?
No. Detection and reading run on the phone. The models ship inside the app.
Which languages does the label reader understand?
Label field names are recognized in more than a dozen languages, including German, English, French, Spanish, Italian, Portuguese, and Dutch. Latin-script labels read directly.
How accurate is the label reader?
The reader is benchmarked against up to 300 real label photos. Across the four examples on this page, energy was right every time and the full macro set came back for three of four. On the device circuit, calories were right on 3 of 3 labels, and one full label logged with all four macros correct. Hard photos and dense layouts can still trip a field, so values are always shown for confirmation first.