```swift title="Swift" import Foundation import Kreuzberg import RustBridge // Build a fully-featured `ExtractionConfig` via JSON. ExtractionConfig has // 30+ fields, so JSON is the ergonomic path for non-trivial configs. let configJson = """ { "use_cache": true, "enable_quality_processing": true, "ocr": { "backend": "tesseract", "language": "eng" }, "chunking": { "max_characters": 1000, "overlap": 200, "embedding": { "model": {"preset": {"name": "balanced"}}, "batch_size": 32, "normalize": true, "show_download_progress": false } }, "language_detection": { "enabled": true, "min_confidence": 0.8, "detect_multiple": false }, "keywords": { "algorithm": "yake", "max_keywords": 10, "min_score": 0.1, "ngram_range": [1, 3], "language": "en" }, "token_reduction": { "mode": "moderate", "preserve_important_words": true }, "postprocessor": { "enabled": true } } """ let config = try extractionConfigFromJson(configJson) let result = try extractFileSync("document.pdf", nil, config) print("Content: \(result.content().toString())") if let languages = result.detected_languages() { let langs = languages.map { $0.toString() } print("Languages: \(langs)") } if let chunks = result.chunks() { print("Chunks: \(chunks.count)") } ```