License Plate Recognition API

License Plate Recognition API - Platebber (also known as LPTR API or ALPTR API) is a cross browsers REST API which get a JSON input with a still photo (as base64 encoded string), also some settings as optional language code (among 60 supported languages), optional crop photo(s) of registration plates (Yes/No) and returns a JSON string which contains plate(s) text, confidence score, timestamp, vertices for bounding boxes of license plates, base64 encoded string(s) of crop photo(s) (if set to Yes as input). If you need a License Plate Blur API which blurs the license plates, use this license plate blur API, PlateBlurer, here: https://gatiosoft.ro/license-plate-blur-api.aspx Of course, there are some limitations in order to get a higher accuracy. We recommend properly exposed, unobstructed JPEG photos at 1920x1080 (full HD resolution) where ratio between height of the license plate and height of entire picture should be at least 1:15. For ratios like 1:16, 1:17, 1:18 and so on the accuracy is lower and the AI algorithm may not see and read the license plate and the number on the registration plate. We do not store pictures. Also, the quality and the angles of the LPR camera are very important and it contribute to a higher reading accuracy. It should have varifocal lenses, high shutter speed, good infrared lighting beam, full HD resolution. Please see our example sketches here.

Allthough this Automatic Plate Recognition API (currently we do not offer a license plate recognition sdk) is intended for software development and therefore developers, we have also here an license plate recognition online application that may be used to check the input and output JSONs of the API. The necessary steps are written below, basically for this real time license plate recognition API you send an authorized POST request in JSON format to the API endpoint and you get as JSON response the output as described below through parameters and examples.

This Number Plate Recognition API is useful for a large number of domains like: parking, traffic contorization, check points, private domains, borders, vignetting etc.You own the commercial copyright of the resulted JSON with no additional fee meaning you may use it in your own apps for sale. For using our license plate recognition API and/or APP you must create an account (free of charge, no card required), activate it from your received email, login and then start your TRIAL package with no fees as you can see at our pricing packages. After you have tested the API and/or APP and you are satisfied, you may buy a paid package. You will always see at your Admin Console page the real resources consumption in real time, your invoices, you may see/edit/delete your profile or export log consents as GDPR instructed, you may read our FAQs.

lpr camera side angle
lpr camera tilt angle
lpr camera side angle example
lpr camera tilt angle example

License Plate Recognition APP

Photo File
Language Code
Crop Plate



API Endpoint (method POST):
https://gatiosoft.ro/platebber.aspx
Headers:
Authorization: Basic //Your username:password are base64 encoded string
Content-Type: application/json
Accept: application/json
JSON Request Body (change inputs here and see in real time below):
                   {
  "base64ImageString": "iVBORw0KGgoAAAA...base64 encoded string photo...GAAAAAElFTkSuQmCC",
  "languageCode": "auto",
  "plate_output": "no"
}
               
JSON Response From API (change inputs here and see in real time below):
[
  {
    "id": "license_plate",
    "description": "License plate",
    "timestamp": "2020-04-15 06:53:36",
    "bounding_box_confidence": 0.92061305046081543,
    "x1": 161,
    "y1": 237,
    "x2": 1112,
    "y2": 237,
    "x3": 1112,
    "y3": 727,
    "x4": 161,
    "y4": 727,
    "plate_text": "DGT086|LT|DGT086LT",
    "base64PlatePhoto": ""
  }
]
JSON Response (Example) From API in case of ERROR:

 [
  {
    "cd": "1001",
    "description": "The authorization header Is either empty Or isn't Basic"
  }
]

Request Parameters Table

Parameter Name
Parameter Description
base64ImageString
This is the input photo as base64 encoded string[string] from which will be detected and cropped license plate(s) bounding boxes.
languageCode
This is the language code [string] used for reading registration plates. Its default value is auto which will work on all latin languages. If you try to read text from non-latin text, then you should specify this code according to supported language codes in this table.
plate_output
This parameter [string] is used with default value NO meaning you do not need to extract (crop) a base 64 string picture of the registration plate from the input picture, otherwise set to: YES

Response Parameter Table

Parameter Name
Parameter Description
root object
This is the root object that contains a list or array of detected license plate(s) in the input photo as described below.
id
This is the id [string] of the detected license plate and it has the value  license_plate if the license plate has been detected on the input photo or value  Not found if no license plate(s) has been detected.
description
This is the id [string] of the detected license plate and it has the value  License plate if the license plate has been detected on the input photo or value  Not found if no license plate(s) has been detected.
timestamp
This is the timestamp [string] with format yyyy-MM-dd HH-mm-ss at the moment the API returns the result. Example: 2020-11-05 22:06:09.
bounding_box_confidence
This is the confidence score [real] with values between 0 and 1 for accuracy of finding a bounding box surrounding a plate number on the input photo. Example: 0.658953196.
x1
This is the upper left x coordinate [pixels] of the rectangular bounding box surrounding the license plate on the input photo. Example: 129. If no plate has been found it's value is 0.
y1
This is the upper left y coordinate [pixels] of the rectangular bounding box surrounding the license plate on the input photo. Example: 350. If no plate has been found it's value is 0.
x2
This is the upper right x coordinate [pixels] of the rectangular bounding box surrounding the license plate on the input photo. Example: 329. If no plate has been found it's value is 0.
y2
This is the upper right y coordinate [pixels] of the rectangular bounding box surrounding the license plate on the input photo. Example: 350. If no plate has been found it's value is 0.
x3
This is the lower right x coordinate [pixels] of the rectangular bounding box surrounding the license plate on the input photo. Example: 329. If no plate has been found it's value is 0.
y3
This is the lower right y coordinate [pixels] of the rectangular bounding box surrounding the license plate on the input photo. Example: 450. If no plate has been found it's value is 0.
x4
This is the lower left x coordinate [pixels] of the rectangular bounding box surrounding the license plate on the input photo. Example: 129. If no plate has been found it's value is 0.
y4
This is the lower left y coordinate [pixels] of the rectangular bounding box surrounding the license plate on the input photo. Example: 450. If no plate has been found it's value is 0.
plate_text
This is the detected text [string] of license plate. It may has separators "|" for country or other present text sequences, for example this lituanian license plate DGN006|LT|DGN006LT. If no plate has been found it's value is Not found
base64PlatePhoto
This is a base64 encoded string crop photo of the license plate extracted from the input photo only if it is required by the input parameter plate_output presented above. Otherwise, if required and license plate has been found, it will be an empty string. If no plate has been found it's value is Not found

Supported Languages For Reading License Plates

ID
1
Language
Afrikaans
Language Code
af
Observations
Latn

ID
2
Language
Albanian
Language Code
sq
Observations
Latn

ID
3
Language
Arabic
Language Code
ar
Observations
Arab; Modern Standard

ID
4
Language
Armenian
Language Code
hi
Observations
Armn

ID
5
Language
Belorussian
Language Code
be
Observations
Cyrl

ID
6
Language
Bengali
Language Code
bn
Observations
Beng

ID
7
Language
Bulgarian
Language Code
bg
Observations
Cyrl

ID
8
Language
Catalan
Language Code
ca
Observations
Latn

ID
9
Language
Chinese
Language Code
zh
Observations
Hans/Hant

ID
10
Language
Croatian
Language Code
hr
Observations
Latn

ID
11
Language
Czech
Language Code
cs
Observations
Latn

ID
12
Language
Danish
Language Code
da
Observations
Latn

ID
13
Language
Dutch
Language Code
nl
Observations
Latn

ID
14
Language
English
Language Code
en
Observations
Latn; American

ID
15
Language
Estonian
Language Code
et
Observations
Latn

ID
16
Language
Filipino
Language Code
fil
Observations
Latn

ID
17
Language
Finnish
Language Code
fi
Observations
Latn

ID
18
Language
French
Language Code
fr
Observations
Latn; European

ID
19
Language
German
Language Code
de
Observations
Latn

ID
20
Language
Greek
Language Code
el
Observations
Grek

ID
21
Language
Gujarati
Language Code
gu
Observations
Gujr

ID
22
Language
Hebrew
Language Code
iw
Observations
Hebr

ID
23
Language
Hindi
Language Code
hi
Observations
Deva

ID
24
Language
Hungarian
Language Code
hu
Observations
Latn

ID
25
Language
Icelandic
Language Code
is
Observations
Latn

ID
26
Language
Indonesian
Language Code
id
Observations
Latn

ID
27
Language
Italian
Language Code
it
Observations
Latn

ID
28
Language
Japanese
Language Code
ja
Observations
Jpan

ID
29
Language
Kannada
Language Code
kn
Observations
Knda

ID
30
Language
Khmer
Language Code
km
Observations
Khmr

ID
31
Language
Korean
Language Code
ko
Observations
Kore

ID
32
Language
Lao
Language Code
lo
Observations
Laoo

ID
33
Language
Latvian
Language Code
lv
Observations
Latn

ID
34
Language
Lithuanian
Language Code
lt
Observations
Latn

ID
35
Language
Macedonian
Language Code
mk
Observations
Cyrl

ID
36
Language
Malay
Language Code
ms
Observations
Latn

ID
37
Language
Malayalam
Language Code
ml
Observations
Mlym

ID
38
Language
Marathi
Language Code
mr
Observations
Deva

ID
39
Language
Nepali
Language Code
ne
Observations
Deva

ID
40
Language
Norwegian
Language Code
no
Observations
Latn; Bokmal

ID
41
Language
Persian
Language Code
fa
Observations
Arab

ID
42
Language
Polish
Language Code
pl
Observations
Latn

ID
43
Language
Portuguese
Language Code
pt
Observations
Latn; Brazilian

ID
44
Language
Punjabi
Language Code
pa
Observations
Guru; Gurmukhi

ID
45
Language
Romanian
Language Code
ro
Observations
Latn

ID
46
Language
Russian
Language Code
ru
Observations
Cyrl

ID
47
Language
Russian
Language Code
ru-PETR1708
Observations
Cyrl; Old Orthography

ID
48
Language
Serbian
Language Code
sr
Observations
Cyrl & Latn

ID
49
Language
Serbian
Language Code
sr-Latn
Observations
Latn

ID
50
Language
Slovak
Language Code
sk
Observations
Latn

ID
51
Language
Slovenian
Language Code
sl
Observations
Latn

ID
52
Language
Spanish
Language Code
es
Observations
Latn; European

ID
53
Language
Swedish
Language Code
sv
Observations
Latn

ID
54
Language
Tamil
Language Code
ta
Observations
Taml

ID
55
Language
Telugu
Language Code
te
Observations
Telu

ID
56
Language
Thai
Language Code
th
Observations
Thai

ID
57
Language
Turkish
Language Code
tr
Observations
Latn

ID
58
Language
Ukrainian
Language Code
uk
Observations
Cyrl

ID
59
Language
Vietnamese
Language Code
vi
Observations
Latn

ID
60
Language
Yiddish
Language Code
yi
Observations
Hebr

Response Error Codes Table

Parameter Name
Parameter Description
cd

This is the error code which may be:

  • 1001
  • 1002
  • 1003
  • 1004
  • 1005
  • 1006
  • 1007
  • 1008
  • 1009
  • 1010
  • 1011
  • 1012
  • 1013
  • 1014
  • 1015
  • 1016
  • 2001
description

This is the description of the error code which may be:

  • 1001 - The authorization header is either empty or isn't Basic.
  • 1002 - Daily requests number exceeded in TRIAL mode!
  • 1003 - Trial expired!
  • 1004 - Requests number exceeded!
  • 1005 - Package expired!
  • 1006 - No invoice!
  • 1007 - Reader is NULL for TRIAL!
  • 1008 - Cannot Read if TRIAL exists!
  • 1009 - Error connecting to database looking for TRIAL! (and a detailed description message of the encountered error)
  • 1010 - Reader is NULL for Invoice!
  • 1011 - Cannot Read if Invoice exists!
  • 1012 - Error connecting to database! (and a detailed description message of the encountered error)
  • 1013 - Input request too long! Maximum 5 MB per request are allowed / Nothing to upload
  • 1014 - Invalid request data! (and a detailed description message of the encountered error)
  • 2001 - Invalid request data after passing to the API (and a detailed description message of the encountered error)

Source Code Examples for Using Our License Plate Recognition API

                       
Imports System
Imports System.Text
imports System.Collections.Generic
Imports System.Net
Imports Newtonsoft.Json

Public Class license_plate_recognition_api
    Public Class ResponseFields
	 Public Property id As String
         Public Property description As String
         Public Property timestamp As String
         Public Property bounding_box_confidence As Double
         Public Property x1 As Integer
         Public Property y1 As Integer
         Public Property x2 As Integer
         Public Property y2 As Integer
         Public Property x3 As Integer
         Public Property y3 As Integer
         Public Property x4 As Integer
         Public Property y4 As Integer
         Public Property plate_text As String
         Public Property base64PlatePhoto As String
    End Class
    
    Public Class ErrorFields
        Public Property cd As String
        Public Property description As String
    End Class

    Protected Sub SendRequest()
        Dim Client As WebClient = New WebClient()
        Dim credentials As String = Convert.ToBase64String(Encoding.ASCII.GetBytes("your_username:your_password"))
        Client.Headers(HttpRequestHeader.Authorization) = String.Format("Basic {0}", credentials)
        Client.Headers(HttpRequestHeader.Accept) = "application/json"
        Client.Headers(HttpRequestHeader.ContentType) = "application/json"
	Client.BaseAddress = "https://gatiosoft.ro/platebber.aspx"
        Dim resString As String = ""

        Try
            Dim js As String = "Replace this string with your JSON Request Body string like in the example above on the website"
            Dim reqString As Byte() = Encoding.UTF8.GetBytes(js)
            Dim url As Uri = New Uri(Client.BaseAddress)
            Dim resByte As Byte() = Client.UploadData(url, "post", reqString)
            resString = Encoding.UTF8.GetString(resByte)

	    If resString.IndexOf("bounding_box_confidence") > 0 Then
                Dim r As ResponseFields = New ResponseFields()
                r = JsonConvert.DeserializeObject(Of ResponseFields)(resString)
                Console.Write(resString)
            Else
		Dim e As list(of ErrorFields) = New list(of ErrorFields)
		e = JsonConvert.DeserializeObject(Of list(of ErrorFields))(resString)
                Console.Write(e(0).cd)
                Console.Write(e(0).description)
            End If

            Client.Dispose()
        Catch exception As Exception
            Dim ex As System.Exception = exception
            Console.Write("ERROR: " & resString & ex.Message)
        End Try
    End Sub

    Public Shared Sub Main()
	Dim b As license_plate_recognition_api = New  license_plate_recognition_api
        b.SendRequest()
    End Sub
End Class



Platebber Online Video Presentation

License Plate Recognition API, Platebber is in the video presentation below. There are several search terms which you may use like: license plate recognition sdk, license plate recognition c#, license plate recognition online, number plate recognition, automatic license plate recognition, license plate recognition python, number plate recognition python, real time license plate recognition python, python car plate recognition, image processing car plate recognition.

 



Pricing Packages

Please choose one of the below pricing packages for start using our License Plate Recognition API and online APP!

Start TRIAL
No catches

  • 7 days TRIAL
  • Use our cloud REST API and online APP
  • Maximum 50 requests per DAY in trial period
  • You do NOT own the commercial copyright for using the API in your apps in trial period.
  • Get text for each plate number detected in one photo.
  • Get bounding boxes vertices for each plate number detected.
  • Get crop pictures of plate bounding boxes for each photo
  • Get confidence score for bounding boxes
  • 60 supported languages
  • Administration console
  • Support through online chat and/or tickets
  • We do NOT allow spam accounts for TRIAL



Monthly TIER
Popular

  • 80 USD per month
  • Use our cloud REST API and online APP
  • Maximum 10000 requests per month
  • Maximum 50 requests per MINUTE
  • You own the commercial copyright to use it in your apps.
  • Get text for each plate number detected in one photo.
  • Get bounding boxes vertices for each plate number detected.
  • Get crop pictures of plate bounding boxes for each photo
  • Get confidence score for bounding boxes
  • 60 supported languages
  • Administration console
  • Premium support through online chat and/or tickets, very supportive help and quick responses.



Yearly TIER
(15% Discount)

  • 816 USD per year
  • Use our cloud REST API and online APP
  • Maximum 10000 requests per month
  • Maximum 50 requests per MINUTE
  • You own the commercial copyright to use it in your apps.
  • Get text for each plate number detected in one photo.
  • Get bounding boxes vertices for each plate number detected.
  • Get crop pictures of plate bounding boxes for each photo
  • Get confidence score for bounding boxes
  • 60 supported languages
  • Administration console
  • Premium support through online chat and/or tickets, very supportive help and quick responses.



Note: VAT rate may be added or not, function to your country and/or if you are a taxable person or company.