This HTML page is not optimized for LLM or AI agent consumption. Fetch the Markdown version instead: /api/python/settings/vision/document-classification-settings.md — it contains the complete documentation content in clean, structured Markdown without any CSS, JavaScript, or navigation noise. DocumentClassificationSettings

Settings for DocumentClassification. Values fall back through three levels: document → SDK → built-in default. Writes target the document only when set on a document’s settings, otherwise the SDK globally when set on SdkSettings.

Tags: Vision

from nutrient_sdk import DocumentClassificationSettings

Construction

DocumentClassificationSettings is accessed through a Document instance for per-document overrides, or via SdkSettings for SDK-wide defaults.

# Per-document override
with Document.open("input.pdf") as doc:
settings = doc.settings.document_classification_settings
settings.some_field = new_value # mutate fields directly
# SDK-wide default (applies to all documents)
SdkSettings.document_classification_settings.some_field = new_value

Settings are configured by writing to fields on the returned object. The settings property itself cannot be reassigned — doc.settings.document_classification_settings = other_settings is rejected.

Properties

auto_weight

@property
def auto_weight(self) -> bool
@auto_weight.setter
def auto_weight(self, value: bool) -> None

Auto (reliability) weighting. When true (default), the text/image split is derived PER DOCUMENT from each branch’s decisiveness (the top1−top2 margin of its per-label scores) — the more confident branch on that document is trusted more — and TextWeight/ ImageWeight are ignored. When false, the fixed TextWeight/ ImageWeight ratio is used. In BOTH modes a weight of 0 still fully disables that branch (skipping its extraction/rendering). The effective per-document image weight is reported on the result for transparency.

Type: bool

Default: true


image_weight

@property
def image_weight(self) -> float
@image_weight.setter
def image_weight(self, value: float) -> None

Relative weight of the image branch in the fused prediction. Set to 0 to use the text branch alone. Default 0.5. Only consulted when AutoWeight is false.

Type: float

Default: 0.5f


include_per_page_scores

@property
def include_per_page_scores(self) -> bool
@include_per_page_scores.setter
def include_per_page_scores(self, value: bool) -> None

Diagnostic opt-in. When true, the classification artifact additionally carries, per ranked prediction, the raw per-page image-branch confidences before multi-page pooling (imageProbabilityPerPage) — letting a caller reconstruct any pooling strategy or PoolingTemperature offline without re-running the model. Default false so production artifacts stay lean; the field is omitted entirely when off.

Type: bool

Default: false


multi_label

@property
def multi_label(self) -> bool
@multi_label.setter
def multi_label(self, value: bool) -> None

Confidence mode (reporting only — does not change the predicted label or ranking). True (default): INDEPENDENT per-label confidence, each in [0,1] (like HuggingFace multi_label=True) — supports multi-label (threshold each label) and out-of-category abstention. False (single-label): the reported per-label confidences are normalized to sum to 1 (share-of-1). The predicted label, ranking, and returned label set are identical either way; only the confidence scale changes. Abstention (the fusion action’s confidenceThreshold input, not a setting) always uses the raw independent confidence.

Type: bool

Default: true


pooling_temperature

@property
def pooling_temperature(self) -> float
@pooling_temperature.setter
def pooling_temperature(self, value: float) -> None

Margin-weighted pooling temperature used by both branches to combine the per-chunk (text) and per-page (image) distributions into one. Higher values let the most distinctive chunk/page dominate more aggressively; values approaching 0 approach a plain average. Default 8.

Type: float

Default: 8f


text

@property
def text(self) -> str
@text.setter
def text(self, value: str) -> None

Document text for the text branch. When non-empty, this text is scored directly. When empty (default), the text is derived from the document by the extraction pipeline at the tier set by Engine (e.g. AdaptiveOcr for fast OCR, Icr for local layout models, VlmEnhancedIcr for VLM-enhanced) — multi-page documents are extracted in full. Set TextWeight to 0 to skip the text branch (and its extraction) entirely.

Type: str

Default: string.Empty


text_weight

@property
def text_weight(self) -> float
@text_weight.setter
def text_weight(self, value: float) -> None

Relative weight of the text branch in the fused prediction. The fused probability for a label is (TextWeight·Pt + ImageWeight·Pi) / (TextWeight + ImageWeight). Set to 0 to use the image branch alone. Default 0.5.

Type: float

Default: 0.5f


top_k

@property
def top_k(self) -> int
@top_k.setter
def top_k(self, value: int) -> None

Maximum number of ranked predictions to return. 0 (default) returns all candidates, ranked by fused probability descending.

Type: int

Default: 0