查找使用wordpress的网站,网站开发的前端与后端,西安网站建设网络推广,wordpress做商品筛选简介 答应了园区大牛张善友 要写AI 的系列博客#xff0c;所以开始了AI 系列之旅。 一、介绍 身份证识别 API 接口文档地址#xff1a;http://ai.baidu.com/docs#/OCR-API/top 接口描述 用户向服务请求识别身份证#xff0c;身份证识别包括正面和背面。 请求说明 请求示例… 简介 答应了园区大牛张善友 要写AI 的系列博客所以开始了AI 系列之旅。 一、介绍 身份证识别 API 接口文档地址http://ai.baidu.com/docs#/OCR-API/top 接口描述 用户向服务请求识别身份证身份证识别包括正面和背面。 请求说明 请求示例 HTTP 方法POST 请求URL https://aip.baidubce.com/rest/2.0/ocr/v1/idcard 备注你需要 成为百度开发者获取API key 和Secret Key Access_Token 的获取 百度Access_token 有效期有时间限制大概是30天左右所以建议封装成功能方法每次调用最新的。 access_token要获取的Access Token expires_inAccess Token的有效期(秒为单位一般为1个月) 二、技术实现 百度 文字识别 有提供SDK。如果有支持的语言可以直接用sdk。笔者自己用的Http 请求封装 对于图片大小有要求的图像数据base64编码后进行urlencode要求base64编码和urlencode后大小不超过4M最短边至少15px最长边最大4096px,支持jpg/png/bmp格式 接口基础封装 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BaiduAIAPI.Model { public class AccessTokenModel { public bool IsSuccess { get; set; } public SuccessAccessTokenModel SuccessModel { get; set; } public ErrorAccessTokenModel ErrorModel { get; set; } } /// summary /// 获取accesstoken正常 的 百度接口返回的json 实体模型 /// /summary public class SuccessAccessTokenModel { public string refresh_token { get; set; } public int expires_in { get; set; } public string scope { get; set; } public string session_key { get; set; } public string session_secret { get; set; } public string access_token { get; set; } } /// summary /// 获取accesstoken失败的 百度接口返回的json 实体模型 /// /summary public class ErrorAccessTokenModel { public string error { get; set; } public string error_description { get; set; } } } using System; using System.IO; using System.Net; using System.Text; using System.Web; using AOP.Common; using AOP.Common.DataConversion; using BaiduAIAPI.Model; using BaiduAIAPI.Type; namespace BaiduAIAPI.ORC_Characterbase64 { /// summary /// 文字识别--身份证识别 应用只是获取身份证图片 信息没有和公安部联网无法确认真假只是单纯从图片上识别文字 /// /summary public class IDCardRecognition { // 身份证识别 /// summary /// 身份证识别 /// /summary /// param nametokenAccesstoken/param /// param nameimagePath图片路径/param /// param namerecognitionString识别结果/param /// param nameerrorMsg错误信息/param /// param nameid_card_side front身份证正面back身份证背面/param /// param namedetect_direction是否检测图像朝向默认不检测即false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:- true检测朝向- false不检测朝向。/param /// param namedetect_risk string 类型 是否开启身份证风险类型(身份证复印件、临时身份证、身份证翻拍、修改过的身份证)功能默认不开启即false。可选值:true-开启false-不开启/param /// returns结果状态/returns public static IDCardRecognitionModel GetIdcardRecognitionString(string token, string imagePath, ref string recognitionString, out string errorMsg, string id_card_sidefront, bool detect_directionfalse, string detect_riskfalse) { bool resultState true; IDCardRecognitionModel tempModel new IDCardRecognitionModel(); try { #region 基础校验 string verificationMsg ; errorMsg ; bool isVerification ImageVerification.VerificationImage(imagePath, out verificationMsg); if (!isVerification) { errorMsg verificationMsg; tempModel.state false; tempModel.errorMsg errorMsg; return tempModel; } string strbaser64 ConvertDataFormatAndImage.ImageToByte64String(imagePath, System.Drawing.Imaging.ImageFormat.Jpeg); // 图片的base64编码 Encoding encoding Encoding.Default; string urlEncodeImage HttpUtility.UrlEncode(strbaser64); byte[] tempBuffer encoding.GetBytes(urlEncodeImage); if (tempBuffer.Length 1024 * 1024 * 4) { errorMsg 图片加密 后的大小超过4MB; recognitionString ; tempModel.state false; tempModel.errorMsg errorMsg; return tempModel; } #endregion #region 请求接口 recognitionString ; string host https://aip.baidubce.com/rest/2.0/ocr/v1/idcard?access_token token; String str id_card_side id_card_side detect_direction detect_direction detect_risk detect_risk image HttpUtility.UrlEncode(strbaser64); var tempResult HttpRequestHelper.Post(host, str); recognitionString tempResult; if (recognitionString.Contains(\error_code\))//说明异常 { resultState false; tempModel.state false; tempModel.errorTypeModel Json.ToObjectErrorTypeModel(tempResult); tempModel.errorTypeModel.error_discription ORC_CharacterRecognitionErrorType.GetErrorCodeToDescription(tempModel.errorTypeModel.error_code); } else { tempModel.state true; tempModel.successModel Json.ToObjectIDCardRecognitionSuccessResultModel(tempResult); } #endregion return tempModel; } catch (Exception ex)//接口外部异常如网络异常 { resultState false; errorMsg ex.ToString(); tempModel.state false; tempModel.errorMsg ex.ToString(); return tempModel; } } } } winform 调用核心部分 /// summary /// 识别操作 /// /summary /// param namefilePath/param /// param nameid_card_side身份证 正面还是背面/param /// param namedetect_direction/param /// param namedetect_risk/param public void Distinguish(string filePath, string id_card_side front, bool detect_direction false, string detect_risk false) { DoTime();//主线程执行进度条子线程进行数据请求操作 t1 new Thread(new ThreadStart(() { var temp BaiduAIAPI.Access_Token.GetAccessToken(); if (temp.IsSuccess) { string data ; string error ; var result IDCardRecognition.GetIdcardRecognitionString(temp.SuccessModel.access_token, filePath, ref data, out error, id_card_side, detect_direction, detect_risk); this.Invoke(new Action(() { tb_showInfo.AppendText(\r\n -----------------------------------------------------------------); })); if (result.state) { this.Invoke(new Action(() { tb_showInfo.AppendText(\r\n ---------------------------识别成功-------------------------------); tb_showInfo.AppendText(\r\n result.successModel.ToJson() \r\n); })); } else { this.Invoke(new Action(() { tb_showInfo.AppendText(\r\n-----------------------------识别失败--------------------------------); tb_showInfo.AppendText(\r\n result.successModel.ToJson() result.errorMsg \r\n); })); } } else { this.Invoke(new Action(() { AttrMessage.ErrorMsg(temp.ErrorModel.error); })); } this.Invoke(new Action(() { progressBar_ToReadDistinguish.Value 100; timer1.Enabled false; progressBar_ToReadDistinguish.Value 0; })); })); t1.IsBackground true; t1.Start(); } 效果如图图中的身份证是我百度贴吧搜索的不知道真伪。 PS这个只是文字识别并不是真正公安部联网识别身份有效性识别要连接公安部识别需要 付费。 三、整合应用 笔者的应用是结合自己写的插件化热插拔模式写的把每个接口封装成为一个插件采用注入形式动态化结合 为了便于友好用户体验在请求使用加入进度条采用新的线程去进行接口请求防止 界面卡住。 相关文章 Build 2017 | 一文看懂微软 Build 2017 大会让 AI 走向边缘 认识微软Visual Studio Tools for AI VS Tools for AI全攻略 VS Tools for AI全攻略2低配置虚拟机也能玩转深度学习无需NC/NV系列 基于Emgu CV百度人脸识别实现视频动态 人脸抓取与识别 原文http://www.cnblogs.com/linbin524/p/BaiduOCR_IDCard.html .NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com