*** September 2026 Major Release ***Read and watch
Document type

Extracting data from vehicle registrations

State motor vehicle agencies print registration cards from their own systems, and every state uses a different card. Auto lenders and insurers collect one for each vehicle they finance or cover, and a fleet manager tracks hundreds at once. Most arrive as phone photos or scans uploaded to a portal.

Servicing needs the plate number, the title number, the vehicle's year and make, the expiration date and the fees paid. A loan servicing or policy administration system matches the vehicle to its collateral or policy record, and flags a registration due to lapse.

Page 1 of a sample Vehicle Registration, with extracted values outlined
2,014Markdown characters
63parse blocks
26fields extracted
The problem

What makes vehicle registrations hard

A borderless grid of values

Labels and values sit in loose columns across the card, and the table has to be rebuilt from their positions alone.

Every state prints its own card

Each state agency prints a different registration, with its own field order, label abbreviations and card size, and redesigns it over time.

Small cards, photographed

Registrations reach lenders and insurers as phone photos and low-resolution scans of a pocket-sized card, often creased or shot at an angle.

How it works

Parse, extract, verify

1

Parse

Parse turns the document into reading-order Markdown and a hierarchy of blocks (text, tables, figures), and grounds each block to its exact location on the page.

2

Extract

You define the fields in a JSON schema, and Extract returns their values in a consistent, structured format, each linked back to where it appears in the Markdown.

3

Verify

Each value links back to where it appears, down to the character range in the Markdown, and the page and bounding box in the source document, so every result can be verified.

Worked example

One vehicle registration, end to end

About this document: A Florida vehicle registration printed as a system test by the state's Department of Highway Safety and Motor Vehicles, then republished in a city parking permit handout. One landscape page, an image-only scan at low resolution. It carries the plate, decal, vehicle, title and an itemized fee block. The card was cropped from the handout, and one license number was replaced with a stand-in.

Processing objective: The objective is to identify the vehicle and confirm what was paid. The plate, title number and model year tie the card to one vehicle, and the registration tax plus a 3.00 county fee gives the 71.15 grand total. Each value grounds to the part of the card that prints it.

Demonstration fields: Plate number, Title number, Model year, Registration tax, Grand total

The document

1 page
  • Page 1 of the sample Vehicle RegistrationPage 1shown below

Where each value came from

Page 1 of the sample Vehicle Registration, with every featured field outlined
Plate numberregistration.plate_number
429MAI
The region of the sample Vehicle Registration containing Plate number, with the extracted value outlined
extraction_metadata["registration.plate_number"]
{
  "value": "429MAI",
  "page": 1,
  "range": {
    "end": 123,
    "start": 117
  },
  "box": {
    "xmin": 0.07987,
    "ymin": 0.16255,
    "xmax": 0.19086,
    "ymax": 0.21669
  }
}
Title numberregistration.title_number
100020689
The region of the sample Vehicle Registration containing Title number, with the extracted value outlined
extraction_metadata["registration.title_number"]
{
  "value": "100020689",
  "page": 1,
  "range": {
    "end": 412,
    "start": 396
  },
  "box": {
    "xmin": 0.43737,
    "ymin": 0.21667,
    "xmax": 0.55501,
    "ymax": 0.33546
  }
}
Model yearvehicle.year
2,005
The region of the sample Vehicle Registration containing Model year, with the extracted value outlined
extraction_metadata["vehicle.year"]
{
  "value": 2005,
  "page": 1,
  "range": {
    "end": 309,
    "start": 278
  },
  "box": {
    "xmin": 0.07986,
    "ymin": 0.21668,
    "xmax": 0.19075,
    "ymax": 0.33523
  }
}
Registration taxfees.registration_tax
68.15
The region of the sample Vehicle Registration containing Registration tax, with the extracted value outlined
extraction_metadata["fees.registration_tax"]
{
  "value": 68.15,
  "page": 1,
  "range": {
    "end": 483,
    "start": 466
  },
  "box": {
    "xmin": 0.70308,
    "ymin": 0.21666,
    "xmax": 0.79539,
    "ymax": 0.33562
  }
}
Grand totalfees.grand_total
71.15
The region of the sample Vehicle Registration containing Grand total, with the extracted value outlined
extraction_metadata["fees.grand_total"]
{
  "value": 71.15,
  "page": 1,
  "range": {
    "end": 1063,
    "start": 1058
  },
  "box": {
    "xmin": 0.70314,
    "ymin": 0.43164,
    "xmax": 0.79549,
    "ymax": 0.47143
  }
}

How to try it yourself

Everything on this page is reproducible. The sample, its schema, and the Parse and Extract API outputs are published. You can repeat the same two calls from whichever surface you already build on.

  • Claude Skilldescribe the job; the agent writes it
  • CLIno code at all
  • MCPexpose ADE docs as an agent tool
  • REST APIany language
  • Pythonlandingai-ade
  • TypeScriptlandingai-ade
Why LandingAI?

Documents into data

Accurate

The best accuracy on the difficult documents other tools get wrong, such as messy scans, complicated tables, checkboxes and handwriting.

Auditable

Every answer cites its sources. Values come back with an audit trail (page, bounding box, character range) so a human can review them.

Agentic

Applies multi-step reasoning, and plans before it acts. Handles documents it has never seen before and adapts to variations.

API-first

Composable APIs that drop into any tech stack and can be called from anywhere. Easy to build on and embed in your pipelines and products.

Affordable

Cost-competitive rates with complete price transparency. Spend controls before you run, and every job reports its exact cost.

Enterprise-grade

Built for production and scale from day one. Fully observable and monitored, running securely in our cloud or yours.

Built for high-volume, high-throughput production

  • Zero data retention
  • Priority rate limits
  • Enhanced support
  • VPC and on-prem deployment

Available on Team and Enterprise plans. VPC and on-prem deployment require an Enterprise plan.

Compare plans
Capabilities

Vehicle Registration processing highlights

Plate and decal numbers
Title numbers
Year, make and body type
Registration and expiry dates
Itemized registration fees
Grand total reconciliation
Registrant name and address
Weight and class codes
Borderless printed grids
Low-resolution scans
No per-state templates
Bounding box for every value
FAQs

Questions, answered

Yes. Parsing works from the page image, so an image-only scan at low resolution reads the same way as a digital PDF. Each value is grounded to the part of the card that prints it.

Yes. Describe each fee and the grand total as numbers in your schema. They come back as numbers, so the itemized amounts can be summed and compared with the total the agency printed.

No. A schema names the fields you want and describes them in plain language. Extraction reads the parsed card for meaning, so one schema covers each state's own layout and label abbreviations.

Every extracted value carries the character range it was quoted from in the parsed Markdown. The Ground API maps that range to a page and a bounding box, so a reviewer sees each value on the card that printed it.

Start extracting vehicle registration data

Reliable, structured outputs with full traceability in minutes