public static BankCardRecognitionModel GetBankCardRecognitionString(string token, string imagePath, ref string recognitionString, out string errorMsg) { bool resultState = true; BankCardRecognitionModel tempModel = new BankCardRecognitionModel(); errorMsg = ""; 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/bankcard?access_token=" + token; String str = "&image=" + HttpUtility.UrlEncode(strbaser64); var tempResult = HttpRequestHelper.Post(host, str); recognitionString = tempResult; tempModel.returnJson = tempResult; if (recognitionString.Contains("\"error_code\""))//说明异常 { resultState = false; tempModel.state = false; tempModel.errorTypeModel = Json.ToObject <Model.ErrorTypeModel>(tempResult); tempModel.errorTypeModel.error_discription = OCR_CharacterRecognitionErrorType.GetErrorCodeToDescription(tempModel.errorTypeModel.error_code); } else { tempModel.state = true; tempModel.successModel = Json.ToObject <BankCardSuccessResultModel>(tempResult); } #endregion return(tempModel); } catch (Exception ex)//接口外部异常,如网络异常 { resultState = false; errorMsg = ex.ToString(); tempModel.state = false; tempModel.errorMsg = ex.ToString(); return(tempModel); } }
// 身份证识别 /// <summary> /// 身份证识别 /// </summary> /// <param name="token">Accesstoken</param> /// <param name="imagePath">图片路径</param> /// <param name="recognitionString">识别结果</param> /// <param name="errorMsg">错误信息</param> /// <param name="id_card_side"> front:身份证正面;back:身份证背面</param> /// <param name="detect_direction">是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:- true:检测朝向;- false:不检测朝向。</param> /// <param name="detect_risk"> string 类型 是否开启身份证风险类型(身份证复印件、临时身份证、身份证翻拍、修改过的身份证)功能,默认不开启,即:false。可选值:true-开启;false-不开启</param> /// <returns>结果状态</returns> public static APIBaseModel <IDCardRecognitionModel> GetIdcardRecognitionString(string token, string imagePath, ref string recognitionString, out string errorMsg, string id_card_side = "front", bool detect_direction = false, string detect_risk = "false") { bool resultState = true; APIBaseModel <IDCardRecognitionModel> tempModel = new APIBaseModel <IDCardRecognitionModel>(); tempModel.contextModel = new IDCardRecognitionModel(); string strbaser64 = ""; try { #region 基础校验 string verificationMsg = ""; errorMsg = ""; var verifyResult = ImageVerification.VerificationImage <IDCardRecognitionModel>(imagePath, System.Drawing.Imaging.ImageFormat.Jpeg, tempModel, out verificationMsg, out strbaser64); if (!verifyResult.state) { return(verifyResult); } #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 #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.contextModel.errorTypeModel = Json.ToObject <ErrorTypeModel>(tempResult); tempModel.contextModel.errorTypeModel.error_discription = OCR_CharacterRecognitionErrorType.GetErrorCodeToDescription(tempModel.contextModel.errorTypeModel.error_code); } else { tempModel.state = true; var temp = Json.ToObject <IDCardRecognitionSuccessResultModel>(tempResult); tempModel.contextModel.successModel = temp; } #endregion return(tempModel); } catch (Exception ex)//接口外部异常,如网络异常 { resultState = false; errorMsg = ex.ToString(); tempModel.state = false; tempModel.errorMsg = ex.ToString(); return(tempModel); } }
/// <summary> /// 网络图片识别,适合网络图片文字识别用于识别一些网络上背景复杂,特殊字体的文字。 /// </summary> /// <param name="tempImage"></param> public static APIBaseModel <DrivingLicenseModel> GetWebImage(Image tempImage) { APIBaseModel <DrivingLicenseModel> tempModel = new APIBaseModel <DrivingLicenseModel>(); tempModel.contextModel = new DrivingLicenseModel(); var client = new Ocr.Ocr(Config.clientId, Config.clientSecret); var image = ImageHelper.ImageToBytes(tempImage, System.Drawing.Imaging.ImageFormat.Png); string result = client.WebImage(image, null).ToString(); if (result.Contains("\"error_code\""))//说明异常 { tempModel.state = false; tempModel.contextModel.errorTypeModel = Json.ToObject <ErrorTypeModel>(result); tempModel.errorMsg = tempModel.contextModel.errorTypeModel.error_discription = OCR_CharacterRecognitionErrorType.GetErrorCodeToDescription(tempModel.contextModel.errorTypeModel.error_code); } else { tempModel.state = true; tempModel.contextModel.successModel = Json.ToObject <DrivingLicenseSuessResultModel>(result); } return(tempModel); }