← Back to list

How Carmen Cloud’s ANPR Engines Think — And How You Can Help Them Get Better Results

Carmen® Cloud runs multiple ANPR and MMR engines across the globe, continuously trained and updated to read millions of different license…

László Tóth · 2025-11-17 15:51 · 0 claps · 6.6 min read
#anpr #alpr #mmr #computer-vision #saas
Open on Medium ↗

How Carmen Cloud’s ANPR Engines Think — And How You Can Help Them Get Better Results

Carmen® Cloud runs multiple ANPR and MMR engines across the globe, continuously trained and updated to read millions of different license plates. In this article, we’ll open the black box a bit: how these engines work together, why “no plate found” sometimes happens, and what you can do in your integration to get the most out of the service.

Why the Same Camera Can Give Different Results

ANPR is never just a single algorithm looking at a pixel grid. In Carmen Cloud, every request goes through a carefully designed engine pipeline that:

  • selects the most relevant engine cluster for your region and location,
  • optionally runs one or more local engines for specific countries or US sub-regions,
  • balances coverage against false-positive protection,
  • and applies strict validation rules before returning any plate text.

On top of that, small differences in input images and request parameters can have a big impact on what the engines “see”. The good news: once you understand the pipeline, it’s much easier to tune your integration.

Global Architecture: Regions, Local Engines and Quarterly Updates

Carmen Cloud operates ANPR and MMR engines in 10 geographical regions (Europe, North America, Middle East, etc.). Each region can host multiple engines:

  • Region-level engines — trained on plate types common across the broader area.
  • Location-specific “local” engines — optimized for a single country or sub-region.
  • Special variants — tuned for ultra-low latency or stronger false-positive filtering.

All engines undergo a quarterly update cycle. During these updates we:

  • add new and updated plate layouts,
  • extend character sets and local conventions,
  • tighten false-positive rules where needed,
  • and improve the wide-range search capabilities.

The engines are also continuously retrained on selected samples, so they can generalize to new plate variants. If a new plate type is still similar to what the engine already knows, it will often be recognized with slightly lower confidence — but still correctly.

Multiple Engines per Region: Europe and the US

Inside a given region, Carmen Cloud may run more than one engine for a single request. Two important examples:

Europe: Country-Specific Local Engines

In the eur region, there are:

  • European regional engines, and
  • country-specific local engines for locations such as HUN, ROU, DEU, and many more.

When you set the location in your Vehicle API request, the scheduler can prioritize the best combination of engines for that country, then fall back to regional engines if needed.

United States: Sub-Region Engines + Multi-Stage Chain

In the nam region, the US gets an extra level of specialization. There are engines trained for different US sub-regions, for example:

  • USA_NE – Northeast (Region 1)
  • USA_MW – Midwest (Region 2)
  • USA_SA – South Atlantic (Region 3 / Division 5)
  • USA_SC – South Central (Region 3 / Divisions 6 & 7)
  • USA_W – West (Region 4)

On top of that, US plates go through a dedicated multi-stage engine chain:

  1. **frq** (“frequent”) – trained on the most common US plate types, very fast and heavily optimized for extremely low false positives.
  2. **pst** (“post”) – broader coverage but still strongly optimized to reject false positives.
  3. **nam** – the general North-American engine that maximizes coverage as a final fallback.

The scheduler combines sub-region engines with this frq → pst → nam chain, to get the best mix of speed, coverage and reliability.

How the Engine Pipeline Looks Internally

Here is a simplified view of the generic Vehicle API pipeline inside Carmen Cloud:

+------------------+      +------------------+      +-----------------------+
|  Client Request  | ---> |  Input Handling  | ---> |  Engine Scheduler     |
|  (image + meta)  |      |  (validation)    |      |  (region/location)    |
+------------------+      +------------------+      +-----------+-----------+
                                                                |
                                                                |
                                                                v
                                                    +-----------+-----------+
                                                    |  Local / Country-     |
                                                    |  Specific Engines     |
                                                    +-----------+-----------+
                                                                |
                                                                |
                                                                v         
                                                     +----------+----------+
                                                     |  Region-Level       |
                                                     |  Engines (global)   |
                                                     +----------+----------+
                                                                |                                                
                                                                v
                                                +---------------+------------+
                                                |  Result Fusion &           |
                                                |  False-Positive Control    |
                                                +--+-------------------------+
                                                   |
                                                   v
                                            +------+--------------------+
                                            |  JSON Response to Client  |
                                            +---------------------------+

And a simplified version of the US-specific pipeline:

Client Request (region=nam, image, optional location/state)
        |
        v
+------------------+
| Input Handling   |
+------------------+
        |
        v
+---------------------------+
| Engine Scheduler (NAM)    |
| - Uses region/location    |
| - May use API key stats   |
+-------------+-------------+
              |
              v
     +--------+--------+
     | US Sub-Region   |
     | Engines         |
     | (USA_NE, etc.)  |
     +--------+--------+
              |
              v
     +--------+--------+
     | frq engine      |
     | (most common    |
     |  plate types)   |
     +--------+--------+
              |
      (no high-confidence
         result?)
              |
              v
     +--------+--------+
     | pst engine      |
     | (broader, still |
     |  FP-optimized)  |
     +--------+--------+
              |
      (still no reliable
         result?)
              |
              v
     +--------+--------+
     | nam engine      |
     | (general North  |
     |  American)      |
     +--------+--------+
              |
              v
+-------------+-------------+
| Result Fusion & Scoring   |
+-------------+-------------+
              |
              v
+-------------+-------------+
| JSON Response to Client   |
+---------------------------+

How API Key Statistics Help Pick the Right Engine

Carmen Cloud doesn’t just process your images and forget them immediately — it also aggregates per-API-key statistics about the countries (and where applicable, states) that appear in successful recognitions.

After only a short period of usage, the service can typically see patterns like:

  • “Most plates for this API key come from Germany and Austria.”
  • “Almost all recognitions are from US West Coast states.”

If your request does not specify a location, the scheduler can use this information to run a matching local engine automatically – even when the client-side integration forgot to set it.

Good practice: for a single-country deployment, it’s perfectly fine to reuse the same API key and let statistics help automatic engine selection.

When You Should Disable Statistics

The same API key can be used across multiple sites and countries. In that case, statistics-based heuristics can become misleading, because the engine cannot know which image belongs to which site.

For these scenarios, Carmen Cloud exposes the header:

X-Disable-Call-Statistics: true

When this header is set:

  • the server does not update API-key statistics for that call, and
  • no local engine will be chosen based on previous traffic patterns.

This is a great fit for:

  • multi-tenant integrations serving many countries with one API key,
  • test systems mixing sample images from all over the world,
  • roaming or mobile deployments with rapidly changing locations.

Request Tuning: Headers You Should Know

X-Enable-Wide-Range-Analysis: true (optional)

This header tells the engine to search a much wider range of orientations and positions inside the image. It is especially useful for:

  • mobile photos (iOS/Android) where the image carries EXIF orientation instead of true rotation,
  • wide scenes where the plate is small and near the edge,
  • hard images where speed is less important than finding any plate.

The trade-off: processing time may increase by a factor of 3–5×, depending on region and complexity.

X-Disable-Image-Resizing: true (optional)

By default, Carmen Cloud resizes large images to Full HD using bicubic resampling. This:

  • reduces upload time and bandwidth,
  • speeds up processing,
  • normalizes input for the engine’s expected character size range.

Disabling resizing can be useful in very specific, controlled environments, but in general it can actually make recognition harder if character sizes or the pixel grid are far from what the engines were optimized for.

As a rule of thumb:

  • keep resizing enabled for most integrations,
  • disable it only if you fully control the cameras and image pipeline,
  • and consider combining it with X-Enable-Wide-Range-Analysis when needed.

X-Enable-Unidentified-License-Plate: true (optional)

This header lets the engine return plate-like candidates even if:

  • plate type validation fails,
  • the plate does not match the expected country/state,
  • the confidence would normally be considered too low.

This can be useful for research or forensic-style workflows, but it significantly increases the risk of false positives, so it should only be enabled when you know exactly why you need it.

Input Image Quality: Still the Biggest Factor

Even the best engine won’t return reliable results if the input image is outside its physical limits. The most important rules from the input image guide:

  • Plate characters (after the optional server-side resizing) should be roughly 16–80 pixels high.
  • The plate must be fully visible and not cut off at the edges.
  • Avoid heavy blur and extreme motion; use fast shutter speeds.
  • Keep the viewing angle under roughly 40°.
  • Avoid overexposure and glare from headlights and reflective surfaces.

For detailed recommendations, see the Input Image Guide.

Tip: When you are tuning a new camera or site, always test your real images in the Carmen Cloud demo first. If the demo results are good, your integration will be much easier.

Why “No Plate Found” Happens — And How to Debug It

If you occasionally get a response with no plates, it does not necessarily mean the engine “failed”. It often means the engine refused to guess. To investigate:

  1. Inspect the image itself — orientation, cropping, character height, blur, exposure.
  2. Check request parameters — correct region and location? Is wide-range analysis needed?
  3. Look at device behavior — especially mobile apps that rely on EXIF orientation.
  4. Review any custom headers — did you disable resizing or statistics unintentionally?

If everything looks correct and you still see issues, our support team can help you analyze sample images and API responses.

Key Takeaways

  • Carmen Cloud runs multiple engines per region, including local and specialized variants.
  • Region and location determine which engines are used — always set them explicitly when possible.
  • In the US, a dedicated frq → pst → nam chain provides high coverage with strong false-positive control.
  • Per-API-key statistics help choose local engines automatically; use X-Disable-Call-Statistics when this is not desired.
  • Headers like X-Enable-Wide-Range-Analysis and X-Disable-Image-Resizing are powerful tuning tools – but should be used with care.
  • Image quality and basic camera setup still have the biggest impact on recognition success.

With the right combination of image quality, region/location, and request headers, you can unlock the full potential of Carmen Cloud and build ANPR-powered applications that are both accurate and reliable at scale.

Want to go deeper? Check out the technical docs: Vehicle API reference, Input Image Guide, Regions & Locations and FAQ.


메타데이터
post_id
53c6bc9787d5
slug
how-carmen-clouds-anpr-engines-think-and-how-you-can-help-them-get-better-results-53c6bc9787d5
url
https://medium.com/@tothl74/how-carmen-clouds-anpr-engines-think-and-how-you-can-help-them-get-better-results-53c6bc9787d5
canonical_url
https://medium.com/@tothl74/how-carmen-clouds-anpr-engines-think-and-how-you-can-help-them-get-better-results-53c6bc9787d5
author_url
https://medium.com/@tothl74
status
ok
fetched_at
2026-06-12 18:14:10