daShangDao_psiServer/controllers/ocr.go
2026-06-15 13:47:39 +08:00

65 lines
1.4 KiB
Go

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{}
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,
})
}