package controllers import ( "github.com/gin-gonic/gin" "github.com/sirupsen/logrus" "io" "net/http" "psi/constant" systemRes "psi/models/response" "psi/service" "psi/utils" ) type OcrApi struct{} var ocrService = service.OcrService{} // RecognizeText OCR识别 func (r *OcrApi) RecognizeText(c *gin.Context) { file, err := c.FormFile("image") if err != nil { utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ "source": "OCR识别请求异常", "err_msg": err.Error(), }) systemRes.FailWithValidateMessage("请上传图片文件", c) return } imageFile, err := file.Open() if err != nil { utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ "source": "打开图片文件异常", "err_msg": err.Error(), }) systemRes.FailWithValidateMessage("读取图片文件失败", c) return } defer imageFile.Close() imageData, err := io.ReadAll(imageFile) if err != nil { utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ "source": "读取图片数据异常", "err_msg": err.Error(), }) systemRes.FailWithValidateMessage("读取图片数据失败", c) return } result, err := ocrService.RecognizeText(imageData) if err != nil { utils.ErrorLog(constant.LoggerChannelWork, logrus.Fields{ "source": "OCR识别异常", "err_msg": err.Error(), }) systemRes.FailWithMessage(err.Error(), c) return } c.JSON(http.StatusOK, gin.H{ "code": 200, "data": result, }) }