实战机器学习:图片验证码识别(Java实现)
图片验证码识别,简单写下,做个备忘。
一、注册百度账号及新增一个应用,获取百度API所需的AppID,API Key,Secret Key三个参数。
访问http://ai.baidu.com,使用百度账号登录后,出现如下界面
成功创建应用后,出现类似如下界面:
二、编写Java代码
身份证正反面图片中的文字识别实现步骤如下:
1.下载百度SDK
https://ai.baidu.com/sdk#ocr中,下载java SDK
2.在MyEclipse等开发工具中,创建Java工程
下面以MyEclipse举例,创建的Java工程目录如下:
3.集成百度SDK
图片验证码识别代码如下,简单几行代码就搞定,具体如下:
com.zrscsoft.api.baidu;
import java.util.HashMap;
import org.json.JSONObject;
import com.baidu.aip.ocr.AipOcr;
/**
* 图片验证码识别
*
* @author admin
*
*/
public class VerificationCodeRecognitionDemo {
//设置APPID/AK/SK
public static final String APP_ID = "你的 App ID";
public static final String API_KEY = "你的 Api Key";
public static final String SECRET_KEY = "你的 Secret Key";
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// 初始化一个AipOcr
AipOcr client = new AipOcr(APP_ID, API_KEY, SECRET_KEY);// 可选:设置网络连接参数
client.setConnectionTimeoutInMillis(2000);
client.setSocketTimeoutInMillis(60000);String path = System.getProperty("user.dir");
String imgPath=path+"/images/VerificationCodeRecognition1.png";//D:\\1.png
// 识别图片验证码中的数字
HashMap<String, String> options2 = new HashMap<String, String>();
options2.put("detect_direction", "true");
options2.put("detect_language", "true");
JSONObject res = client.webImage(imgPath, options2);
System.out.println("识别返回的字符串为:"+res.toString(2));
System.out.println("识别出来的验证码为:"+res.getJSONArray("words_result").getJSONObject(0).get("words"));
}}
4.运行VerificationCodeRecognitionDemo中main()方法,运行后的结果,大致如下:
识别返回的字符串为:{
"words_result": [{"words": "CMK8"}],
"direction": 0,
"words_result_num": 1,
"log_id": 549443541293277400
}
识别出来的验证码为:CMK8
下载源码。