Problem & solution

Race Number Detection in F1 Photos — Livery, Blur, Glare

An F1 car number is one of the smallest details on the car and one of the only ones that actually tells two teammates apart. It's painted into a livery designed to sell sponsors, not to be legible, and you're usually catching it at over 300 km/h. This guide is about that specific problem — reading the number itself, not matching it to a roster or writing it into metadata — and about the frames where reading it cleanly simply isn't possible.

A frame with an unreadable number is a frame you can't caption correctly, and on a grid where teammates run identical paint, a wrong guess is worse than no answer — it puts the photo, and the driver's or sponsor's name, in the wrong place in your archive or your client's system.

Understanding the problem

Race number detection in F1 is the task of locating each driver's permanent number (2–99, with #1 reserved for the reigning champion) on the car and reading it from a photo, so the frame can be attached to the right driver and team. The number usually sits on the nose, the cockpit side, or the airbox, and its size and contrast against the livery are a styling decision each team makes for itself — some run bold, isolated numbers, others tuck a thin one into a busy sponsor panel.

The car number is the only feature that reliably separates two cars running the same paint scheme. Helmet, overalls, and even driving style aren't visible or reliable enough in a still frame at distance, so when the number isn't legible, there's no fallback that doesn't risk mixing up teammates — and a wrongly captioned frame is a credibility problem for wire and agency work, not just a missing tag.

In this sport specifically

F1 compounds the reading problem in ways other motorsport doesn't: closing speeds well over 300 km/h shrink your shutter-speed margin before the number smears, sponsor graphics are deliberately placed for maximum brand visibility and often crowd the number for space, and several rounds each year run after dark under artificial lighting that throws hard reflections off glossy or chrome-wrapped bodywork. On top of that, teammates run identical liveries by design, so this is the one discipline where getting the number wrong doesn't just misfile a frame — it swaps two contracted drivers.

Where it shows up

Traditional approaches, and why they fall short

Identifying the driver from memory using livery and car position while shooting or culling

No extra time in the moment, but a slow, error-prone pass across a full weekend's take afterward · Reliable for the cars whose season you've followed closely; shaky for a midfield team, a rookie, or a mid-season driver swap

It falls apart on the exact case that matters most — two cars in identical livery — because memory and position aren't enough to tell them apart once they're out of the order you last saw them in.

Basic OCR run across the frame as if the number were printed text

Fast to run, but adds a manual pass to catch what it got wrong · Workable on a large, high-contrast number in good light; weak the moment the number is stylized, angled, or set into a busy livery panel

Plain OCR doesn't know a car number from a sponsor's numeral in the surrounding graphics, and a livery-integrated number is exactly the kind of stylized character OCR engines are built to fail on.

Cross-checking the frame against the live broadcast feed, timing screen, or team radio while shooting

Works in real time, at the cost of attention split between your viewfinder and a screen · Good in the moment, for the car you're actively tracking

It only helps while you're shooting live — it gives you nothing when you're back at the hotel reviewing a card of a thousand frames shot across three sessions, which is when the identification work actually has to get done.

How RaceTagger handles it

RaceTagger sends each photo to a vision model looking specifically for a car number, rather than transcribing whatever text it finds in the frame. You load the season's entry list as a CSV — driver, team, car number — once, and update it when a reserve or rookie is confirmed, since F1 numbers are permanent for a driver across the season. RaceTagger reads JPEG and RAW files (Canon CR3, Sony ARW, Nikon NEF) via the embedded preview, so there's no conversion step before a batch. A read that comes back low-confidence or doesn't match anything in your list is flagged for review rather than committed as a guess.

Key advantage

It reads what's actually visible in the frame instead of inferring identity from livery or position, which is exactly what breaks down when two teammates run the same paint. Where the number is genuinely gone — full motion blur, rotated fully away, buried in glare — the frame is flagged for review instead of quietly getting a plausible-but-wrong number attached.

Good conditions
A clean, well-lit number facing the camera — braking zones, corner entry and exit, pit lane and grid frames — reads reliably and matches against your entry list
Challenging
Numbers softened by moderate motion blur, set into a busy sponsor panel, or partly shadowed are read more inconsistently, and more of these land in the review queue
Worst case
A number fully lost to blur, rotated out of frame, or blown out by night-race glare has nothing left to read, so the frame goes to review rather than being tagged with a guess

Build or update your entry-list CSV once per season and again for any reserve or rookie call-up. Cull your take in Photo Mechanic first, then point RaceTagger at the keeper folder — it batch-reads the numbers, matches them to your list, and writes driver and team into EXIF/XMP/IPTC metadata that flows straight into Lightroom or Capture One. The flagged frames — motion blur, glare, an unmatched number — are the only ones you check by eye.

Manual vs OCR vs AI vision

MetricManualBasic OCRRaceTagger
Reading a clean, well-lit number facing the cameraReliable, but depends on knowing the grid by memoryReads well when the number is large, high-contrast, and isolatedReads reliably and matches against your entry list
Separating two teammates in identical liveryOnly works if you already know the running order; fails once cars are out of sequenceNo concept of driver identity — reads a number if it can, nothing moreCorrect whenever either car's number is visible; the frame is flagged, not guessed, if it isn't
Number softened by motion blur on a panReadable with a squint and a zoom, at a real time cost per frameUsually fails outright, or returns a partial digit as if certainRead more often than plain OCR; genuinely unreadable frames are flagged rather than passed as certain
Night-race glare on glossy or chrome liveryWorkable case by case, slower under deadline pressure late at nightOften fails on reflections and hotspots across the panelClean night frames read fine; glare-heavy ones are flagged for review
Cost model for a full weekend's takeYour evening, after three sessions of shootingCompute only, plus a manual pass to catch what it got wrongCredits — 1 credit per photo analyzed

Practical tips

  1. 1

    Get at least one frame per stint where the nose or cockpit side faces you squarely

    Heavy braking zones and corner entry are where the car is slowest and most square-on to your position, which is also where the number is at its most legible — treat that frame as your identification anchor even if the rest of the sequence is a pan.

  2. 2

    Don't trust livery alone when two cars from the same team are close together

    Identical paint is exactly the case where a wrong guess costs you the most — if the number isn't clearly visible on either car in a frame, treat the pairing as unresolved rather than assigning it from position or order.

  3. 3

    At night rounds, expose to protect the number panel even if it costs you a stop elsewhere on the car

    Glossy and chrome liveries blow out fast under floodlights, and once the panel around the number clips to white there's nothing left to read — a slightly darker overall frame with a legible number beats a bright frame with a blown one.

  4. 4

    Keep the entry list current for reserves and rookies before you process a session, not after

    A car number that isn't in your list yet comes back unmatched rather than misidentified, but it still means an extra pass — updating the CSV once a call-up is confirmed avoids a pile of unmatched frames from that session.

  5. 5

    Treat the flagged pile as one batch review, not a scattered hunt through the gallery

    Night-race glare and hard-blur pans tend to cluster together in the same sessions — reviewing the flagged frames as a group, right after a batch finishes, is faster than coming back to individual mislabeled photos later.

The takeaway

Reading an F1 car number is a genuinely harder problem than it looks, because the one thing that separates two identical cars is also the thing every team's livery department is least motivated to make legible. The honest approach isn't a promise to read every frame — it's reading what's actually visible, matching it to your own entry list, and flagging the blur, glare, and identical-livery frames it can't resolve, so your review time goes to the handful of photos that actually need it.

See how it reads your F1 frames

Upload a session folder and your entry list CSV, and see which numbers it reads clean and which ones it flags. New accounts start with free credits — 1 credit per photo after that.

Try it free →

Questions photographers ask

How does RaceTagger tell two F1 teammates apart when the livery is identical?

By the car number, which is the one feature that isn't shared between them. RaceTagger reads the number in the frame and matches it against the entry list you provide — if the number isn't visible on either car, that frame is flagged for review rather than assigned by guesswork.

Can it actually read a number that's stylized into the livery, not printed on a plain panel?

Yes, up to the point where the number is genuinely obscured. The model looks for the car number as a whole shape in context rather than scanning for printed text, which is what lets it read numbers set into busy sponsor graphics that a plain OCR pass would misread or miss.

What happens on a heavy panning shot where the number is blurred?

A number softened by moderate blur is often still readable and gets matched normally. Once the blur is heavy enough that the digits have genuinely smeared together, the read comes back low-confidence and the frame is flagged for you to check, rather than tagged with a plausible-but-wrong number.

Does it work on night races like Las Vegas, Singapore, or Bahrain?

Clean, well-lit frames from night rounds read the same as daytime ones. The harsh reflections and hotspots that floodlights and chrome liveries create are the harder case, and those frames land in the review queue more often rather than being read with false confidence.

Does this replace matching my own start-list CSV, or is it a separate step?

It's the same step, not a separate one — reading the number and matching it to your entry list happen together in one batch pass. If you need the detail on keeping that list current through reserves, wildcards, and mid-season team changes, that's covered on its own page.

Does it work on RAW files straight off the card?

Yes, it reads Canon CR3, Sony ARW, and Nikon NEF files through the embedded preview, along with JPEG, so there's no conversion step before you run a batch. The car number, driver, and team it reads are written into EXIF/XMP/IPTC metadata that flows into Photo Mechanic, Lightroom, or Capture One.

Keep reading

← All guides