---
title: "Vision"
canonical_url: "https://www.nutrient.io/api/csharp/vision/"
md_url: "https://www.nutrient.io/api/csharp/vision.md"
last_updated: "2026-10-08T08:55:57.713Z"
description: "Provides machine learning and computer vision capabilities for document processing. Enables AI-powered document description and content extraction."
---

Provides machine learning and computer vision capabilities for document processing. Enables AI-powered document description and content extraction.

```csharp

using Nutrient;

```

The SDK creates this class through factory methods or other SDK objects.

## Methods

### Classify

```csharp

public string Classify(ClassificationRequest request)

```

Classifies the document against the candidate labels carried by `request` (zero-shot) and exports the ranked result. Branch weights, supplied text, and the other knobs are read from `DocumentClassificationSettings` on the document's settings. The result is always JSON; `OutputFormat` is not consulted because only the JSON exporter serializes the classification result.

**Parameters**

| Name      | Type                                                                    | Description                                                        |
| --------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------ |
| `request` | [`ClassificationRequest`](/api/csharp/requests/classification-request/) | The classification request carrying at least two candidate labels. |

**Returns:** `string` - The exported content as a string (JSON), including the predicted label and ranked candidate probabilities.

### ClassifyText

```csharp

public static string ClassifyText(ClassificationRequest request, string text)

```

Classifies caller-supplied text against the candidate labels carried by `request` (zero-shot) with no document. The text is scored directly by the text branch and the image branch is skipped, so nothing is rendered and no file is opened — use this when you already have the text (an email body, a database field, your own extraction pipeline) rather than a document on disk.

**Parameters**

| Name      | Type                                                                    | Description                                                        |
| --------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------ |
| `request` | [`ClassificationRequest`](/api/csharp/requests/classification-request/) | The classification request carrying at least two candidate labels. |
| `text`    | `string`                                                                | The text to classify.                                              |

**Returns:** `string` - JSON with the predicted label and the ranked candidate probabilities.

### ClassifyToFile

```csharp

public void ClassifyToFile(ClassificationRequest request, string outputPath)

```

Classifies the document against the candidate labels carried by `request` (zero-shot) and writes the exported result to a file. The result is always JSON; `OutputFormat` is not consulted because only the JSON exporter serializes the classification result.

**Parameters**

| Name         | Type                                                                    | Description                                                        |
| ------------ | ----------------------------------------------------------------------- | ------------------------------------------------------------------ |
| `request`    | [`ClassificationRequest`](/api/csharp/requests/classification-request/) | The classification request carrying at least two candidate labels. |
| `outputPath` | `string`                                                                | Path to the output file.                                           |

### Describe

```csharp

public string Describe()

```

Generates an AI-powered description of the document content.

**Returns:** `string` - A string containing the document description.

### DetectForms

```csharp

public string DetectForms()

```

Detects form fields on the document and exports the result. Output format is determined by `OutputFormat` (JSON or IR Lite). Each detected field carries its type and bounding box. To also assign AI semantic labels (e.g. "First name"), set `FormLabelingSettings.EnableAiLabeling` on the document's settings before calling — no separate method is needed.

**Returns:** `string` - The exported content as a string (JSON or IR Lite JSON depending on settings).

### DetectFormsToFile

```csharp

public void DetectFormsToFile(string outputPath)

```

Detects form fields on the document and writes the exported result to a file. Output format is determined by `OutputFormat` (JSON or IR Lite).

**Parameters**

| Name         | Type     | Description              |
| ------------ | -------- | ------------------------ |
| `outputPath` | `string` | Path to the output file. |

### DetectLanguages

```csharp

public string DetectLanguages()

```

Detects the language and text direction of the document, fully offline, and exports the result. Runs the offline cascade (Tesseract OSD for script → script-model OCR → fastText for the specific language) on every page and reports one detection per page. Output format is determined by `OutputFormat`.

**Returns:** `string` - JSON with the predicted language, text direction, and per-page detections.

### DetectLanguagesText

```csharp

public static string DetectLanguagesText(string text)

```

Detects the language of caller-supplied text, fully offline, with no document. CLD3 scores the text directly — nothing is rendered and no file is opened. Use this when you already have the text (an email body, a database field, your own extraction pipeline) rather than a document on disk.

**Parameters**

| Name   | Type     | Description                         |
| ------ | -------- | ----------------------------------- |
| `text` | `string` | The text to detect the language of. |

**Returns:** `string` - JSON with the predicted language and text direction.

```csharp

public static string DetectLanguagesText(string text, DocumentSettings settings)

```

Detects the language(s) of caller-supplied text, fully offline, with explicit settings — raise `MaxLanguages` to report more than one language in mixed text. Without settings the dominant language only is returned.

**Parameters**

| Name       | Type                                                                   | Description                                                               |
| ---------- | ---------------------------------------------------------------------- | ------------------------------------------------------------------------- |
| `text`     | `string`                                                               | The text to detect the language(s) of.                                    |
| `settings` | [`DocumentSettings`](/api/csharp/settings/document/document-settings/) | Document settings; `MaxLanguages` bounds how many languages are reported. |

**Returns:** `string` - JSON with the predicted language(s) and text direction.

### DetectLanguagesToFile

```csharp

public void DetectLanguagesToFile(string outputPath)

```

Detects the language and text direction of the document, fully offline, and writes the exported result to a file. Output format is determined by `OutputFormat`.

**Parameters**

| Name         | Type     | Description              |
| ------------ | -------- | ------------------------ |
| `outputPath` | `string` | Path to the output file. |

### ExtractContent

```csharp

public string ExtractContent()

```

Extracts structured content from the document using machine vision processing. The pipeline used is determined by the `Engine` setting and the output format by `OutputFormat`.

**Returns:** `string` - The exported content as a string (JSON, Markdown, or IR Lite JSON depending on settings).

```csharp

public string ExtractContent(DocumentLayoutJsonExportSettings settings)

```

Extracts structured content from the document using machine vision processing with custom export settings. The pipeline used is determined by the `Engine` setting.

**Parameters**

| Name       | Type                                                                                                             | Description                                              |
| ---------- | ---------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| `settings` | [`DocumentLayoutJsonExportSettings`](/api/csharp/settings/vision/advanced/document-layout-json-export-settings/) | Settings controlling what to include in the JSON output. |

**Returns:** `string` - A JSON string containing the extracted content structure.

### ExtractContentToFile

```csharp

public void ExtractContentToFile(string outputPath)

```

Extracts structured content from the document and writes it to a file. The pipeline used is determined by the `Engine` setting and the output format by `OutputFormat`.

**Parameters**

| Name         | Type     | Description              |
| ------------ | -------- | ------------------------ |
| `outputPath` | `string` | Path to the output file. |

```csharp

public void ExtractContentToFile(string outputPath, DocumentLayoutJsonExportSettings settings)

```

Extracts structured content from the document and saves it to a JSON file with custom settings.

**Parameters**

| Name         | Type                                                                                                             | Description                                              |
| ------------ | ---------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| `outputPath` | `string`                                                                                                         | Path to the output JSON file.                            |
| `settings`   | [`DocumentLayoutJsonExportSettings`](/api/csharp/settings/vision/advanced/document-layout-json-export-settings/) | Settings controlling what to include in the JSON output. |

### ExtractStructured

```csharp

public string ExtractStructured(StructuredExtractionRequest request)

```

Extracts structured data from the document, shaped to the JSON Schema carried by the `request`'s `{"schema":...}` envelope. The document is first read by the extraction pipeline selected by `Engine`, then an AI model fills the schema from the recognized content. Provider, model, endpoint, and confidence reporting are driven by `AiProcessingSettings` on the document's settings.

**Parameters**

| Name      | Type                                                                                 | Description                                                                               |
| --------- | ------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------- |
| `request` | [`StructuredExtractionRequest`](/api/csharp/requests/structured-extraction-request/) | The extraction request carrying the schema envelope (required) and optional instructions. |

**Returns:** `string` - A JSON string with two top-level nodes: `extraction` (the schema-shaped extracted fields) and `metadata` (per-field source locations and grounding labels).

### ExtractStructuredToFile

```csharp

public void ExtractStructuredToFile(StructuredExtractionRequest request, string outputPath)

```

Extracts structured data from the document, shaped to the JSON Schema carried by the `request`'s `{"schema":...}` envelope, and writes the JSON result to a file. See `ExtractStructured` for the result shape.

**Parameters**

| Name         | Type                                                                                 | Description                                                                               |
| ------------ | ------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------- |
| `request`    | [`StructuredExtractionRequest`](/api/csharp/requests/structured-extraction-request/) | The extraction request carrying the schema envelope (required) and optional instructions. |
| `outputPath` | `string`                                                                             | Path to the output file.                                                                  |

### GenerateSchema

```csharp

public static string GenerateSchema(SchemaGenerationRequest request)

```

Generates a JSON Schema for a class of documents using a vision model, with default document settings. The schema is designed for downstream LLM structured-output extraction tasks: it is hard-clamped to the knobs in `SchemaGenerationSettings` and to the target structured-output dialect selected there, so the same call with the same settings always yields a schema the target accepts.

**Parameters**

| Name      | Type                                                                         | Description                                                                                                                                                                                  |
| --------- | ---------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `request` | [`SchemaGenerationRequest`](/api/csharp/requests/schema-generation-request/) | The schema generation request: the document type the schema must represent (required), an optional natural-language requirement, and up to five example documents used as grounding samples. |

**Returns:** `string` - A JSON envelope object with a `schema` property (the generated JSON Schema) and a `constraints` array of cross-field rules in standard JsonLogic. The array is empty unless `SchemaGenerationSettings.IncludeConstraints` is enabled.

```csharp

public static string GenerateSchema(SchemaGenerationRequest request, DocumentSettings settings)

```

Generates a JSON Schema for a class of documents using a vision model, with explicit document settings. The schema is designed for downstream LLM structured-output extraction tasks: it is hard-clamped to the knobs in `SchemaGenerationSettings` and to the target structured-output dialect selected there, so the same call with the same settings always yields a schema the target accepts. The vision model connection is resolved from `Provider` and the matching provider settings class — the same way `Describe` is configured.

**Parameters**

| Name       | Type                                                                         | Description                                                                                                                                                                                  |
| ---------- | ---------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `request`  | [`SchemaGenerationRequest`](/api/csharp/requests/schema-generation-request/) | The schema generation request: the document type the schema must represent (required), an optional natural-language requirement, and up to five example documents used as grounding samples. |
| `settings` | [`DocumentSettings`](/api/csharp/settings/document/document-settings/)       | Document settings carrying `SchemaGenerationSettings` (schema shape and target dialect) and the vision model connection.                                                                     |

**Returns:** `string` - A JSON envelope object with a `schema` property (the generated JSON Schema) and a `constraints` array of cross-field rules in standard JsonLogic. The array is empty unless `SchemaGenerationSettings.IncludeConstraints` is enabled.

### GenerateSchemaToFile

```csharp

public static void GenerateSchemaToFile(SchemaGenerationRequest request, string outputPath)

```

Generates a JSON Schema for a class of documents using a vision model and writes it to a file, with default document settings.

**Parameters**

| Name         | Type                                                                         | Description                                                                                                                                                                                  |
| ------------ | ---------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `request`    | [`SchemaGenerationRequest`](/api/csharp/requests/schema-generation-request/) | The schema generation request: the document type the schema must represent (required), an optional natural-language requirement, and up to five example documents used as grounding samples. |
| `outputPath` | `string`                                                                     | Path to the output file receiving the JSON Schema.                                                                                                                                           |

```csharp

public static void GenerateSchemaToFile(SchemaGenerationRequest request, DocumentSettings settings, string outputPath)

```

Generates a JSON Schema for a class of documents using a vision model and writes it to a file, with explicit document settings.

**Parameters**

| Name         | Type                                                                         | Description                                                                                                                                                                                  |
| ------------ | ---------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `request`    | [`SchemaGenerationRequest`](/api/csharp/requests/schema-generation-request/) | The schema generation request: the document type the schema must represent (required), an optional natural-language requirement, and up to five example documents used as grounding samples. |
| `settings`   | [`DocumentSettings`](/api/csharp/settings/document/document-settings/)       | Document settings carrying `SchemaGenerationSettings` (schema shape and target dialect) and the vision model connection.                                                                     |
| `outputPath` | `string`                                                                     | Path to the output file receiving the JSON Schema.                                                                                                                                           |

### Set

```csharp

public static Vision Set(Document document)

```

Creates a Vision instance for the specified document.

**Parameters**

| Name       | Type                                | Description                                        |
| ---------- | ----------------------------------- | -------------------------------------------------- |
| `document` | [`Document`](/api/csharp/document/) | The document to analyze using vision capabilities. |

**Returns:** [`Vision`](/api/csharp/vision/) - A Vision instance ready to perform analysis on the document.

**Throws:** [`NutrientException`](/api/csharp/exceptions/nutrient-exception/) - Thrown when document is null.

### Split

```csharp

public string Split()

```

Splits a merged document into its constituent sub-documents (page-stream segmentation) and exports the result. Every page is scored for whether it starts a new sub-document — fusing a per-page image signal with the page's text — and the contiguous page ranges are returned. The threshold and the other knobs are read from `DocumentSplitSettings` on the document's settings. The result is always JSON; `OutputFormat` is not consulted because only the JSON exporter serializes the split result.

**Returns:** `string` - The exported content as a string (JSON), carrying the detected sub-document segments (1-based inclusive page ranges with their boundary confidence).

### SplitToFile

```csharp

public void SplitToFile(string outputPath)

```

Splits a merged document into its constituent sub-documents (page-stream segmentation) and writes the exported result to a file. The result is always JSON; `OutputFormat` is not consulted because only the JSON exporter serializes the split result.

**Parameters**

| Name         | Type     | Description              |
| ------------ | -------- | ------------------------ |
| `outputPath` | `string` | Path to the output file. |

### Warmup

```csharp

public void Warmup()

```

Preloads (warms up) all resources needed for vision processing. This downloads all model files based on the document's VisionSettings before execution. Call this to avoid download delays during ExtractContent().

## Resource management

```csharp

public void Dispose()

```

`Vision` implements `IDisposable` and owns native resources. Always call `Dispose()` or use a C# `using` declaration: it is not released automatically.

---

## Related pages

- [Csharp](/api/csharp.md)
- [Data Extraction](/api/csharp/data-extraction.md)
- [Document](/api/csharp/document.md)
- [License](/api/csharp/license.md)
- [Query](/api/csharp/query.md)
- [Telemetry](/api/csharp/telemetry.md)

