<!-- 2.0.20 -- Updated on 11/28/2023-->

# DynamsoftCaptureVisionRouter Module

The CaptureVisionRouter module is defined in the namespace `Dynamsoft.CVR`. It consists of the classes `CaptureVisionRouter`, `CaptureVisionRouterModule`, `CapturedResultReceiver`, `IntermediateResultManager`, `IntermediateResultReceiver` and a few interfaces and enumerations.

## CaptureVisionRouter Class

The `CaptureVisionRouter` class defines how a user interacts with image-processing and semantic-processing products in their applications. A `CaptureVisionRouter` instance accepts and processes images from 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?lang=js){:target="_blank"} or [Intermediate Results](https://www.dynamsoft.com/capture-vision/docs/core/architecture/output.md#intermediate-results?lang=js){:target="_blank"}.

### Create and Destroy Instances

| Name                                                         | Description                                                              |
| ------------------------------------------------------------ | ------------------------------------------------------------------------ |
| `static` [createInstance()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/instantiate.md#createinstance) | Initializes a new instance of the `CaptureVisionRouter` class.           |
| [dispose()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/instantiate.md#dispose)                        | Releases all resources used by the `CaptureVisionRouter` instance.       |
| [disposed](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/instantiate.md#disposed)                        | Returns whether the `CaptureVisionRouter` instance has been disposed of. |

### Single-File Processing

| Name                                              | Description                                                                                   |
| ------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| [capture()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/single-image-processing.md#capture) | Processes a single image or file to derive important information. |

### Multiple-Image Processing

| Name                                                                                | Description                                                                            |
| ----------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
| [setInput()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/multiple-image-processing.md#setinput)                               | Sets up an image source to provide images for continuous processing.                   |
| [getInput()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/multiple-image-processing.md#getinput)                               | Returns the image source object.                                                       |
| [addResultReceiver()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/multiple-image-processing.md#addresultreceiver)             | Adds a `CapturedResultReceiver` object as the receiver of captured results.            |
| [removeResultReceiver()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/multiple-image-processing.md#removeresultreceiver)       | Removes the specified `CapturedResultReceiver` object.                                 |
| [addResultFilter()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/multiple-image-processing.md#addresultfilter)                 | Adds a `MultiFrameResultCrossFilter` object to filter non-essential results.           |
| [removeResultFilter()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/multiple-image-processing.md#removeresultfilter)           | Removes the specified `MultiFrameResultCrossFilter` object.                            |
| [startCapturing()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/multiple-image-processing.md#startcapturing)                   | Initiates a capturing process based on a specified template.                           |
| [stopCapturing()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/multiple-image-processing.md#stopcapturing)                     | Stops the capturing process.                                                           |
| [switchCapturingTemplate()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/multiple-image-processing.md#switchcapturingtemplate) | Switches the currently active capturing template during the image processing workflow. |

<!-- | [addImageSourceStateListener()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/multiple-image-processing.md#addimagesourcestatelistener)       | Adds an `ImageSourceStateListener` object that monitors changes in the state of an image source. |
| [removeImageSourceStateListener()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/multiple-image-processing.md#removeimagesourcestatelistener) | Removes the specified `ImageSourceStateListener` object.                                     | -->
<!-- Not required at this time -> meant for Panorama
| [addCaptureStateListener()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/multiple-image-processing.md#addresultfilter)                       | Adds a CaptureStateListener object to listen to the state changes of the capture process.  |
| [removeCaptureStateListener()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/multiple-image-processing.md#removeresultfilter)                 | Removes the specified CaptureStateListener object.                                         | -->

### Settings

| Name                                                           | Description                                                                                                                  |
| -------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| [initSettings()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/settings.md#initsettings)                   | Initializes settings with either a file or a string.                                                                         |
| [outputSettings()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/settings.md#outputsettings)               | Outputs a `CaptureVisionTemplate` specified by its name to a string.                                                         |
| [outputSettingsToFile](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/settings.md#outputsettingstofile)     | Generates a Blob object or initiates a JSON file download containing the settings for the specified `CaptureVisionTemplate`. |
| [getSimplifiedSettings()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/settings.md#getsimplifiedsettings) | Retrieves a JSON object that contains simplified settings for the specified `CaptureVisionTemplate`.                         |
| [getTemplateNames()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/settings.md#gettemplatenames)           | Retrieves the names of all the currently available templates.                         |
| [updateSettings()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/settings.md#updatesettings)               | Updates the specified `CaptureVisionTemplate` with an updated `SimplifiedCaptureVisionSettings` object.                      |
| [resetSettings()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/settings.md#resetsettings)                 | Restores all runtime settings to their original default values.                                                              |

### Intermediate Result

| Name                                                                                    | Description                                                                                |
| --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| [getIntermediateResultManager()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result.md#getintermediateresultmanager) | Returns an object, of type `IntermediateResultManager`, that manages intermediate results. |

### Auxiliaries

| Name                                                                                    | Description                                                                                |
| --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| [maxImageSideLength](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/auxiliary.md#maximagesidelength)                        | Limits the maximum pixel value of the longest side of an image during the processing workflow.       |
| [appendModelBuffer()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/auxiliary.md#appendmodelbuffer)                        | Loads a specific data file containing recognition information.       |
| [onDataLoadProgressChanged()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/auxiliary.md#ondataloadprogresschanged)                        | An event that fires during the loading of a recognition data file (.data). |
| [onCaptureError()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/auxiliary.md#oncaptureerror)                        | An event that fires when an error occurs from the start of capturing process. |

## CaptureVisionRouterModule Class

The `CaptureVisionRouterModule` class defines common functionality in the `CaptureVisionRouter` module.

| Name                                                                        | Description                                            |
| --------------------------------------------------------------------------- | ------------------------------------------------------ |
| `static` [getVersion()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/capture-vision-router-module-class.md#getversion) | Returns the version of the CaptureVisionRouter module. |

## CapturedResultReceiver Class

The `CapturedResultReceiver` class is designed as a standardized way for retrieving captured results in the Dynamsoft Capture Vision architecture. It adopts an event-driven approach, with events dedicated to various result types, such as the original image, decoded barcodes, recognized text lines, processed documents, and parsed results, etc.

| Name                                                                                                     | Description                                                  |
| -------------------------------------------------------------------------------------------------------  | ------------------------------------------------------------ |
| [onCapturedResultReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/captured-result-receiver.md#oncapturedresultreceived)                     | Event triggered when a generic captured result is available. |
| [onOriginalImageResultReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/captured-result-receiver.md#onoriginalimageresultreceived)           | Event triggered when the original image result is available. |
| [onDecodedBarcodesReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/captured-result-receiver.md#ondecodedbarcodesreceived)                   | Event triggered when decoded barcodes are available.         |
| [onRecognizedTextLinesReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/captured-result-receiver.md#onrecognizedtextlinesreceived)           | Event triggered when recognized text lines are available.    |
| [onProcessedDocumentResultReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/captured-result-receiver.md#onprocesseddocumentresultreceived)   | Event triggered when processed documents are available.      |
| [onParsedResultsReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/captured-result-receiver.md#onparsedresultsreceived)                       | Event triggered when parsed results are available.           |

## IntermediateResultManager Class

The `IntermediateResultManager` class is responsible for handling intermediate results obtained during the process of an image. It offers methods to both register and deregister receivers of these intermediate results, as well as to retrieve the original image data.

| Name                                                                            | Description                                                                         |
| ------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| [addResultReceiver()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-manager.md#addresultreceiver)       | Adds a `IntermediateResultReceiver` object as the receiver of intermediate results. |
| [removeResultReceiver()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-manager.md#removeresultreceiver) | Removes the specified `IntermediateResultReceiver` object.                          |
| [getOriginalImage()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-manager.md#getoriginalimage)         | Retrieves the original image data.                                                  |

## IntermediateResultReceiver Class

The `IntermediateResultReceiver` class is designed as a standardized way for retrieving intermediate results in image processing workflows in the Dynamsoft Capture Vision architecture. It adopts an event-driven approach, with events triggered for specific types of results, such as pre-detected regions, localized barcodes, etc. Each event is optional, allowing flexibility and customization based on the needs of the application.

| Name                                                                                                                               | Description                                                                 |
| ---------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
| [onTaskResultsReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-receiver.md#ontaskresultsreceived)                                                 | Event triggered when task results are received.                             |
| [onPredetectedRegionsReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-receiver.md#onpredetectedregionsreceived)                                   | Event triggered when pre-detected regions are received.                     |
| [onLocalizedBarcodesReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-receiver.md#onlocalizedbarcodesreceived)                                     | Event triggered when localized barcodes are received.                       |
| [onDecodedBarcodesReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-receiver.md#ondecodedbarcodesreceived)                                         | Event triggered when decoded barcodes are received.                         |
| [onLocalizedTextLinesReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-receiver.md#onlocalizedtextlinesreceived)                                   | Event triggered when localized text lines are received.                     |
| [onRecognizedTextLinesReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-receiver.md#onrecognizedtextlinesreceived)                                 | Event triggered when recognized text lines are received.                    |
| [onDetectedQuadsReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-receiver.md#ondetectedquadsreceived)                                             | Event triggered when detected quads are received.                           |
| [onColourImageUnitReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-receiver.md#oncolourimageunitreceived)                                         | Event triggered when a colour image unit is received.                       |
| [onScaledDownColourImageUnitReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-receiver.md#onscaleddowncolourimageunitreceived)                     | Event triggered when a scaled-down colour image unit is received.           |
| [onGrayscaleImageUnitReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-receiver.md#ongrayscaleimageunitreceived)                                   | Event triggered when a grayscale image unit is received.                    |
| [onTransformedGrayscaleImageUnitReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-receiver.md#ontransformedgrayscaleimageunitreceived)             | Event triggered when a transformed grayscale image unit is received.        |
| [onEnhancedGrayscaleImageUnitReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-receiver.md#onenhancedgrayscaleimageunitreceived)                   | Event triggered when an enhanced grayscale image unit is received.          |
| [onBinaryImageUnitReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-receiver.md#onbinaryimageunitreceived)                                         | Event triggered when a binary image unit is received.                       |
| [onTextureDetectionResultUnitReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-receiver.md#ontexturedetectionresultunitreceived)                   | Event triggered when a texture detection result unit is received.           |
| [onTextureRemovedGrayscaleImageUnitReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-receiver.md#ontextureremovedgrayscaleimageunitreceived)       | Event triggered when a texture-removed grayscale image unit is received.    |
| [onTextureRemovedBinaryImageUnitReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-receiver.md#ontextureremovedbinaryimageunitreceived)             | Event triggered when a texture-removed binary image unit is received.       |
| [onContoursUnitReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-receiver.md#oncontoursunitreceived)                                               | Event triggered when a contours unit is received.                           |
| [onLineSegmentsUnitReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-receiver.md#onlinesegmentsunitreceived)                                       | Event triggered when a line segments unit is received.                      |
| [onTextZonesUnitReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-receiver.md#ontextzonesunitreceived)                                             | Event triggered when a text zones unit is received.                         |
| [onTextRemovedBinaryImageUnitReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-receiver.md#ontextremovedbinaryimageunitreceived)                   | Event triggered when a text-removed binary image unit is received.          |
| [onLongLinesUnitReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-receiver.md#onlonglinesunitreceived)                                             | Event triggered when a long lines unit is received.                         |
| [onCornersUnitReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-receiver.md#oncornersunitreceived)                                                 | Event triggered when a corners unit is received.                            |
| [onCandidateQuadEdgesUnitReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-receiver.md#oncandidatequadedgesunitreceived)                           | Event triggered when a candidate quad edges unit are detected.              |
| [onCandidateBarcodeZonesUnitReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-receiver.md#oncandidatebarcodezonesunitreceived)                     | Event triggered when a candidate barcode zones unit are detected.           |
| [onScaledUpBarcodeImageUnitReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-receiver.md#onscaledupbarcodeimageunitreceived)                       | Event triggered when a scaled-up barcode image unit is received.            |
| [onDeformationResistedBarcodeImageUnitReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-receiver.md#ondeformationresistedbarcodeimageunitreceived) | Event triggered when a deformation-resisted barcode image unit is received. |
| [onComplementedBarcodeImageUnitReceived()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/intermediate-result-receiver.md#oncomplementedbarcodeimageunitreceived)               | Event triggered when a complemented barcode image unit is received.         |

## BufferedItemsManager Class

The `BufferedItemsManager` class is responsible for storing sample data generated during the recognition of confusable characters. Users can obtain these images and reuse them for more precise recognition in the future.

| Name                                                                                     | Description                                   |
| ---------------------------------------------------------------------------------------- | --------------------------------------------- |
| [getMaxBufferedItems()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/buffered-items-manager.md#getmaxbuffereditems)                 | Gets the buffered recognized character items. |
| [setMaxBufferedItems()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/buffered-items-manager.md#setmaxbuffereditems)                 | Sets the maximum number of buffered items.    |
| [getBufferedCharacterItemSet()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/buffered-items-manager.md#getbufferedcharacteritemset) | Gets the buffered recognized character items. |

## Interfaces

* [CapturedResult](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/interfaces/captured-result.md)
* [SimplifiedCaptureVisionSettings](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/interfaces/simplified-capture-vision-settings.md)

<!-- has bug, ignore for now * [ImageSourceStateListener](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/interfaces/image-source-state-listener.md) -->

<!-- not useful at present
  * [CapturedResultReceiver](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/interfaces/captured-result-receiver.md) -->
<!-- not required at the moment, meant for panorama
  * [CaptureStateListener] -->

## Enums

* [EnumImageSourceState](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/enum-image-source-state.md)

<!-- 
* [EnumPresetTemplate](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/capture-vision-router/preset-template.html?lang=js)

not required at the moment, meant for panorama
  * [EnumCaptureState](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/capture-vision-router/capture-state.html?lang=js) -->
