Why am I getting low scores?

The CardSearchEngine score is often misunderstood. It is not a confidence score, but a value based on fingerprint comparisons between the query image and your reference images.

The score is calculated using the full images, not just the portions that match, so any extra background, lighting differences, or other minor variations will affect the value. A score of 100 is only returned when the query and reference images are exactly the same, pixel for pixel. Even very small differences, including resizing, compression, or subtle artifacts that may not be obvious to the human eye, can reduce the value.

Scores are used to rank results, not to determine whether a match is “good” or “bad.” A value like 35 does not indicate a bad match. What matters most is the relative ranking, not the absolute number. The top result is usually the correct match, even if the value seems low.

What you should do

  • Focus on the top-ranked result, not the number
  • Show the top few results when scores are very close
  • Avoid hard thresholds unless you have tested them on your dataset

If you treat these values as a ranking signal rather than a measure of confidence, the results will be much easier to interpret.