Error-Amplification Lab
A transparent 100:1 plate-key collision and 600 open-model synthetic OCR inferences test how missing characters can become false certainty.
The laboratory reproduces a mechanism, not a vendor error rate. No real plate images, private movement data, or proprietary systems are used.
The public failure chain
Joel Feder reported that two manufacturer plates—34 03 DTM and 34 10 DTM—were reduced to the same shortened value, 34 DTM, at different layers of a police/Flock alert chain. That lossy equivalence propagated into multi-day tracking and a four-cruiser stop.
The event illustrates four distinct questions:
- Did the source record preserve the complete identifier?
- Did the camera preserve every distinguishing character?
- Did the matching interface represent a partial read as ambiguous?
- Did officers independently verify the state, plate type, full identifier, and vehicle?
Experiment 1: deterministic key collision
The code generates 100 fictional identifiers from 34 00 DTM through 34 99 DTM. The tested transform removes the middle two-digit token and separators.
34 00 DTM ─┐
34 01 DTM │
34 02 DTM ├── delete middle token ──> 34DTM
... │
34 99 DTM ─┘
Result: 100 full identifiers collapse to one match key. The unit tests explicitly pin the 34 03 DTM / 34 10 DTM pair.
This is not a probability. It is the cardinality of the ambiguity set under the defined transformation. A safe interface should expose that ambiguity rather than present one confident “hit.”
Experiment 2: synthetic OCR degradation
We rendered 100 fictional plate crops with a smaller middle token and processed each under six conditions using Fast Plate OCR 1.1.0's cct-xs-v2-global-model on local CPU.
Synthetic source image. Fictional identifier rendered with the open Noto Sans Mono font.
100 identifiers per condition. The unusual small-token layout is intentionally out of distribution; values are not an operational ALPR benchmark.
| Condition | Exact string | Middle token preserved |
|---|---|---|
| Native | 20% | 24% |
| Half resolution | 30% | 31% |
| Quarter resolution | 3% | 10% |
| Half resolution + blur | 1% | 2% |
| Quarter resolution + blur | 0% | 1% |
| Low-contrast quarter resolution | 0% | 1% |
The improvement at half resolution is a warning against overinterpretation: interpolation can make a synthetic glyph distribution more familiar to a model. The bounded finding is that the distinguishing small token frequently disappeared under controlled degradation.
The combined mechanism
The OCR test supplies a plausible deletion pathway. The deterministic registry measures what happens after deletion. Together they show why a system must preserve uncertainty:
small token lost → shortened key → enlarged candidate set → distributed alert → officer action
That sequence can be interrupted at every arrow. Full-string validation, confidence display, candidate counts, vehicle-metadata comparison, current hot-list confirmation, and independent officer verification are all fault-containment controls.
Reproduce
.venv/bin/python scripts/run_ocr_lab.py
.venv/bin/pytest tests/test_plate_lab.py tests/test_ocr_lab.py
Download all 600 inference rows → · View the governance controls →