Benchmark

How accurate is BotanAI, really

Every plant identification app advertises an accuracy figure. Almost none of them publish a method, a dataset, or a list of the plants they get wrong. Here is ours, in full.

Images 38,299 Species 2,040 Updated 2026-07-13 Licence CC BY 4.0

The short answer: our on-device model gets the species exactly right 56.5% of the time. That number is worse than the ones our competitors advertise, and we are publishing it anyway, because the alternative is to quote a figure nobody can check.

The longer answer is more interesting, and it is the reason the app is still useful. The model does not have to answer. It only commits when it is confident, and we measured what happens when it does.

The numbersn = 38,299

Top-1 accuracy
56.5%
exact species, every image
It answers
32.6%
of the time, at 70.0% confidence
And is right
90.3%
when it does answer

That third number is the one a user actually experiences. The model declines most of the time, and hands the photograph to Pl@ntNet and Plant.id instead. When it does commit on its own, it is right 90.3% of the time.

A model that answered everything at 56.5% would be worse than useless, because you could not tell the good answers from the bad ones. Knowing when to shut up is most of the value.

Methodreproduce it

Model aiy_plants_V1 (TFLite, 2,102 classes, uint8)
Preprocessing centre-crop, bilinear 224, uint8 RGB, TTA over horizontal mirror
Ground truth iNaturalist research-grade community ID
Images 38,299 across 2,040 species, licensed CC0, CC-BY, CC-BY-SA
Threshold 70.0%. Below it, the app defers to Pl@ntNet and Plant.id.

The evaluation images are openly licensed and their photographers are credited on the species pages that use them. The full result set is downloadable below. The preprocessing replicates the app exactly, including the test-time mirror averaging, because a benchmark of a model we do not ship would tell you nothing.

What it confuses 1,741 pairs

These are not guesses about what people might mix up. Each row is a pair of species that this model genuinely mistook for one another, and how often.

Actually Called it Rate
Solanum americanum Solanum nigrum 16/20
Toxicodendron rydbergii Toxicodendron radicans 16/17
Dichelostemma congestum Dichelostemma capitatum 16/19
Nymphaea alba Nymphaea odorata 14/20
Pinus monticola Pinus strobus 13/20
Solidago altissima Solidago canadensis 13/19
Typha angustifolia Typha latifolia 12/20
Opuntia engelmannii Opuntia littoralis 12/19
Opuntia phaeacantha Opuntia littoralis 12/20
Impatiens noli-tangere Impatiens pallida 12/19
Zephyranthes drummondii Zephyranthes chlorosolen 12/20
Ulmus rubra Ulmus americana 12/20
Callirhoe pedata Callirhoe involucrata 12/20
Sisyrinchium montanum Sisyrinchium bellum 11/20
Conopholis alpina Conopholis americana 11/17
Calystegia macrostegia Convolvulus arvensis 11/20
Verbascum virgatum Verbascum blattaria 11/19
Conocephalum conicum Lunularia cruciata 11/19
Tsuga heterophylla Tsuga canadensis 11/19
Viola adunca Viola sororia 10/17

Hardest to identifyby our own model

Species this model gets wrong most often. If you are photographing one of these, take the picture and then check it against a key.

  1. 1 Toxicodendron rydbergii 0.0%
  2. 2 Salix exigua 0.0%
  3. 3 Picea glauca 0.0%
  4. 4 Dryopteris filix-mas 0.0%
  5. 5 Vaccinium corymbosum 0.0%
  6. 6 Solidago altissima 0.0%
  7. 7 Persea americana 0.0%
  8. 8 Ulmus rubra 0.0%
  9. 9 Larix decidua 0.0%
  10. 10 Phyllocladus trichomanoides 0.0%
  11. 11 Euonymus fortunei 0.0%
  12. 12 Carya glabra 0.0%

Why publish thisthe obvious question

Because a number you cannot check is not a number. PictureThis advertises 98% accuracy and publishes no methodology, no dataset, and no error analysis. We have no way to evaluate that claim, and neither do you.

Fine-grained plant identification from a single photograph is a genuinely hard problem. A juvenile Monstera deliciosa and a pothos are close to indistinguishable without a petiole. Two cottonwoods differ by leaf margin. Anyone claiming near-perfect accuracy across tens of thousands of species is either measuring something much easier than what you are doing, or not measuring at all.

So we would rather tell you what the model actually does, show you where it fails, and let the app hand the hard cases to engines that do better. That is also why the app reports its confidence instead of hiding it.