40 lines
1.1 KiB
Rust
40 lines
1.1 KiB
Rust
```rust title="cli_with_config.rs"
|
|
use std::process::Command;
|
|
use anyhow::Result;
|
|
|
|
fn extract_with_config(file_path: &str, config_path: &str) -> Result<serde_json::Value> {
|
|
let output = Command::new("kreuzberg")
|
|
.args(&[
|
|
"extract",
|
|
file_path,
|
|
"--config",
|
|
config_path,
|
|
"--format",
|
|
"json",
|
|
])
|
|
.output()?;
|
|
|
|
if !output.status.success() {
|
|
let stderr = String::from_utf8_lossy(&output.stderr);
|
|
anyhow::bail!("CLI error: {}", stderr);
|
|
}
|
|
|
|
let result: serde_json::Value = serde_json::from_slice(&output.stdout)?;
|
|
Ok(result)
|
|
}
|
|
|
|
fn main() -> Result<()> {
|
|
let config_file = "kreuzberg.toml";
|
|
let document = "document.pdf";
|
|
|
|
println!("Extracting {} with config {}", document, config_file);
|
|
let result = extract_with_config(document, config_file)?;
|
|
|
|
println!("Content length: {}", result["content"].as_str().unwrap_or("").len());
|
|
println!("Format: {}", result["format"].as_str().unwrap_or("unknown"));
|
|
println!("Languages: {}", result["languages"].to_string());
|
|
|
|
Ok(())
|
|
}
|
|
```
|