66 lines
1.2 KiB
Go
66 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"log"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"tencent_ocr/pkg/config"
|
|
"tencent_ocr/pkg/handler"
|
|
)
|
|
|
|
func main() {
|
|
// Load configuration
|
|
cfg, err := config.LoadConfig()
|
|
if err != nil {
|
|
log.Fatalf("Failed to load configuration: %v", err)
|
|
}
|
|
// Initialize services
|
|
geminiService, err := service.NewGeminiService(cfg.GeminiAPIKey)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer geminiService.Close()
|
|
|
|
ocrService := handler.NewOCRService(
|
|
cfg.TencentSecretID,
|
|
cfg.TencentSecretKey,
|
|
geminiService,
|
|
)
|
|
|
|
// Initialize handlers
|
|
ocrHandler := handler.NewOCRHandler(
|
|
cfg.TencentSecretID,
|
|
cfg.TencentSecretKey,
|
|
cfg.GeminiAPIKey,
|
|
cfg.APIKey,
|
|
)
|
|
|
|
rateHandler := handler.NewRateHandler(
|
|
cfg.GeminiAPIKey,
|
|
cfg.APIKey,
|
|
)
|
|
|
|
uploadHandler := handler.NewUploadHandler(
|
|
cfg.R2AccessKey,
|
|
cfg.R2SecretKey,
|
|
cfg.R2Bucket,
|
|
cfg.R2Endpoint,
|
|
cfg.R2CustomDomain,
|
|
ocrService,
|
|
geminiService,
|
|
)
|
|
|
|
// Setup Gin router
|
|
r := gin.Default()
|
|
|
|
// Register routes
|
|
r.POST("/ocr", ocrHandler.HandleOCR)
|
|
r.POST("/rate", rateHandler.HandleRate)
|
|
// upload file to server
|
|
r.POST("/upload", uploadHandler.HandleUpload)
|
|
|
|
// Start server
|
|
if err := r.Run("localhost:8080"); err != nil {
|
|
log.Fatalf("Failed to start server: %v", err)
|
|
}
|
|
} |