🚗 泰国车牌OCR
0.75 IC每次请求
欢迎使用泰国车牌OCR API,版本2.0,这是由艾艾普科技有限公司开发的一款AI产品。我们的API旨在高精度、快速地从图像中提取车牌号码和车辆信息。API支持JPEG、JPG、PNG文件格式,并能在1-2秒内处理车辆图像。
试用演示!
入门指南
-
先决条件
- 来自艾艾普科技的API密钥
- 包含车牌的车辆图像
- 支持的文件格式:JPEG、JPG、PNG
- 最大文件大小:2MB
-
快速入门
- 快速处理(每张图片1-2秒)
- 高精度文本提取(总体准确率92.28%)
- 支持多种车辆品牌和类型
-
主要功能
- 详细字段提取,包括:
- 车牌号码
- 车辆品牌
- 车辆类型
- 车辆颜色
- 注册省份
- 车辆检测
- 缺失车牌检测
- 灵活的JSON响应格式
- 详细字段提取,包括:
-
安全与合规
- 符合GDPR和PDPA规定
- 处理后不保留数据
如何获取API密钥?
请访问API密钥管理页面查看您现有的API密钥或申请新密钥。
API端点
| 端点 | 方法 | 描述 | 费用 |
|---|---|---|---|
/v3/store/smart-city/license-plate-ocr旧版: /iapp_license_plate_recognition_v1_file | POST | 从图像文件提取泰国车牌信息 | 每请求0.75 IC |
/v3/store/smart-city/license-plate-ocr/base64旧版: /iapp_license_plate_recognition_v1_base64 | POST | 从base64图像提取泰国车牌信息 | 每请求0.75 IC |
示例
1. 车辆真实应用示例
示例 1

示例 2

示例 3

2. 车辆文件示例

请求
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、卡车)
- 高精度: 利用先进的计算机视觉算法,即使在具有挑战性的光照和环境条件下也能提供精确的识别。
支持的能力
- 实时处理: 适用于收费站和车辆跟踪等时间敏感的应用。
- 批量处理: 高效处理多张图像,适用于大规模应用。
- 环境适应性: 在各种场景下都能可靠工作,包括低光照和高眩光环境。
用例
- 自动收费: 通过实时识别车辆和车牌来简化收费流程。
- 停车管理系统: 自动化停车场的车辆进出记录。
- 车辆跟踪: 通过集成车牌识别进行车辆身份识别,提高物流和车队管理能力。
- 安防与监控: 通过基于车辆的跟踪和身份识别来增强安全系统。
附加能力
- 易于集成: 提供RESTful API,可无缝集成到现有应用程序中。
- 快速可靠: 提供快速的响应时间和稳定的性能,适用于实际部署。
- 可扩展且可扩展: 根据不断变化的用户需求支持附加功能和扩展。
API参考
端点
POST https://api.iapp.co.th/license-plate-recognition/file
请求头
| 名称 | 类型 | 描述 |
|---|---|---|
| apikey | String | API 密钥 |
参数
| 参数 | 类型 | 位置 | 是否必填 | 描述 |
|---|---|---|---|---|
| vehicle_image | object | body | 是 | 包含车辆的图片 |
响应说明
| 参数 | 说明 |
|---|---|
| conf | 车牌识别的置信度得分(百分比)。 |
| infer_time(s) | 推理所需时间(秒)。 |
| is_missing_plate | 指示图像中是否存在缺失的车牌。可能的值:“yes”或“no”。 |
| is_vehicle | 指示图像中是否存在车辆。可能的值:“yes”或“no”。 |
| lp_number | 从图像中识别出的车牌号码。 |
| message | API响应消息。可能的值:“success”或“error”。 |
| province | 由车牌识别出的注册车辆的省份。 |
| status | API响应的HTTP状态码。 |
| 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")
.method("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-Vechicle 图像数据(100张图片)的模型评估
精确匹配准确率
| 模型 | 准确率 (%) |
|---|---|
| 车辆检测模型 | 99.00% |
| 车辆车牌检测模型 | 99.00% |
| 车牌字符+号码识别模型 | 97.00% |
| 车牌省份模型 | 99.00% |
| 车辆品牌 | 95.00% |
| 车辆颜色 | 85.00% |
| 车辆车型 | 72.00% |
| 总体准确率 | 92.28% |
版本 1.1 (2021-12-23)
基于 iApp-vehicle 图像数据(118张图片)的模型评估
精确匹配准确率
| 模型 | 准确率 (%) |
|---|---|
| 车辆检测模型 | 96.40% |
| 车辆车牌检测模型 | 95.65% |
| 车牌字符+号码识别模型 | 94.82% |
| 车牌省份模 型 | 90.67% |
| 车辆品牌 | 81.30% |
| 车辆颜色 | 80.50% |
| 车辆车型 | 66.10% |
| 总体准确率 | 86.49% |
历史/变更日志
版本 1.0 - 2021-09-12
新增
-
首个初始版本,引入艾艾普的车牌OCR。
-
此版本还展示了车辆特征的识别:
- 车辆类型。
- 车辆品牌。
- 车辆颜色。
- 车牌注册的省份。
这些参数的准确率将在后续版本中改进并正式发布。
版本 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;
?>

