65 lines
1.4 KiB
Go
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,
|
|
})
|
|
}
|