Document field extraction
When a document of a supported type is uploaded, the platform reads the photo with an AI vision model, pre-fills the document's fields as suggestions, links a vehicle document to the matching vehicle by its plate, and then holds the confirmed document for a supervisor to verify.
Overview#
Documents are uploaded against a document whose type is already known, so nobody has to say what kind of document the photo shows. Because the type is known, the platform asks the AI model for that type's fields only, which is more accurate than a general text scan. Every upload of a supported type is read, whether it comes from the Driver App or from the web portal. Reading runs in the background after the upload is saved, so the upload never waits for it. The AI values are suggestions: the values the driver confirms are what the document keeps, and a confirmed document waits in the review queue until a supervisor verifies or rejects it.
Document types and their fields#
Field extraction is switched on per document type. Four types have it today:
| Document type | Fields read from the photo |
|---|---|
| Driving licence | License number, full name, date of birth, issue date, expiry date, class |
| Vehicle registration | License plate, owner name, vehicle make, vehicle model, issue date, expiry date |
| Vehicle insurance | Policy number, license plate, insurer name, issue date, expiry date, coverage |
| Driver medical certificate | Full name, clinic name, issue date, expiry date, fitness result |
Other document types, such as the roadworthiness certificate, national ID, business registration and transport permit, are stored without extraction. The fields of each type are configuration, not code, so the platform team can enable another type without a new release.
Extraction statuses#
Each document carries an extraction status:
| Status | Meaning |
|---|---|
| Not applicable | The document type has no extraction, so nothing is read |
| Pending | A photo is saved and the reading is queued |
| In progress | The AI model is reading the photo |
| Completed | The fields were read and wait for the driver to confirm them. Also the status once the driver has confirmed, including after a failed reading |
| Failed | The AI model returned an error; the fields are empty and are filled in by hand |
stateDiagram-v2
state "Not applicable" as na
state "Pending" as pending
state "In progress" as running
state "Completed" as completed
state "Failed" as failed
na --> pending: photo saved for a supported type
pending --> running: reading starts
running --> completed: fields read
running --> failed: model error
failed --> completed: driver confirms
completed --> pending: read again
failed --> pending: read againRules#
- One reading per upload. Each photo is read once; nothing re-reads it automatically because a value looks wrong. A reading can be started again from the back office. That clears the previous values, the verification flag and any plate-mismatch flag first, and skips a document whose reading is still in progress.
- Values that need a second look. Each field comes back with a confidence score. A field whose confidence is below the company's OCR confidence threshold is marked as needing review.
- Dates. A successful reading fills the document's issue and expiry dates only when the document does not have them yet. The dates the driver confirms always replace them.
- The driver can change every field. The confirmed values replace the AI values, and every field the driver changed is recorded next to the AI value, so the OCR adoption figures can tell accepted readings from corrected ones.
- Confirm once. Fields can be confirmed only after the reading has finished, completed or failed, and only once: a second confirmation is refused as already confirmed.
- Pending verification. Confirming marks the document as pending verification, and it appears in the Documents tab of the review queue.
Vehicle plate matching#
For a vehicle registration or vehicle insurance document, the plate the model read is compared with the plates of the vehicles assigned to the driver behind the document. Spaces and hyphens are ignored and letters are compared in upper case; other characters, such as dots, still count.
| Result | What happens |
|---|---|
| The plate matches one of the driver's vehicles | The document is attached to that vehicle |
| The plate is read but matches none of them | The document is saved with a plate-mismatch flag and stays where it was uploaded |
| No plate was read, no driver is identified, or the driver has no assigned vehicle | No match and no flag |
The flag is the only signal: there is no separate notification and no error.
Notifications#
When a reading completes, one in-app notification, Document ready: followed by the document type, says We pre-filled the fields for your review. It is not sent as a push. It can be turned off in the recipient's notification preferences. A failed reading sends no notification.
Related#
- Review queue
- Verify documents a driver uploaded
- Manage vehicle and driver documents
- Update an expiring document from the Driver App