//go:build aws //go:generate go run -tags=aws ./textdetection.go package main import ( "context" "encoding/json" "fmt" "log/slog" "os" "queryorchestration/internal/serviceconfig/aws" "queryorchestration/internal/serviceconfig/textract" awstextract "github.com/aws/aws-sdk-go-v2/service/textract" "github.com/aws/aws-sdk-go-v2/service/textract/types" ) func main() { ctx := context.Background() cfg := &textract.TextractConfig{} profile := aws.Profile(os.Getenv("AWS_PROFILE")) if profile == "" { slog.Error("profile not available") os.Exit(1) } err := cfg.SetTextractClientWithProfile(ctx, profile) if err != nil { slog.Error("error creating client", "error", err) os.Exit(1) } base := "../../assets/sampleGeneration" name := "helloWorld" filename := fmt.Sprintf("%s/%s.pdf", base, name) content, err := os.ReadFile(filename) if err != nil { slog.Error("error writing file", "error", err) os.Exit(1) } slog.Info("detecting text", "filename", filename) res, err := cfg.GetTextractClient().DetectDocumentText(ctx, &awstextract.DetectDocumentTextInput{ Document: &types.Document{ Bytes: content, }, }) if err != nil { slog.Error("error detecting text", "error", err) os.Exit(1) } jsonContent, err := json.MarshalIndent(res, "", "\t") if err != nil { slog.Error("error marshaling json", "error", err) os.Exit(1) } outputFilename := fmt.Sprintf("%s/generated/%s.gen", base, name) err = os.WriteFile(outputFilename, jsonContent, 0600) if err != nil { slog.Error("error writing file", "error", err) os.Exit(1) } fmt.Println("Successfully generated " + outputFilename) }