```go title="Go"
package main

import (
	"fmt"
	"log"

	"github.com/kreuzberg-dev/kreuzberg/packages/go/v5"
)

func main() {
	// List all registered document extractors
	extractors, err := kreuzberg.ListDocumentExtractors()
	if err != nil {
		log.Fatalf("list document extractors: %v", err)
	}
	fmt.Println("Document Extractors:")
	for _, extractor := range extractors {
		fmt.Printf("  - %s\n", extractor)
	}

	// List all registered post-processors
	processors, err := kreuzberg.ListPostProcessors()
	if err != nil {
		log.Fatalf("list post processors: %v", err)
	}
	fmt.Println("\nPost-Processors:")
	for _, processor := range processors {
		fmt.Printf("  - %s\n", processor)
	}

	// List all registered OCR backends
	backends, err := kreuzberg.ListOCRBackends()
	if err != nil {
		log.Fatalf("list OCR backends: %v", err)
	}
	fmt.Println("\nOCR Backends:")
	for _, backend := range backends {
		fmt.Printf("  - %s\n", backend)
	}

	// List all registered validators
	validators, err := kreuzberg.ListValidators()
	if err != nil {
		log.Fatalf("list validators: %v", err)
	}
	fmt.Println("\nValidators:")
	for _, validator := range validators {
		fmt.Printf("  - %s\n", validator)
	}
}
```
