59 lines
1.1 KiB
Go
59 lines
1.1 KiB
Go
|
package ocr
|
||
|
|
||
|
import (
|
||
|
// "database/sql"
|
||
|
"log/slog"
|
||
|
"net/http"
|
||
|
"strings"
|
||
|
|
||
|
"github.com/gin-gonic/gin"
|
||
|
"github.com/otiai10/gosseract/v2"
|
||
|
)
|
||
|
|
||
|
type GetTextHandler struct {
|
||
|
logger slog.Logger
|
||
|
// database *sql.DB
|
||
|
client gosseract.Client
|
||
|
}
|
||
|
|
||
|
type GetTextHandlerParams struct {
|
||
|
Logger slog.Logger
|
||
|
// Database *sql.DB
|
||
|
Client gosseract.Client
|
||
|
}
|
||
|
|
||
|
|
||
|
func NewGetTextHandler(params GetTextHandlerParams) *GetTextHandler {
|
||
|
return &GetTextHandler{
|
||
|
logger: params.Logger,
|
||
|
// database: params.Database,
|
||
|
client: params.Client,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (h *GetTextHandler) ServeHTTP(c *gin.Context,w http.ResponseWriter, r *http.Request) {
|
||
|
file, err := c.FormFile("file")
|
||
|
if err != nil {
|
||
|
h.logger.Error("Error forming file", err)
|
||
|
}
|
||
|
|
||
|
fileName := "./file"
|
||
|
|
||
|
err = c.SaveUploadedFile(file, fileName)
|
||
|
if err != nil {
|
||
|
h.logger.Error("Error saving file", err)
|
||
|
}
|
||
|
|
||
|
err = h.client.SetImage(fileName)
|
||
|
if err != nil {
|
||
|
h.logger.Error("Error setting image", err)
|
||
|
}
|
||
|
text, err := h.client.Text()
|
||
|
if err != nil {
|
||
|
h.logger.Error("Error getting text from file", err)
|
||
|
}
|
||
|
lines := strings.Split(text, "\n")
|
||
|
c.JSON(http.StatusOK, lines)
|
||
|
}
|
||
|
|