Skip to main content

🚗 OCR ป้ายทะเบียนรถยนต์ไทย

0.75 ICต่อคำขอ
v2.0 Active ก.พ. 2023 POST /v3/store/smart-city/license-plate-ocr

ยินดีต้อนรับสู่ API OCR ป้ายทะเบียนรถยนต์ไทย เวอร์ชัน 2.0 ซึ่งเป็นผลิตภัณฑ์ AI ที่พัฒนาโดย บริษัท ไอแอพพ์เทคโนโลยี จำกัด API ของเราออกแบบมาเพื่อดึงข้อมูลหมายเลขป้ายทะเบียนและข้อมูลยานพาหนะจากรูปภาพด้วยความแม่นยำและความเร็วสูง API รองรับรูปแบบไฟล์ JPEG, JPG, PNG และสามารถประมวลผลรูปภาพยานพาหนะได้ใน 1-2 วินาที

ลองใช้ Demo!

Example Images (Click to try)

Example 1Example 2

เริ่มต้นใช้งาน

  1. ข้อกำหนดเบื้องต้น

    • API Key จาก ไอแอพพ์เทคโนโลยี
    • รูปภาพยานพาหนะที่มีป้ายทะเบียน
    • รูปแบบไฟล์ที่รองรับ: JPEG, JPG, PNG
    • ขนาดไฟล์สูงสุด: 2MB
  2. เริ่มต้นใช้งานอย่างรวดเร็ว

    • ประมวลผลรวดเร็ว (1-2 วินาทีต่อรูปภาพ)
    • การแยกข้อความที่มีความแม่นยำสูง (ความแม่นยำโดยรวม 92.28%)
    • รองรับแบรนด์และประเภทรถยนต์หลายยี่ห้อ
  3. คุณสมบัติหลัก

    • การแยกฟิลด์โดยละเอียดรวมถึง:
      • หมายเลขป้ายทะเบียน
      • ยี่ห้อรถยนต์
      • ประเภทรถยนต์
      • สีรถยนต์
      • จังหวัดที่จดทะเบียน
    • การตรวจจับยานพาหนะ
    • การตรวจจับป้ายทะเบียนที่หายไป
    • รูปแบบการตอบสนอง JSON ที่ยืดหยุ่น
  4. ความปลอดภัยและการปฏิบัติตามข้อกำหนด

    • สอดคล้องกับ GDPR และ PDPA
    • ไม่มีการเก็บข้อมูลหลังการประมวลผล
จะรับ API Key ได้อย่างไร?

กรุณาไปที่หน้า การจัดการ API Key เพื่อดู API Key ที่มีอยู่ของคุณหรือขอใหม่

API Endpoints

EndpointMethodDescriptionCost
/v3/store/smart-city/license-plate-ocr
Legacy: /iapp_license_plate_recognition_v1_file
POSTแยกข้อมูลป้ายทะเบียนรถยนต์ไทยจากไฟล์รูปภาพ0.75 IC ต่อคำขอ
/v3/store/smart-city/license-plate-ocr/base64
Legacy: /iapp_license_plate_recognition_v1_base64
POSTแยกข้อมูลป้ายทะเบียนรถยนต์ไทยจากรูปภาพ base640.75 IC ต่อคำขอ

ตัวอย่าง

1. ตัวอย่างการใช้งานจริงกับยานพาหนะ

ตัวอย่างที่ 1

Vehicle

ตัวอย่างที่ 2

Vehicle

ตัวอย่างที่ 3

Vehicle

2. ตัวอย่างไฟล์ยานพาหนะ

Vehicle

คำขอ

curl --location 'https://api.iapp.co.th/license-plate-recognition/file' \
--header 'apikey: {YOUR API KEY}' \
--form 'file=@"{YOUR UPLOADED FILE}"'

การตอบสนอง

{
"conf": 93.30192566,
"country": "th",
"infer_time(s)": 0.18,
"is_missing_plate": "no",
"is_vehicle": "yes",
"lp_number": "กร5539",
"message": "success",
"province": "th-14:Phra Nakhon Si Ayutthaya (พระนครศรีอยุธยา)",
"status": 200,
"vehicle_body_type": "tractor-trailer",
"vehicle_brand": "honda",
"vehicle_color": "white",
"vehicle_model": "honda_jazz",
"vehicle_orientation": "135",
"vehicle_year": "2010-2014"
}

คุณสมบัติและความสามารถ

คุณสมบัติหลัก

  • การรู้จำป้ายทะเบียน: แยกและอ่านหมายเลขป้ายทะเบียนรถยนต์ไทยจากรูปภาพได้อย่างแม่นยำ
  • ข้อมูลยานพาหนะที่ครอบคลุม: ระบุและให้รายละเอียด เช่น:
    • หมายเลขป้ายทะเบียน
    • จังหวัดที่จดทะเบียน
    • ยี่ห้อรถยนต์
    • รุ่นรถยนต์
    • ปีที่ผลิต
    • ทิศทางของยานพาหนะ (หน้า, ข้าง, หลัง)
    • ประเภทของยานพาหนะ (เช่น รถเก๋ง, SUV, รถบรรทุก)
  • ความแม่นยำสูง: ใช้อัลกอริทึมคอมพิวเตอร์วิทัศน์ขั้นสูงเพื่อมอบการรู้จำที่แม่นยำแม้ในสภาพแสงและสภาพแวดล้อมที่ท้าทาย

ความสามารถที่รองรับ

  • การประมวลผลแบบเรียลไทม์: เหมาะสำหรับแอปพลิเคชันที่ต้องการเวลา เช่น การเก็บค่าผ่านทางและการติดตามยานพาหนะ
  • การประมวลผลแบบแบทช์: จัดการรูปภาพหลายภาพได้อย่างมีประสิทธิภาพสำหรับแอปพลิเคชันขนาดใหญ่
  • การปรับตัวตามสภาพแวดล้อม: ทำงานได้อย่างน่าเชื่อถือในสถานการณ์ต่างๆ รวมถึงสภาพแสงน้อยและแสงสะท้อนสูง

กรณีการใช้งาน

  • การเก็บค่าผ่านทางอัตโนมัติ: ปรับปรุงกระบวนการชำระค่าผ่านทางโดยการรู้จำยานพาหนะและป้ายทะเบียนแบบเรียลไทม์
  • ระบบจัดการที่จอดรถ: บันทึกการเข้า-ออกยานพาหนะในลานจอดรถโดยอัตโนมัติ
  • การติดตามยานพาหนะ: เพิ่มประสิทธิภาพการจัดการโลจิสติกส์และยานพาหนะโดยการรวมการรู้จำป้ายทะเบียนสำหรับการระบุยานพาหนะ
  • ความปลอดภัยและการเฝ้าระวัง: ปรับปรุงระบบรักษาความปลอดภัยด้วยการติดตามและระบุยานพาหนะ

ความสามารถเพิ่มเติม

  • การผสานรวมที่ง่าย: ให้ API แบบ RESTful สำหรับการผสานรวมเข้ากับแอปพลิเคชันที่มีอยู่ได้อย่างราบรื่น
  • รวดเร็วและเชื่อถือได้: มอบเวลาตอบสนองที่รวดเร็วและประสิทธิภาพที่สม่ำเสมอสำหรับการใช้งานจริง
  • ขยายได้และปรับขนาดได้: รองรับคุณสมบัติและการขยายเพิ่มเติมตามความต้องการของผู้ใช้ที่เปลี่ยนแปลงไป

ข้อมูลอ้างอิง API

Endpoint

POST https://api.iapp.co.th/license-plate-recognition/file

Headers

NameTypeDescription
apikeyStringAPI Key

Parameters

NameTypeInRequiredDescription
vehicle_imageobjectbodyYesรูปภาพประกอบด้วยยานพาหนะ

คำอธิบายการตอบสนอง

Parametersคำอธิบาย
confคะแนนความมั่นใจของการรู้จำป้ายทะเบียนเป็นเปอร์เซ็นต์
infer_time(s)เวลาที่ใช้ในการอนุมานเป็นวินาที
is_missing_plateบ่งชี้ว่ามีป้ายทะเบียนหายไปในรูปภาพหรือไม่ ค่าที่เป็นไปได้: "yes" หรือ "no"
is_vehicleบ่งชี้ว่ามียานพาหนะอยู่ในรูปภาพหรือไม่ ค่าที่เป็นไปได้: "yes" หรือ "no"
lp_numberหมายเลขป้ายทะเบียนที่รู้จำได้จากรูปภาพ
messageข้อความตอบกลับ API ค่าที่เป็นไปได้: "success" หรือ "error"
provinceจังหวัดของยานพาหนะที่จดทะเบียนตามที่ระบุโดยป้ายทะเบียน
statusรหัสสถานะ HTTP ของการตอบกลับ API
vehicle_body_typeประเภทตัวถังของยานพาหนะที่รู้จำได้
vehicle_brandยี่ห้อของยานพาหนะที่รู้จำได้
vehicle_colorสีของยานพาหนะที่รู้จำได้
vehicle_modelรุ่นของยานพาหนะที่รู้จำได้
vehicle_orientationทิศทางของยานพาหนะที่รู้จำได้ในรูปภาพ
vehicle_yearช่วงปีของรุ่นยานพาหนะที่รู้จำได้

ตัวอย่างโค้ด

Python

import requests

url = "https://api.iapp.co.th/license-plate-recognition/file"

payload = {}
files=[
('file',('{YOUR UPLOADED FILE NAME}',open('{YOUR UPLOADED FILE PATH}','rb'),'image/png'))
]
headers = {
'apikey': {YOUR API KEY}
}

response = requests.request("POST", url, headers=headers, data=payload, files=files)

print(response.text)

JavaScript

const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');
let data = new FormData();
data.append('file', fs.createReadStream('{YOUR UPLOADED FILE PATH}'));

let config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://api.iapp.co.th/license-plate-recognition/file',
headers: {
'apikey': '{YOUR API KEY}',
...data.getHeaders()
},
data : data
};

axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});

PHP

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.iapp.co.th/license-plate-recognition/file',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => array('file'=> new CURLFILE('{YOUR UPLOADED FILE PATH}')),
CURLOPT_HTTPHEADER => array(
'apikey: {YOUR API KEY}'
),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

Swift

let parameters = [
[
"key": "file",
"src": "{YOUR UPLOADED FILE PATH}",
"type": "file"
]] as [[String: Any]]

let boundary = "Boundary-\(UUID().uuidString)"
var body = Data()
var error: Error? = nil
for param in parameters {
if param["disabled"] != nil { continue }
let paramName = param["key"]!
body += Data("--\(boundary)\r\n".utf8)
body += Data("Content-Disposition:form-data; name=\"\(paramName)\"".utf8)
if param["contentType"] != nil {
body += Data("\r\nContent-Type: \(param["contentType"] as! String)".utf8)
}
let paramType = param["type"] as! String
if paramType == "text" {
let paramValue = param["value"] as! String
body += Data("\r\n\r\n\(paramValue)\r\n".utf8)
} else {
let paramSrc = param["src"] as! String
let fileURL = URL(fileURLWithPath: paramSrc)
if let fileContent = try? Data(contentsOf: fileURL) {
body += Data("; filename=\"\(paramSrc)\"\r\n".utf8)
body += Data("Content-Type: \"content-type header\"\r\n".utf8)
body += Data("\r\n".utf8)
body += fileContent
body += Data("\r\n".utf8)
}
}
}
body += Data("--\(boundary)--\r\n".utf8);
let postData = body

var request = URLRequest(url: URL(string: "https://api.iapp.co.th/license-plate-recognition/file")!,timeoutInterval: Double.infinity)
request.addValue("{YOUR API KEY}", forHTTPHeaderField: "apikey")
request.addValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")

request.httpMethod = "POST"
request.httpBody = postData

let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else {
print(String(describing: error))
return
}
print(String(data: data, encoding: .utf8)!)
}

task.resume()

Kotlin

val client = OkHttpClient()
val mediaType = "text/plain".toMediaType()
val body = MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("file","{YOUR UPLOADED FILE NAME}",
File("{YOUR UPLOADED FILE PATH}").asRequestBody("application/octet-stream".toMediaType()))
.build()
val request = Request.Builder()
.url("https://api.iapp.co.th/license-plate-recognition/file")
.post(body)
.addHeader("apikey", "{YOUR API KEY}")
.build()
val response = client.newCall(request).execute()

Java

OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("file","{YOUR UPLOADED FILE NAME}",
RequestBody.create(MediaType.parse("application/octet-stream"),
new File("{YOUR UPLOADED FILE PATH}")))
.build();
Request request = new Request.Builder()
.url("https://api.iapp.co.th/license-plate-recognition/file")
.post(body)
.addHeader("apikey", "{YOUR API KEY}")
.build();
Response response = client.newCall(request).execute();

Dart

var headers = {
'apikey': '{YOUR API KEY}'
};
var request = http.MultipartRequest('POST', Uri.parse('https://api.iapp.co.th/license-plate-recognition/file'));
request.files.add(await http.MultipartFile.fromPath('file', '{YOUR UPLOADED FILE PATH}'));
request.headers.addAll(headers);

http.StreamedResponse response = await request.send();

if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}

ความแม่นยำและประสิทธิภาพ

เวอร์ชัน 1.2 (2022-01-16)

การประเมินโมเดลตามข้อมูลรูปภาพยานพาหนะของ iApp (100 รูป)

ความแม่นยำแบบตรงทั้งหมด (Exact Match Accuracy)

ModelAccuracy (%)
Vehicle Detection Model99.00%
Vehicle License-plate Detection Model99.00%
License-plate Character + Number Recognition Model97.00%
License-plate Province Model99.00%
Vehicle Brand95.00%
Vehicle Color85.00%
Vehicle Car Model72.00%
Overall Accuracy92.28%

เวอร์ชัน 1.1 (2021-12-23)

การประเมินโมเดลตามข้อมูลรูปภาพยานพาหนะของ iApp (118 รูป)

ความแม่นยำแบบตรงทั้งหมด (Exact Match Accuracy)

ModelAccuracy (%)
Vehicle Detection Model96.40%
Vehicle License-plate Detection Model95.65%
License-plate Character + Number Recognition Model94.82%
License-plate Province Model90.67%
Vehicle Brand81.30%
Vehicle Color80.50%
Vehicle Car Model66.10%
Overall Accuracy86.49%

ประวัติ/บันทึกการเปลี่ยนแปลง

เวอร์ชัน 1.0 - 2021-09-12

เพิ่ม

  • เวอร์ชันเริ่มต้นแรก แนะนำ OCR ป้ายทะเบียนของ iApp

  • เวอร์ชันนี้ยังแสดงการรู้จำคุณสมบัติยานพาหนะ:

    • ประเภทรถยนต์
    • ยี่ห้อรถยนต์
    • สีรถยนต์
    • จังหวัดที่จดทะเบียนป้ายทะเบียน

    ความแม่นยำของพารามิเตอร์เหล่านี้จะได้รับการปรับปรุงและเผยแพร่อย่างเป็นทางการในเวอร์ชันถัดไป

เวอร์ชัน 1.1 - 2021-12-23

ปรับปรุง

ความแม่นยำของพารามิเตอร์ต่อไปนี้ของระบบ API ได้รับการปรับปรุง

  • หมายเลขป้ายทะเบียน
  • จังหวัด
  • ประเภทรถยนต์
  • สีรถยนต์
  • ยี่ห้อรถยนต์
  • รุ่นรถยนต์

เวอร์ชัน 1.2 - 2023-01-16

ปรับปรุงความแม่นยำโดยรวม

  • หมายเลขป้ายทะเบียน
  • จังหวัด
  • สีรถยนต์
  • ยี่ห้อรถยนต์
  • รุ่นรถยนต์

เวอร์ชัน 2.0 - 2023-02-16

เพิ่มคุณสมบัติใหม่

มีการเพิ่มคุณสมบัติใหม่ดังนี้:

  • ประเภทตัวถังรถยนต์
  • ช่วงปีของรถยนต์
  • ทิศทางของยานพาหนะในรูปภาพ
  • ธง "มียานพาหนะ" (Is Vehicle Flag)
  • ธง "ป้ายทะเบียนหาย" (Is Missing Plate Flag)

ตัวอย่างโค้ด

Curl

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

Python

import requests

url = "https://api.iapp.co.th/v3/store/smart-city/license-plate-ocr"
files = {"file": ("("/path/to/license_plate.jpg", "rb"))}
headers = {"apikey": "YOUR_API_KEY"}

response = requests.post(url, headers=headers, files=files)
print(response.json())

JavaScript

const axios = require("axios");
const FormData = require("form-data");
const fs = require("fs");

let data = new FormData();
data.append("file", fs.createReadStream("/path/to/license_plate.jpg"));

let config = {
method: "post",
url: "https://api.iapp.co.th/v3/store/smart-city/license-plate-ocr",
headers: {
apikey: "YOUR_API_KEY",
...data.getHeaders(),
},
data: data,
};

axios(config)
.then((response) => console.log(response.data))
.catch((error) => console.log(error));

PHP

<?php
$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.iapp.co.th/v3/store/smart-city/license-plate-ocr',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => array(
'file'=> new CURLFILE('/path/to/license_plate.jpg')
),
CURLOPT_HTTPHEADER => array(
'apikey: YOUR_API_KEY'
),
));

$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>

Swift

import Foundation

let url = URL(string: "https://api.iapp.co.th/v3/store/smart-city/license-plate-ocr")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.addValue("YOUR_API_KEY", forHTTPHeaderField: "apikey")

let boundary = "Boundary-\(UUID().uuidString)"
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")

var body = Data()
body.append("--\(boundary)\r\n".data(using: .utf8)!)
body.append("Content-Disposition: form-data; name=\"file\"; filename=\"file.jpg\"\r\n".data(using: .utf8)!)
body.append("Content-Type: image/jpeg\r\n\r\n".data(using: .utf8)!)

if let fileData = try? Data(contentsOf: URL(fileURLWithPath: "/path/to/license_plate.jpg")) {
body.append(fileData)
}
body.append("\r\n--\(boundary)--\r\n".data(using: .utf8)!)

request.httpBody = body

let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let data = data {
print(String(data: data, encoding: .utf8)!)
}
}
task.resume()

Kotlin

import okhttp3.*
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.RequestBody.Companion.asRequestBody
import java.io.File

val client = OkHttpClient()

val file = File("/path/to/license_plate.jpg")
val requestBody = MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("file", file.name, file.asRequestBody("image/jpeg".toMediaTypeOrNull()))
.build()

val request = Request.Builder()
.url("https://api.iapp.co.th/v3/store/smart-city/license-plate-ocr")
.addHeader("apikey", "YOUR_API_KEY")
.post(requestBody)
.build()

client.newCall(request).execute().use { response ->
println(response.body?.string())
}

Java

import okhttp3.*;
import java.io.File;

OkHttpClient client = new OkHttpClient();

File file = new File("/path/to/license_plate.jpg");

RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("file", file.getName(),
RequestBody.create(MediaType.parse("image/jpeg"), file))
.build();

Request request = new Request.Builder()
.url("https://api.iapp.co.th/v3/store/smart-city/license-plate-ocr")
.addHeader("apikey", "YOUR_API_KEY")
.post(requestBody)
.build();

try (Response response = client.newCall(request).execute()) {
System.out.println(response.body().string());
}

Dart

import 'package:http/http.dart' as http;

var request = http.MultipartRequest(
'POST',
Uri.parse('https://api.iapp.co.th/v3/store/smart-city/license-plate-ocr')
);

request.files.add(await http.MultipartFile.fromPath(
'file',
'/path/to/license_plate.jpg'
));

request.headers.addAll({
'apikey': 'YOUR_API_KEY'
});

var response = await request.send();
var responseBody = await response.stream.bytesToString();
print(responseBody);

ราคา

ชื่อบริการ AI APIEndpointIC ต่อคำขอOn-Premise
การรู้จำภาพป้ายทะเบียนรถยนต์ไทย (LPR)iapp_license_plate_recognition_v1_base640.75 IC/Requestติดต่อ
iapp_license_plate_recognition_v1_file0.75 IC/Request