85 lines
3.9 KiB
C#
85 lines
3.9 KiB
C#
|
using AOP.Common;
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Threading.Tasks;
|
|||
|
using System.Web;
|
|||
|
|
|||
|
namespace SgManager.AI
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 文字识别--身份证识别 应用(只是获取身份证图片 信息,没有和公安部联网,无法确认真假,只是单纯从图片上识别文字)
|
|||
|
/// </summary>
|
|||
|
public class IDCardRecognition
|
|||
|
{
|
|||
|
// 身份证识别
|
|||
|
|
|||
|
/// <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;
|
|||
|
}
|
|||
|
|
|||
|
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;
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
}
|