/** * @Author: sun * @Company: 苏州天和汇工业 * @Description: * @File: ocr_card_id * @Version: 1.0.0 * @Date: 2024/10/17 13:25 */ package account import ( "bytes" "dubbo.apache.org/dubbo-go/v3/common/logger" "encoding/base64" "github.com/fonchain_enterprise/fonchain-main/pkg/e" "github.com/fonchain_enterprise/fonchain-main/pkg/model" "github.com/fonchain_enterprise/fonchain-main/pkg/serializer" "github.com/fonchain_enterprise/fonchain-main/pkg/service" "github.com/fonchain_enterprise/utils/baidu" "github.com/gin-gonic/gin" "go.uber.org/zap" "io" "mime/multipart" ) func OcrCardId(c *gin.Context) { file, err := c.FormFile("file") if err != nil { logger.Errorf("Recevice File err: %v", err) service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Data: nil, Msg: err.Error(), Status: e.Failed, }) return } f, err := file.Open() if err != nil { logger.Errorf("Open File err: %v", err) service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Data: nil, Msg: err.Error(), Status: e.Failed, }) return } defer func(f multipart.File) { err := f.Close() if err != nil { logger.Errorf("Close File err: %v", err) service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Data: nil, Msg: err.Error(), Status: e.Failed, }) } }(f) // 读取文件内容到缓冲区 buf := new(bytes.Buffer) if _, err := io.Copy(buf, f); err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Data: nil, Msg: e.ERROR_CARDID_OCR, Status: e.Failed, }) return } btBase64 := base64.StdEncoding.EncodeToString(buf.Bytes()) result, _err := baidu.OcrGetIdCard(btBase64, "front") if _err != nil { zap.L().Error("Ocr IDCard err:", zap.Error(_err)) service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Data: nil, Msg: e.ERROR_CARDID_OCR, Status: e.Failed, }) return } resp := &model.OcrCardIdResp{} resp.Name = result.Name resp.CardNo = result.IdCard resp.Address = result.Path service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Data: resp, Msg: "", Status: e.SUCCESS, }) return }