```elixir title="Elixir"
config_json = Jason.encode!(%{
  "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
  }
})

{:ok, result} = Kreuzberg.extract_file_sync("document.pdf", "application/pdf", config_json)
IO.puts("Content: #{result.content}")

if result.detected_languages do
  IO.puts("Languages: #{inspect(result.detected_languages)}")
end

chunks_count = if result.chunks, do: length(result.chunks), else: 0
IO.puts("Chunks: #{chunks_count}")
```
