55 lines
1.1 KiB
Go
55 lines
1.1 KiB
Go
|
|
```go title="cli_with_config.go"
|
||
|
|
package main
|
||
|
|
|
||
|
|
import (
|
||
|
|
"encoding/json"
|
||
|
|
"fmt"
|
||
|
|
"os/exec"
|
||
|
|
)
|
||
|
|
|
||
|
|
type ExtractionResult struct {
|
||
|
|
Content string `json:"content"`
|
||
|
|
Format string `json:"format"`
|
||
|
|
Languages []string `json:"languages"`
|
||
|
|
}
|
||
|
|
|
||
|
|
func extractWithConfig(filePath string, configPath string) (*ExtractionResult, error) {
|
||
|
|
cmd := exec.Command(
|
||
|
|
"kreuzberg",
|
||
|
|
"extract",
|
||
|
|
filePath,
|
||
|
|
"--config",
|
||
|
|
configPath,
|
||
|
|
"--format",
|
||
|
|
"json",
|
||
|
|
)
|
||
|
|
|
||
|
|
output, err := cmd.CombinedOutput()
|
||
|
|
if err != nil {
|
||
|
|
return nil, fmt.Errorf("CLI error: %w, output: %s", err, string(output))
|
||
|
|
}
|
||
|
|
|
||
|
|
var result ExtractionResult
|
||
|
|
if err := json.Unmarshal(output, &result); err != nil {
|
||
|
|
return nil, fmt.Errorf("JSON parse error: %w", err)
|
||
|
|
}
|
||
|
|
|
||
|
|
return &result, nil
|
||
|
|
}
|
||
|
|
|
||
|
|
func main() {
|
||
|
|
configFile := "kreuzberg.toml"
|
||
|
|
document := "document.pdf"
|
||
|
|
|
||
|
|
fmt.Printf("Extracting %s with config %s\n", document, configFile)
|
||
|
|
result, err := extractWithConfig(document, configFile)
|
||
|
|
if err != nil {
|
||
|
|
panic(err)
|
||
|
|
}
|
||
|
|
|
||
|
|
fmt.Printf("Content length: %d\n", len(result.Content))
|
||
|
|
fmt.Printf("Format: %s\n", result.Format)
|
||
|
|
fmt.Printf("Languages: %v\n", result.Languages)
|
||
|
|
}
|
||
|
|
```
|