Problem & solution

Race Number Detection in Rally Photos — Mud, Dust, One Pass

Rally is the hardest place in motorsport to read a car number, and it has nothing to do with speed. The number is printed on a door panel that spends the day collecting gravel, mud, dust, and snow spray — and unlike a circuit, where the same car comes past you thirty times, a rally car passes your position once. If the number is buried under a layer of Welsh mud on that one pass, no amount of re-shooting will fix it. This guide covers why rally number detection is a genuinely different problem from circuit racing, why the trick most rally photographers fall back on — inferring the car from start order and timestamps — breaks exactly when the rally gets interesting, and how we handle it, including the frames we can't read.

An unidentified rally frame is a frame you can't sell to the crew, file for the team, or hand to a series desk with a caption. Rally photographers work across several stages and remote locations in a day, then face the whole take at base camp in the evening — and identifying cars by memory, hours after the fact, is where the night disappears.

Understanding the problem

Race number detection in rally is the task of locating the competition number on a car in a photo and reading it, so the frame can be attached to the crew that was in the car. Rally cars carry the number on both front door panels and usually on a rally plate at the front of the car, which gives you more than one surface to read — but all of those surfaces face outward into whatever the stage is throwing at them. The read then has to survive the conditions rally is shot in: low light under tree cover, backlit dust, spray, and cars presented at extreme yaw angles.

Rally photography income is built on identification. Crews, teams, and sponsors buy photos of a specific car, and a stage frame with no number attached is effectively unfindable in a full weekend's archive. Because rally days are long and spread across remote locations, the tagging work lands at the end of the day, when the deadline is nearest and the photographer is least sharp.

In this sport specifically

Rally inverts most of the assumptions circuit photography is built on. Cars run one at a time at set intervals rather than in packs, so a frame almost never contains more than one competitor — the multi-subject problem largely goes away, and is replaced by a one-pass problem. You cannot wait for a better lap. Stage surfaces coat the car in gravel dust, mud, or snow within the first kilometers, so the same car is progressively harder to read as the day goes on, and it is hardest on the final loop, when the light is best and the driving is most committed. Rally also identifies a crew rather than a driver: the number belongs to a driver and co-driver together, which changes what your entry list has to carry.

Where it shows up

Traditional approaches, and why they fall short

Identifying cars from memory and field notes at base camp in the evening

The whole evening after a full day across several stages, on top of culling and editing · Fine for the cars you know well; unreliable for the mid-field and clubman entries that look alike in a similar livery

It runs on recall, hours after the fact, at the end of a long day in the field. The cars you can't place get set aside, and the set-aside pile is usually the part of the entry list that would still buy photos.

Basic OCR over the frame — treating the number panel as printed text

Quick to run, but adds a manual verification pass to find the wrong and missing reads · Workable on a clean, flat, square-on door panel; weak on dust film, yaw angles, and damaged panels

Plain OCR doesn't know what a competition number is. A rally car is covered in sponsor text, and OCR will confidently return a sponsor's phone number or a series logo as though it were the car number — a confident wrong answer is worse in an archive than no answer.

Inferring the car from start order and frame timestamps

Low once set up, but depends on a synchronized camera clock and a stage start list · Good while the rally runs to schedule; degrades as soon as it doesn't

This is the rally-specific shortcut, and it breaks precisely when the rally gets interesting. Retirements open gaps, road order changes between loops, restarts under super-rally rules put cars back in unexpected slots, and any car that stops, spins, or takes a penalty arrives out of sequence. The inference is silent when it's wrong — you get a plausible number attached to the wrong crew.

How RaceTagger handles it

RaceTagger sends each photo to a vision model that is looking for a competition number on a car, rather than transcribing text it finds in the frame. Rally is a dedicated sport profile in the app, set up around a crew-based entry rather than a single driver, so the number is treated as identifying a car and the people in it. You upload the event's entry list as a CSV and it matches the numbers it reads against that list, which is what separates a real competition number from the sponsor text alongside it — a read that matches no entry in your list is treated as suspect rather than trusted. Reads that are partial, low-contrast, or ambiguous are written too, carrying a review marker — the marker is there so you can find the frame, not to hold the file back. What isn't written is the other case: with an entry list loaded, a read that matches no entry in it leaves the frame untagged.

Key advantage

It reads what is actually visible in the frame and checks it against the real entry list, rather than inferring identity from where a car should have been. That matters most in the situations where the start-order shortcut fails silently — a retirement, a restart, a car running out of sequence — because a number that corresponds to no entry in your list doesn't get quietly accepted: it's re-checked against the list, and if it still doesn't resolve, the frame goes to review rather than being tagged.

Good conditions
Clean door panel or rally plate presented toward the camera — reads reliably and matches against the entry list
Challenging
Dust film, mud spatter across a digit, or the panel held at a steep angle — often still readable, but more of these land in the review queue
Worst case
Panel fully caked, torn away after contact, or hidden in a dust cloud — there is nothing left to read, so the frame goes to review rather than being tagged with a guess

Import the entry list once as a CSV. Competition numbers alone are enough to make the archive searchable, and columns like driver, co-driver, team, and car carry through into the metadata if your list has them. RaceTagger batch-processes the folder from a stage or a whole day, reads JPEG and RAW files — RAW via the embedded preview — and separates low-confidence frames for a focused manual pass. Confirmed numbers are written into the files as EXIF/XMP/IPTC metadata, so the tags travel with the photos into Photo Mechanic, Lightroom, or Capture One rather than living in a separate spreadsheet.

Manual vs OCR vs AI vision

MetricManualBasic OCRRaceTagger
How a full day's take is processedFrame by frame at base camp, identifying cars from memory and notesAutomated text pass, then a manual hunt for wrong and missed readsBatch read against your entry list, with low-confidence frames flagged for review
Clean door panel, presented toward the cameraReliable but slowReads well when the panel is flat and unobstructedReads reliably and matches cleanly against the entry list
Dust film, mud spatter, or a steep door angleReadable with effort and zooming, at minutes per frameOften fails, or returns a partial number as if it were certainReadable more often than plain OCR; ambiguous reads carry a review marker rather than passing as certain
Car running out of sequence after a retirement or restartCaught if you noticed it on stage; missed if you didn'tUnaffected — it reads the frame, but only when the panel is cleanUnaffected — identity comes from the number in the frame, not from the expected running order
Cost modelYour evening, at the end of a day in the fieldCompute only, but heavy manual review afterCredits — 1 credit per photo analyzed

Practical tips

  1. 1

    Shoot a clean reference frame of each car before the stages dirty it

    At the start ramp, in parc fermé, or in service, cars are static, clean, and square-on. A quick pass through the field there gives you an unambiguous frame per number, which is the easiest material to work from when you later have to resolve a stage frame you can't read.

  2. 2

    Pick at least one position per stage where the door faces you

    Corner exits give you the dramatic sideways frames, but often present the wrong side of the car. Adding a spot where cars come toward you or pass square-on — a straight, a braking zone, a junction approach — buys you a readable number for the same car on the same pass.

  3. 3

    Use the rally plate as a second chance at the number

    The door panel takes the worst of the stage debris because it sits right behind the front wheel. The plate at the front of the car is often in better shape, so a frame that catches the front of the car can be readable when the door isn't.

  4. 4

    Get the entry list after scrutineering, not the early one

    Withdrawals, late entries, and number changes are settled close to the start. Matching quality depends on the list: a number that isn't in your CSV can be read but not attached to a crew, so ask the organizer for the freshest export they have.

  5. 5

    Put both crew names in the CSV, not just the driver

    A rally number identifies a crew. Carrying driver and co-driver through into the metadata means the co-driver is searchable too — which matters commercially, because co-drivers and their sponsors buy photos as well, and are routinely left out of an archive tagged by driver name alone.

The takeaway

Rally number detection isn't about a perfect read on every frame — a caked door panel has nothing left to read, and no tool can honestly promise otherwise. It's about clearing the readable panels automatically, checking each read against the real entry list instead of inferring identity from a running order that breaks the moment a car retires, and flagging the rest — so your evening at base camp goes to the frames that actually need your eye.

Tag a rally day by competition number — with the unreadable frames flagged, not guessed

Start with free credits when you sign up — 1 credit per photo. Upload a stage folder and see how it handles dusty door panels, sideways frames, and your entry list CSV.

Try it free →

Questions photographers ask

How does automatic race number detection work on rally photos?

A vision model looks at each photo, finds the competition number on the car — on the door panel or the rally plate — and reads it as context-aware detection rather than plain text transcription. Each read is then matched against the entry list CSV you upload, and low-confidence or ambiguous reads are flagged for manual review. Those frames are still written, with the review marker attached so you can find them, rather than being held back. The case that isn't written is a read matching no entry in your list: with a list loaded, that frame is left untagged.

Can it read a number through mud and dust on a rally stage?

Up to a point, and we'd rather be straight about where that point is. A dust film or spatter across a digit is often still readable, and those frames simply land in the review queue more often. A panel that is fully caked, torn off after contact, or hidden in a dust cloud has nothing left to read — that frame is flagged for review rather than tagged with a guess.

Why not just identify cars from the start order and photo timestamps?

It works while the rally runs to schedule, which is exactly when identification is easy anyway. Retirements, road order changes between loops, super-rally restarts, and any car that stops or spins put cars through your position out of sequence — and the inference fails silently, attaching a plausible number to the wrong crew. Reading the number that's actually in the frame doesn't have that failure mode.

Does it handle the co-driver as well as the driver?

Rally is set up in the app as a crew-based entry, so the number identifies the car and the people in it rather than one driver. If your entry list CSV carries both driver and co-driver, both names carry through into the photo metadata — so the co-driver is searchable in the archive too, not just the name on the door.

Does it work with RAW files and my existing editing tools?

It processes JPEG and RAW, reading RAW via the embedded preview, so you don't need to convert a day's shooting first. Confirmed numbers are written into the files as EXIF/XMP/IPTC metadata, which means the tags travel with the photos into Photo Mechanic, Lightroom, or Capture One rather than sitting in a separate spreadsheet.

Do I need connectivity at the stage for this to work?

No — this is post-shoot work, not something you run at the road closure. Rally positions are usually remote and offline, so the tagging pass belongs to the point where you're back at service or base camp with your take and your entry list, before or alongside the edit.

Keep reading

← All guides