```elixir title="Elixir"
alias Kreuzberg.ExtractionConfig

# Build configuration dynamically based on runtime conditions
# Useful for environment-specific settings and feature flags

defmodule ConfigBuilder do
  def build_config(file_type, enable_ocr?) do
    base_config = %ExtractionConfig{
      chunking: %{"max_characters" => 1000, "overlap" => 100},
      use_cache: true
    }

    case {file_type, enable_ocr?} do
      {:pdf, true} ->
        %{base_config | ocr: %{"enabled" => true, "backend" => "tesseract"}, force_ocr: true}

      {:pdf, false} ->
        %{base_config | ocr: %{"enabled" => false}}

      {:image, true} ->
        %{
          base_config
          | ocr: %{"enabled" => true, "backend" => "tesseract", "preprocessing" => true},
            force_ocr: true
        }

      {:image, false} ->
        %{base_config | ocr: %{"enabled" => false}}

      {_, _} ->
        base_config
    end
  end
end

# Build configuration based on file type and requirements
config = ConfigBuilder.build_config(:pdf, true)

{:ok, result} = Kreuzberg.extract_file("document.pdf", nil, config)

IO.puts("Dynamic configuration applied")
IO.puts("Content: #{String.slice(result.content, 0..100)}")
```
