```rust title="Rust"
use kreuzberg::{extract_file, ExtractionConfig, OcrConfig};
use kreuzberg::types::OcrElementConfig;

#[tokio::main]
async fn main() -> kreuzberg::Result<()> {
    let config = ExtractionConfig {
        ocr: Some(OcrConfig {
            backend: "paddleocr".to_string(),
            language: "en".to_string(),
            element_config: Some(OcrElementConfig {
                include_elements: true,
                ..Default::default()
            }),
            ..Default::default()
        }),
        ..Default::default()
    };

    let result = extract_file("scanned.pdf", None, &config).await?;

    if let Some(elements) = &result.ocr_elements {
        for element in elements {
            println!("Text: {}", element.text);
            println!("Confidence: {:.2}", element.confidence.recognition);
            println!("Geometry: {:?}", element.geometry);
            if let Some(rotation) = &element.rotation {
                println!("Rotation: {}°", rotation.angle_degrees);
            }
            println!();
        }
    }
    Ok(())
}
```
