Skip to main content

Thai Vehicle License Plate OCR

The Thai Vehicle License Plate OCR API (LPR) reads Thai license plates from photographs and reports the plate number, registered province, and the vehicle's make, model, body type, color, and orientation. Version 3.0 replaces the vehicle make/model engine with one built for the current Thai car market: on an 853-image benchmark of today's traffic it identifies the brand correctly on 99.4 percent of images (previous engine: 38.5 percent) and the exact make and model on 99.18 percent, covering 73 models across 17 brands including 2020–2026 releases and Chinese EV brands such as BYD, MG, GWM, and Neta. It also adds fuel-type/EV reporting, confidence scores, and neighbor-country plate support. See Accuracy.

Version 3.0 rollout — nothing changes for existing integrations until 11 September 2026

Version 3.0 is not forced on anyone yet. The main endpoints below continue to serve the proven version 2.0 engine. Version 3.0 is available today on its own preview endpoints (…/license-plate-ocr-v3) at the same price, so you can evaluate it against your own traffic first. On 11 September 2026 the main endpoints switch to the version 3.0 engine automatically. The API contract is fully backward compatible — same request format, every existing response field keeps its exact name and format, and everything new arrives in additive fields — so no code changes are required on your side at any point. The preview endpoints remain available as aliases after the switch.

Live Demo

Upload a vehicle photo, or use the examples below. Use the endpoint tabs to compare the current engine (v2.0) with the new engine (v3.0 preview) on the same image.

Try Our AI Demo

Login or create a free account to use this AI service demo and explore our powerful APIs.

Get 100 Free Credits (IC) when you sign up!

Offer ends December 31, 2025

Example Images (Click to try)

Example 1
Try Demo
Example 2
Try Demo
Example 3
Try Demo
Example 4
Try Demo
Example 5
Try Demo
Example 6
Try Demo

Quick Start

You need an API key from the API Key Management page. Send the image as multipart/form-data:

curl -X POST https://api.iapp.co.th/v3/store/smart-city/license-plate-ocr \
-H "apikey: YOUR_API_KEY" \
-F "file=@vehicle.jpg"
{
"conf": 93.39,
"country": "th",
"lp_number": "ขก5337",
"province": "th-83:Phuket (ภูเก็ต)",
"vehicle_body_type": "pickup",
"vehicle_brand": "isuzu",
"vehicle_color": "red",
"vehicle_model": "isuzu_d-max",
"vehicle_orientation": "315",
"vehicle_year": "2020-present",
"is_vehicle": "yes",
"is_missing_plate": "no",
"message": "success",
"status": 200
}

The same request against the version 3.0 preview endpoint (…/license-plate-ocr-v3) returns every field above unchanged, plus the additive v3.0 fields — fuel type, make/model confidence, top-5 candidates, logo-brand verification, and country support level. The full schema is in the Technical Reference.

Endpoints and Pricing

EndpointEnginePrice
POST /v3/store/smart-city/license-plate-ocrv2.0 (switches to v3.0 on 11 Sep 2026)0.75 IC per request
POST /v3/store/smart-city/license-plate-ocr/base64v2.0 (switches to v3.0 on 11 Sep 2026)0.75 IC per request
POST /v3/store/smart-city/license-plate-ocr-v3v3.0 (preview, available now)0.75 IC per request
POST /v3/store/smart-city/license-plate-ocr-v3/base64v3.0 (preview, available now)0.75 IC per request

Both engines are billed at the same price. The legacy paths /iapp_license_plate_recognition_v1_file, /iapp_license_plate_recognition_v1_base64, /license-plate-recognition/file, and /license-plate-recognition/base64 remain supported at the same price and follow the main endpoints. For on-premise deployment, see Data Security.

Performance

Measured on the production service, 28 August 2026.

MetricVersion 2.0 (main endpoints)Version 3.0 (preview endpoints)
Median processing time0.2 s per image0.5 s per image
Sustained throughput3.1 images per second (11,000 images per hour), at request concurrency 4
Supported input formatsJPEG, JPG, PNG (up to 2 MB)JPEG, JPG, PNG (up to 2 MB)

Accuracy

Version 3.0 benchmark: 853 real held-out test images covering all 73 vehicle models in today's Thai traffic — never used in training, identical inputs to both engine generations. Full method and per-model results: benchmark whitepaper (PDF).

MetricPrevious engine (v2.0, 2023 catalog)Version 3.0
Vehicle brand (make) correct38.5%99.4%
Brand — on models within the v2.0 catalog41.8%99.3%
Vehicle make + model correct (top-1)10.4%*99.18%
Make + model within top-5100.0%
Coverage (returns an answer)~50%100%

* A fair reading of the version 2.0 numbers: this benchmark reflects today's traffic. 310 of the 853 images (27 of the 73 models) are vehicles introduced after the version 2.0 catalog was built — 2020–2026 releases and Chinese EV brands — which that engine cannot identify by design. Version 2.0 was built for the market of its era; the road changed. Version 3.0's improvement comes from both a stronger classifier and a recognition catalog rebuilt for the current market: even restricted to models the previous catalog does contain, brand accuracy rises from 41.8% to 99.3%.

License plate number, province, color, and orientation reading are unchanged from version 2.0. The version 3.0 make/model engine is deterministic — the same vehicle produces the same brand and model on every scan, including tight grille close-ups from parking-gate and village-entrance cameras.

Data Security and Compliance

The public cloud API is GDPR- and PDPA-compliant: uploaded images are processed in memory and are not retained after the response is returned. The service runs entirely on on-premise-capable infrastructure — no image is sent to any external service — and a fully self-contained on-premise deployment is available in which no photograph leaves your infrastructure. Contact us for on-premise licensing.

Technical Reference

Endpoints

MethodURLBody
POSThttps://api.iapp.co.th/v3/store/smart-city/license-plate-ocrmultipart/form-data, field file
POSThttps://api.iapp.co.th/v3/store/smart-city/license-plate-ocr/base64JSON, {"image": "<base64>"}
POSThttps://api.iapp.co.th/v3/store/smart-city/license-plate-ocr-v3multipart/form-data, field file (v3.0 preview)
POSThttps://api.iapp.co.th/v3/store/smart-city/license-plate-ocr-v3/base64JSON, {"image": "<base64>"} (v3.0 preview)

All endpoints require the apikey header.

Response fields

All fields up to vehicle_year are returned by both engine versions with identical names and formats. The fields after it are new in version 3.0 (additive) — they appear on the preview endpoints now and on the main endpoints from 11 September 2026. Clients that do not use them can simply ignore them.

FieldDescription
confConfidence score of the license plate recognition, in percent.
countryCountry of the license plate (th, my, mm, la).
infer_time(s)Processing time in seconds.
is_missing_plateWhether the vehicle has no visible plate: "yes" or "no".
is_vehicleWhether a vehicle is present in the image: "yes" or "no".
lp_numberThe license plate number.
message"success" or an error message.
provinceRegistered province, e.g. "th-10:Bangkok (กรุงเทพมหานคร)".
statusHTTP status code of the result.
vehicle_body_typeBody type, e.g. sedan, pickup, suv.
vehicle_brandVehicle make as a lowercase slug, e.g. isuzu.
vehicle_colorVehicle color.
vehicle_modelVehicle model as a lowercase slug, e.g. isuzu_d-max.
vehicle_orientationOrientation of the vehicle in the image, in degrees.
vehicle_yearYear range of the recognized model.
vehicle_make_model_slug(New in v3.0) Combined make/model slug from the v3.0 classifier.
make_model_conf(New in v3.0) Confidence score (0–1) of the make/model recognition.
vehicle_make_model_topk(New in v3.0) Top-5 make/model candidates with probabilities.
vehicle_logo_brand(New in v3.0) Brand identified independently from the vehicle's logo/grille.
logo_brand_conf(New in v3.0) Confidence score (0–1) of the logo brand identification.
vehicle_fuel_type(New in v3.0) Powertrain inferred from the identified make/model: EV, Hybrid, Plug-in Hybrid, Petrol, Diesel, or multiple when the model is sold with several powertrains. Never guessed from pixels.
vehicle_fuel_options(New in v3.0) All powertrains this model is sold with in Thailand.
country_support_level(New in v3.0) Support level for the plate's country: production, beta, or detection_only.

Example response (version 3.0)

{
"conf": 93.39286804,
"country": "th",
"infer_time(s)": 0.502,
"is_missing_plate": "no",
"is_vehicle": "yes",
"lp_number": "ขก5337",
"message": "success",
"province": "th-83:Phuket (ภูเก็ต)",
"status": 200,
"vehicle_body_type": "pickup",
"vehicle_brand": "isuzu",
"vehicle_color": "red",
"vehicle_model": "isuzu_d-max",
"vehicle_orientation": "315",
"vehicle_year": "2020-present",
"vehicle_make_model_slug": "isuzu_d_max",
"make_model_conf": 0.8288,
"vehicle_make_model_topk": [
{ "slug": "isuzu_d_max", "prob": 0.8288 },
{ "slug": "isuzu_mu_x", "prob": 0.0337 }
],
"vehicle_logo_brand": "Isuzu",
"logo_brand_conf": 0.8913,
"vehicle_fuel_type": "Diesel",
"vehicle_fuel_options": ["Diesel"],
"country_support_level": "production"
}

Code examples

curl -X POST https://api.iapp.co.th/v3/store/smart-city/license-plate-ocr \
-H "apikey: YOUR_API_KEY" \
-F "file=@/path/to/vehicle.jpg"

To call the version 3.0 preview, replace /license-plate-ocr with /license-plate-ocr-v3 in any example above — the request format is identical.

Limitations

  • Supported file formats: JPEG, JPG, PNG. Maximum file size: 2 MB.
  • Fuel type is inferred from the identified make and model through a maintained powertrain table, never from the image itself. Models sold with several powertrains return multiple with the full option list, because powertrain is not determinable from a single photograph.
  • Neighbor-country plates: Malaysia is production, Myanmar is beta, Laos is detection-only (country_support_level).

Changelog

Version 3.0.0 - 2026-08-28

New vehicle make/model engine — no API changes required

  • Vehicle recognition accuracy dramatically improved — brand accuracy 99.4% (up from 38.5%) and make+model 99.18% (up from 10.4%) on an 853-image benchmark of today's Thai traffic. Much of the gap comes from the benchmark including 2020–2026 models and EV brands that the previous catalog predates (see Accuracy).
  • Newest cars supported — the recognition catalog is rebuilt for the current Thai car market: 73 models across 17 brands, including 2020–2026 models and Chinese EV brands (BYD, MG, GWM, Neta and more).
  • New: fuel type / EV detectionvehicle_fuel_type and vehicle_fuel_options, inferred from the identified make/model.
  • New: confidence scoresmake_model_conf, vehicle_make_model_topk, and an independent logo-brand verification (vehicle_logo_brand, logo_brand_conf).
  • New: neighbor-country plates — Malaysia (production), Myanmar (beta), Laos (detection-only), reported via country_support_level.
  • Robust on gate cameras — brand/model stays correct and deterministic on tight grille close-up framing typical of parking and village entrance cameras.
  • 100% backward compatible — same endpoints, same request format, every existing response field keeps its exact name and format; all new fields are additive.
  • Staged rollout — v3.0 serves the preview endpoints (…/license-plate-ocr-v3) from 28 August 2026; the main endpoints switch from v2.0 to v3.0 on 11 September 2026. Both are billed at the same 0.75 IC per request.

Version 2.0 - 2023-02-16

Added vehicle body type, vehicle year range, vehicle orientation, is_vehicle, and is_missing_plate.

Version 1.2 - 2023-01-16

Improved overall accuracy of plate number, province, vehicle color, brand, and model reading (92.28% overall exact match on the 100-image evaluation set).

Version 1.1 - 2021-12-23

Improved accuracy of plate number, province, vehicle type, color, brand, and model reading (86.49% overall exact match on the 118-image evaluation set).

Version 1.0 - 2021-09-12

First release: Thai license plate reading with vehicle type, brand, color, and registered province.