Kreuzberg.ElementMetadata (kreuzberg v4.4.2)

Copy Markdown View Source

Metadata for a semantic element extracted from a document.

Contains information about where and how an element appears in the source document, including position, page number, and custom metadata fields.

Fields

  • :page_number - Page number where element appears (1-indexed), or nil
  • :filename - Source filename or document name, or nil
  • :coordinates - Bounding box coordinates if available, or nil
  • :element_index - Position index in the element sequence, or nil
  • :additional - Map of custom metadata fields (defaults to empty map)

Examples

iex> metadata = %Kreuzberg.ElementMetadata{
...>   page_number: 1,
...>   filename: "document.pdf",
...>   coordinates: %Kreuzberg.BoundingBox{x0: 10.0, y0: 20.0, x1: 100.0, y1: 50.0},
...>   element_index: 0,
...>   additional: %{"section" => "Introduction"}
...> }
iex> metadata.page_number
1

Summary

Functions

Creates an ElementMetadata struct from a map.

Converts an ElementMetadata struct to a map.

Types

t()

@type t() :: %Kreuzberg.ElementMetadata{
  additional: map(),
  coordinates: Kreuzberg.BoundingBox.t() | nil,
  element_index: integer() | nil,
  filename: String.t() | nil,
  page_number: integer() | nil
}

Functions

from_map(data)

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

Creates an ElementMetadata struct from a map.

Converts a plain map (typically from NIF/Rust) into a proper struct, handling nested bounding box data.

Parameters

  • data - A map containing metadata fields

Returns

An ElementMetadata struct with properly typed fields.

Examples

iex> metadata_map = %{
...>   "page_number" => 1,
...>   "filename" => "document.pdf",
...>   "coordinates" => %{"x0" => 10.0, "y0" => 20.0, "x1" => 100.0, "y1" => 50.0},
...>   "element_index" => 0,
...>   "additional" => %{"section" => "Introduction"}
...> }
iex> metadata = Kreuzberg.ElementMetadata.from_map(metadata_map)
iex> metadata.page_number
1

to_map(metadata)

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

Converts an ElementMetadata struct to a map.

Useful for serialization and passing to external systems.

Parameters

  • metadata - An ElementMetadata struct

Returns

A map with string keys representing all fields.

Examples

iex> metadata = %Kreuzberg.ElementMetadata{
...>   page_number: 1,
...>   filename: "doc.pdf",
...>   additional: %{"section" => "intro"}
...> }
iex> Kreuzberg.ElementMetadata.to_map(metadata)
%{
  "page_number" => 1,
  "filename" => "doc.pdf",
  "coordinates" => nil,
  ...
}