# CaptureVisionRouter

The `CaptureVisionRouter` class is what a user uses to interact with image-processing and semantic-processing products in their applications. It accepts an image source and returns processing results which may contain [Final results](https://www.dynamsoft.com/capture-vision/docs/core/architecture/output.md#final-results).

## Definition

*Package:* com.dynamsoft.cvr

```java
class CaptureVisionRouter
```

## Thread Safety

Instances of `CaptureVisionRouter` are not thread-safe.  
Do not access the same `CaptureVisionRouter` instance from multiple threads concurrently.  
Create a separate instance for each thread if concurrent processing is required.

## Constructor Methods

| Method | Description |
| ------ | ----------- |
| [`CaptureVisionRouter`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/instantiate.md#capturevisionrouter) | Initializes a new instance of the `CaptureVisionRouter` class. |

## Single-File Processing Methods

| Method                                         | Description                                               |
| ---------------------------------------------- | --------------------------------------------------------- |
| [`capture`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/single-file-processing.md#capture) | Processes an image or file to derive important information. |
| [`captureMultiPages`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/single-file-processing.md#capturemultipages) | Processes an image or file containing multiple pages to derive important information. |

## Multiple-File Processing Methods

| Method | Description |
| ------- | ---------- |
| [`setInput`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/multiple-file-processing.md#setinput)                                             | Sets an image source to provide images for consecutive process.              |
| [`getInput`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/multiple-file-processing.md#getinput)                                             | Gets the attached image source adapter object of the capture vision router.  |
| [`addCaptureStateListener`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/multiple-file-processing.md#addcapturestatelistener)               | Adds an object that listens to the state changes of the capture process.     |
| [`removeCaptureStateListener`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/multiple-file-processing.md#removecapturestatelistener)         | Removes an object which listens to the state changes of the capture process. |
| [`addImageSourceStateListener`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/multiple-file-processing.md#addimagesourcestatelistener)       | Adds an object that listens to state changes of the image source.            |
| [`removeImageSourceStateListener`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/multiple-file-processing.md#removeimagesourcestatelistener) | Removes an object which listens to state changes of the image source.        |
| [`addResultReceiver`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/multiple-file-processing.md#addresultreceiver)                           | Adds an object as the receiver of captured results.                          |
| [`removeResultReceiver`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/multiple-file-processing.md#removeresultreceiver)                     | Removes an object which was added as a receiver of captured results.         |
| [`addResultFilter`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/multiple-file-processing.md#addresultfilter)                               | Adds an object as the filter of captured results.                            |
| [`removeResultFilter`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/multiple-file-processing.md#removeresultfilter)                         | Removes an object which was added as a filter of captured results.           |
| [`startCapturing`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/multiple-file-processing.md#startcapturing)                                 | Starts to process images consecutively.                                      |
| [`stopCapturing`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/multiple-file-processing.md#stopcapturing)                                   | Stops the consecutive process.                                               |
| [`pauseCapturing`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/multiple-file-processing.md#pausecapturing)                                 | Pauses the capture process. The current thread will be blocked until the capture process is resumed. |
| [`resumeCapturing`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/multiple-file-processing.md#resumecapturing)                               | Resumes the capture process. The current thread will be unblocked after the capture process is resumed. |
| [`switchCapturingTemplate`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/multiple-file-processing.md#switchcapturingtemplate)    | Switches the capturing template during the image processing workflow.                            |

## Setting Methods

| Method                                                       | Description                                                                                  |
| ------------------------------------------------------------ | -------------------------------------------------------------------------------------------- |
| [`initSettings`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/settings.md#initsettings)                   | Loads and initializes a template from a string.                                              |
| [`initSettingsFromFile`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/settings.md#initsettingsfromfile)   | Loads and initializes a template from a file.                                                |
| [`outputSettings`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/settings.md#outputsettings)               | Exports a specific `CaptureVisionTemplate` to a string.                                      |
| [`outputSettingsToFile`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/settings.md#outputsettingstofile)   | Exports a specific `CaptureVisionTemplate` to a file.                                        |
| [`getSimplifiedSettings`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/settings.md#getsimplifiedsettings) | Retrieves a `SimplifiedCaptureVisionSettings` object for a specific `CaptureVisionTemplate`. |
| [`updateSettings`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/settings.md#updatesettings)               | Updates a `CaptureVisionTemplate` with `SimplifiedCaptureVisionSettings` object.             |
| [`resetSettings`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/settings.md#resetsettings)                 | Resets all templates to factory settings.                                                    |
| [`getParameterTemplateCount`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/settings.md#getparametertemplatecount)  | Retrieves the total number of available parameter templates.                                 |
| [`getParameterTemplateName`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/settings.md#getparametertemplatename)    | Retrieves the name of a specific parameter template by its index.                            |

## Buffered Items Methods

| Method                                                       | Description                                                                                  |
| ------------------------------------------------------------ | -------------------------------------------------------------------------------------------- |
| [`getBufferedItemsManager`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/buffered-items.md#getbuffereditemsmanager)                   | Gets a `BufferedItemsManager` object.  |

## Intermediate Result

The following method returns an `IntermediateResultManager` object which allows the application to tap into the algorithmic process.

| API Name                                                                            | Description                                     |
| ----------------------------------------------------------------------------------- | ----------------------------------------------- |
| [`getIntermediateResultManager`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/intermediate-result.md#getintermediateresultmanager) | Returns an `IntermediateResultManager` object. |

## Auxiliary Methods

| Method                                      | Description                                               |
| --------------------------------------------- | --------------------------------------------------------- |
| [`setGlobalIntraOpNumThreads`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/auxiliary-methods.md#setglobalintraopnumthreads) | Sets the global number of threads used internally for model execution. |
| [`appendDLModelBuffer`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/auxiliary-methods.md#appenddlmodelbuffer) | Appends a deep learning model to the memory buffer. |
| [`clearDLModelBuffers`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/auxiliary-methods.md#cleardlmodelbuffers) | Clears all deep learning models from buffer to free up memory. |
| [`appendModelBuffer`](https://www.dynamsoft.com/capture-vision/docs/server/programming/java/api-reference/capture-vision-router/auxiliary-methods.md#appendmodelbuffer) | Deprecated. Will be removed in future versions. Use `appendDLModelBuffer` instead. |
