- Problem
- Which vehicles parked, for how long, and at what fee is usually logged by hand on site.
- Approach
- A local detection model crops plate candidates, a VLM only reads the plate, and plain code does the rest: a parser repairs OCR reads and dedup merges sightings into sessions.
- Outcome
- Working prototype: each frame becomes a parking session with unique car and motorbike counts, dwell time, and an estimated fee per location.
| Vehicle / Frame | Plate Read | Parking Session | Status |
|---|---|---|---|
| Motor · frame 08:02 | OCR: "B 1O34 XYZ" | Belum jadi sesi | Raw Read Raw read |
| Motor · frame 08:17 | OCR: "B 1034 XYZ" | Belum jadi sesi | Raw Read Raw read |
A letter O was read in a number slot, so logging it as is creates a different plate.
| Vehicle / Frame | Plate Read | Parking Session | Status |
|---|---|---|---|
| Motor · B 1034 XYZ | Dilihat 2x (08:02, 08:17) | Dwell 15 menit · est. Rp 2.000 | Merged Sesi aktif |
| Mobil · B 5678 QRS | Dilihat 3x (08:05 sampai 09:40) | Dwell 95 menit · est. Rp 10.000 | Counted Sesi aktif |
Two reads one character apart merge into one session; the valid read replaces the repaired one.
| Vehicle / Frame | Plate Read | Parking Session | Status |
|---|---|---|---|
| Motor · XX 4821 AB | Kode wilayah tidak dikenal | Disimpan, ditandai invalid | Invalid Plate Review |
| Mobil · frame 08:40 | Plat tidak terbaca | Dilewati, bukan sesi | Unreadable Skipped |
Region codes are checked against the Samsat list; unknown ones are still logged but flagged for a human.