百度AI-车牌号识别接口描述
支持识别中国大陆机动车蓝牌、黄牌(单双行)、绿牌、大型新能源(黄绿)、领使馆车牌、警牌、武警牌(单双行)、军牌(单双行)、港澳出入境车牌、农用车牌、民航车牌、非机动车车牌(北京地区)的地域编号和车牌号,并能同时识别图像中的多张车牌。
官网地址:https://ai.baidu.com/ai-doc/OCR/ck3h7y191
代码示例
Token验证代码如下
package com.picture.util; import org.json.JSONObject; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.List; import java.util.Map; /** * @Description :Token验证 * @author :ybwx * @date : 2024年4月04日 */ public class AuthService { // 获取token地址 private static String authHost = "https://aip.baidubce.com/oauth/2.0/token?"; /** * 获取API访问token 该token有一定的有效期,需要自行管理,当失效时需重新获取. * * @param ak * - 百度云官网获取的 API Key * @param sk * - 百度云官网获取的 Securet Key */ public static String getAuth(String ak, String sk) { String getAccessTokenUrl = authHost // 1. grant_type为固定参数 + "grant_type=client_credentials" // 2. 官网获取的 API Key + "&client_id=" + ak // 3. 官网获取的 Secret Key + "&client_secret=" + sk; try { URL realUrl = new URL(getAccessTokenUrl); // 打开和URL之间的连接 HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection(); connection.setRequestMethod("GET"); connection.connect(); // 获取所有响应头字段 Map<String, List<String>> map = connection.getHeaderFields(); // 遍历所有的响应头字段 for (String key : map.keySet()) { System.err.println(key + "--->" + map.get(key)); } // 定义 BufferedReader输入流来读取URL的响应 BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String result = ""; String line; while ((line = in.readLine()) != null) { result += line; } /** * 返回结果示例 */ System.err.println("result:" + result); JSONObject jsonObject = new JSONObject(result); String access_token = jsonObject.getString("access_token"); return access_token; } catch (Exception e) { System.err.printf("获取token失败!"); e.printStackTrace(System.err); } return null; } }
百度车牌识别工具类示例:
package com.picture.util; import java.net.URLEncoder; import java.util.Base64; /** * 百度车牌识别工具类 * @Description : * @author :ybwx * @date : 2024年4月02日 */ public class BaiduCarDiscern { // 车牌识别接口 private static String url = "https://aip.baidubce.com/rest/2.0/ocr/v1/license_plate"; // 官网获取的 API Key private static String clientId = "百度AI申请的车牌识别API Key"; // 官网获取的 Secret Key private static String clientSecret = "百度AI申请的车牌识别的Secret Key"; public static String licensePlate() { try { // 本地文件路径 String filePath = "D:\\work\\eclipse\\sungoal_bak\\airCar\\web\\upload\\ImgFile\\test.jpg"; byte[] imgData = FileUtil.readFileByBytes(filePath); String imgStr = Base64.getEncoder().encodeToString(imgData); String imgParam = URLEncoder.encode(imgStr, "UTF-8"); String param = "image=" + imgParam; // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。 String accessToken = AuthService.getAuth(clientId, clientSecret); String result = HttpUtil.post(url, accessToken, param); System.out.println(result); return result; } catch (Exception e) { e.printStackTrace(); } return null; } public static void main(String[] args) { BaiduCarDiscern.licensePlate(); } }
识别结果示例:
{ "words_result": { "number": "豫S67A88", "vertexes_location": [{ "x": 191, "y": 529 }, { "x": 514, "y": 545 }, { "x": 509, "y": 635 }, { "x": 186, "y": 618 }], "color": "blue", "probability": [0.9999939203, 0.9999998808, 1, 1, 1, 1, 0.9999998808] }, "log_id": 1779894101534333746 }