# TrainableExtractorNativeActivity Class

> `TrainableExtractorNativeActivity` is an abstract class that implements the `UiPath.DocumentProcessing.Contracts.Training.ITrainableExtractorActivity` interface and the `System.Activities.NativeActivity` abstract class.

`TrainableExtractorNativeActivity` is an abstract class that implements the `UiPath.DocumentProcessing.Contracts.Training.ITrainableExtractorActivity` interface and the `System.Activities.NativeActivity` abstract class.

## Definition

* Namespace: `UiPath.DocumentProcessing.Contracts.Training`
* Assembly: `UiPath.DocumentProcessing.Contracts`

## Description

Abstract class that implements the `UiPath.DocumentProcessing.Contracts.Training.ITrainableExtractorActivity` interface and the `System.Activities.NativeActivity` abstract class.

This class should be implemented in order to construct an `NativeActivity` for extractors training, compatible with the [Train Extractors Scope](https://docs.uipath.com/activities/other/latest/document-understanding/train-extractors-scope) activity and the document processing infrastructure.

## Training for data extraction activity

The **Train Extractors Scope** activity auto-populates all defined InArguments for its child activities. These InArguments include the following information:

* Details about the document used in data extraction, including its original file path, text version, and document object model.
* Data about each field requiring training, which is expected to be understood and processed by the training activities. These types are configured in the **Configure Training** wizard via the **Train Extractors Scope** activity.

This activity does not contain any OutArguments.

## Members

#### Constructors

`TrainableExtractorNativeActivity()` - The protected default constructor.

#### Methods

* `GetCapabilities()` - Gets a list of fields the extractor is capable of extracting, for each document type, at design time. This method will only be called at design time, and as such it should NOT use any InArgument(s)
* `ProvidesCapabilities()` - Returns true if the extractor is able to provide a list of capabilities.

#### Properties

* `DocumentPath` `InArgument<string>` - The file path of the document.
* `DocumentText` `InArgument<string>` - The text version of the document.
* `DocumentObjectModel` `InArgument<UiPath.DocumentProcessing.Contracts.Dom.Document>` - The document object model of the document.
* `HumanValidatedData` `InArgument<UiPath.DocumentProcessing.Contracts.Results.ExtractionResult[]>` - The extraction results for the processed document, that you want to use for training.
* `PersistenceId` `<string>` - The unique, opaque ID that is used by the scope activities in order to correctly track and configure the training activity.
