```swift title="Swift" import Foundation import Kreuzberg import RustBridge // Build a fully-featured `ExtractionConfig` via JSON. The opaque swift-bridge // initializer takes 30+ positional parameters, so JSON is the ergonomic path // for non-trivial configs. let configJson = """ { "use_cache": true, "enable_quality_processing": true, "ocr": { "backend": "tesseract", "language": "eng" }, "force_ocr": false, "chunking": { "max_characters": 800, "overlap": 100, "chunker_type": "markdown", "prepend_heading_context": true }, "images": { "extract_images": true }, "output_format": "markdown", "include_document_structure": true } """ let config = try extractionConfigFromJson(configJson) let result = try extractFileSync("report.pdf", nil, config) let content = result.content().toString() print("Content (\(content.count) chars):") let preview = String(content.prefix(200)) print(preview) if let chunks = result.chunks() { print("\nChunks: \(chunks.count)") } print("Tables: \(result.tables().count)") if let languages = result.detected_languages() { let langs = languages.map { $0.toString() } print("Languages: \(langs)") } if let method = result.extraction_method() { print("Extraction method: \(method)") } ```