# `Kreuzberg.ImagePreprocessingMetadata`
[🔗](https://github.com/kreuzberg-dev/kreuzberg/blob/main/lib/kreuzberg/image_preprocessing_metadata.ex#L1)

Metadata about image preprocessing applied before OCR.

Matches the Rust `ImagePreprocessingMetadata` struct.

## Fields

  * `:original_dimensions` - Original image dimensions as `{width, height}`
  * `:original_dpi` - Original DPI as `{x_dpi, y_dpi}`
  * `:target_dpi` - Target DPI for preprocessing
  * `:scale_factor` - Scale factor applied
  * `:auto_adjusted` - Whether DPI was auto-adjusted
  * `:final_dpi` - Final DPI after adjustment
  * `:new_dimensions` - New dimensions after resize as `{width, height}` or nil
  * `:resample_method` - Resampling method used (e.g., "lanczos3")
  * `:dimension_clamped` - Whether dimensions were clamped to max
  * `:calculated_dpi` - Calculated DPI if auto-detected, or nil
  * `:skipped_resize` - Whether resize was skipped
  * `:resize_error` - Error message if resize failed, or nil

# `t`

```elixir
@type t() :: %Kreuzberg.ImagePreprocessingMetadata{
  auto_adjusted: boolean(),
  calculated_dpi: integer() | nil,
  dimension_clamped: boolean(),
  final_dpi: integer(),
  new_dimensions: {non_neg_integer(), non_neg_integer()} | nil,
  original_dimensions: {non_neg_integer(), non_neg_integer()},
  original_dpi: {float(), float()},
  resample_method: String.t(),
  resize_error: String.t() | nil,
  scale_factor: float(),
  skipped_resize: boolean(),
  target_dpi: integer()
}
```

# `from_map`

```elixir
@spec from_map(map()) :: t()
```

# `to_map`

```elixir
@spec to_map(t()) :: map()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
