Files
fil/docs/snippets/elixir/ocr/cloud_ocr_backend.md
Henrik Jess Nielsen b4c07d3693
All checks were successful
Deploy fil (kreuzberg) / deploy (push) Successful in 49s
Nomad changes
2026-06-01 23:40:55 +02:00

940 B

defmodule MyApp.CloudOcrBackend do
  @behaviour Kreuzberg.Plugin

  defstruct api_key: nil, supported_langs: []

  def new(api_key, supported_langs) do
    %__MODULE__{api_key: api_key, supported_langs: supported_langs}
  end

  @impl Kreuzberg.Plugin
  def name(_backend), do: "cloud-ocr"

  @impl Kreuzberg.Plugin
  def version(_backend), do: "1.0.0"

  @impl Kreuzberg.Plugin
  def initialize(_backend), do: :ok

  @impl Kreuzberg.Plugin
  def shutdown(_backend), do: :ok

  def process_image(backend, image_bytes, language) do
    call_cloud_api(backend, image_bytes, language)
  end

  def supports_language(backend, lang) do
    Enum.member?(backend.supported_langs, lang)
  end

  defp call_cloud_api(_backend, _image, _language) do
    {:ok, "Extracted text"}
  end
end

# Register the custom backend
backend = MyApp.CloudOcrBackend.new("api-key", ["en", "de", "fr"])
# Use with Kreuzberg extraction...