package ocr

import (
	"context"
	"fmt"
	"os"

	"google.golang.org/api/option"

	vision "cloud.google.com/go/vision/apiv1"
)

var credsPath = "C:/Users/huseyin/Desktop/project/notitek/BordroRobot/app/lib/ocr/readpdf-75de5191c083.json"

func detectText(filePath string) ([]string, error) {
	ctx := context.Background()

	client, err := vision.NewImageAnnotatorClient(ctx, option.WithCredentialsFile(credsPath))
	if err != nil {
		return nil, fmt.Errorf("ImageAnnotatorClient oluşturulamadı: %v", err)
	}

	f, err := os.Open(filePath)
	if err != nil {
		return nil, fmt.Errorf("Dosya açılamadı: %v", err)
	}
	defer f.Close()

	image, err := vision.NewImageFromReader(f)
	if err != nil {
		return nil, fmt.Errorf("Resim oluşturulamadı: %v", err)
	}

	annotations, err := client.DetectTexts(ctx, image, nil, 10)
	if err != nil {
		return nil, fmt.Errorf("Metin tespit edilemedi: %v", err)
	}

	res := make([]string, 0)
	if len(annotations) == 0 {
		return nil, fmt.Errorf("Metin tespit edilemedi: %v", err)
	} else {
		fmt.Println("Metin:")
		for _, annotation := range annotations {
			//	fmt.Println(annotation)
			res = append(res, annotation.Description)

		}
	}

	return res, nil

}

func VisionApi(path string) ([]string, error) {
	filePath := path // Örnek bir dosya yolu

	resp, err := detectText(filePath)
	if err != nil {
		fmt.Printf("Metin tespit edilemedi: %v\n", err)
		return nil, err
	}
	for _, txt := range resp {
		fmt.Println(txt)
	}
	return resp, nil
}
