/// <summary> /// 识别身份证照片 /// </summary> public Respbase <IdentCard> IdCardPicRecognise(int imageActionType, string fullFileName) { PXinContext db = HttpContext.Current.GetDbContext <PXinContext>(); IdCardPicRecognise picRec = new IdCardPicRecognise(); IdentResult result = picRec.Regcognise(fullFileName); if (result != null && result.Success && result.cards != null && result.cards.Length >= 1) { if (imageActionType == 1 && (result.cards[0].side != "front" || string.IsNullOrEmpty(result.cards[0].id_card_number) || result.cards[0].id_card_number.Length != 18 || !CheckCard18(result.cards[0].id_card_number) || string.IsNullOrEmpty(result.cards[0].name) || result.cards[0].name.Length < 2)) { return(new Respbase <IdentCard> { Message = "身份证正面识别错误,请重新上传", Result = 0 }); } else if (imageActionType == 2 && (result.cards[0].side != "back" || !IsValidDate(result.cards[0].valid_date))) { return(new Respbase <IdentCard> { Message = "身份证背面识别错误,请重新上传", Result = 0 }); } else { TzcIdcardrecLog recogniseLog = new TzcIdcardrecLog { Pic = System.IO.Path.GetFileName(fullFileName), Recresult = JsonConvert.SerializeObject(result) }; db.TzcIdcardrecLogSet.Add(recogniseLog); if (db.SaveChanges() <= 0) { return(new Respbase <IdentCard> { Message = "保存识别结果失败", Result = 0 }); } else { return(new Respbase <IdentCard> { Message = "上传成功", Result = 1, Data = result.cards[0] }); } } } else { return(new Respbase <IdentCard> { Message = "上传照片识别失败,请重新上传清晰照片", Result = 0 }); } }
/// <summary> /// 识别身份证图片 /// </summary> /// <param name="fileName"></param> /// <returns></returns> public IdentResult Regcognise(string fileName) { UploadFile uf = new UploadFile { Filename = Path.GetFileName(fileName), Name = "image_file", Data = File.ReadAllBytes(fileName) }; if (uf.Data.LongLength / 1024.0 / 1024 >= 1.5) { log.Info("图片[" + fileName + "]太大,length=" + uf.Data.LongLength + ",进行压缩"); string tmp = Path.GetFileNameWithoutExtension(fileName); string destFileName = fileName.Replace(tmp, tmp + "_small"); if (GetThumImage(fileName, 50, 1, destFileName)) { fileName = destFileName; } uf.Filename = Path.GetFileName(fileName); uf.Data = File.ReadAllBytes(fileName); } NameValueCollection stringDict = new NameValueCollection(); stringDict.Add("api_key", "G_W5zLtBcImF31eQ64BYUAm7sVJOdsw1"); stringDict.Add("api_secret", "MTr-f-t2fXf-tfaCpLusuO5ysJQo8X5S"); //stringDict.Add("legality", "1"); string retString = Decode(HttpPostData(new List <UploadFile> { uf }, stringDict)); log.Info("图片[" + fileName + "],result=" + retString); IdentResult result = null; try { result = JsonConvert.DeserializeObject <IdentResult>(retString); } catch (Exception exp) { log.Info("JSON反序列化失败," + exp); } return(result); }