Example #1
0
        /// <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);
        }