```csharp title="C#" using Kreuzberg; using System.Net.Http; using System.Text.Json; public class CloudOcrBackend : IOcrBackend { private readonly string _apiKey; private readonly List _langs = new() { "eng", "deu", "fra" }; public CloudOcrBackend(string apiKey) { _apiKey = apiKey; } public string Name() => "cloud-ocr"; public string Version() => "1.0.0"; public List SupportedLanguages() => _langs; public Dictionary ProcessImage(byte[] imageBytes, Dictionary config) { using (var client = new HttpClient()) { using (var form = new MultipartFormDataContent()) { form.Add(new ByteArrayContent(imageBytes), "image"); var lang = config.ContainsKey("language") ? config["language"].ToString() : "eng"; form.Add(new StringContent(lang), "language"); var response = client.PostAsync("https://api.example.com/ocr", form).Result; var json = response.Content.ReadAsStringAsync().Result; var doc = JsonDocument.Parse(json); var text = doc.RootElement.GetProperty("text").GetString(); return new Dictionary { { "content", text }, { "mime_type", "text/plain" } }; } } } public void Initialize() { } public void Shutdown() { } } class Program { static void Main() { var backend = new CloudOcrBackend(apiKey: "your-api-key"); KreuzbergLib.RegisterOcrBackend(backend); } } ```