diff --git a/programming/android/api-reference/candidate-quad-edges-unit.md b/programming/android/api-reference/candidate-quad-edges-unit.md
index 05b9f6f..3f240f8 100644
--- a/programming/android/api-reference/candidate-quad-edges-unit.md
+++ b/programming/android/api-reference/candidate-quad-edges-unit.md
@@ -16,7 +16,7 @@ The `CandidateQuadEdgesUnit` class represents an intermediate result unit whose
*Namespace:* com.dynamsoft.ddn.intermediate_results
-*Assembly:* DynamsoftDocumentNormalizer.aar
+*Assembly:* DynamsoftCaptureVisionBundle.aar
```java
class CandidateQuadEdgesUnit extends IntermediateResultUnit
diff --git a/programming/android/api-reference/corners-unit.md b/programming/android/api-reference/corners-unit.md
index 2c77c3c..d028a67 100644
--- a/programming/android/api-reference/corners-unit.md
+++ b/programming/android/api-reference/corners-unit.md
@@ -16,7 +16,7 @@ The `CornersUnit` class represents an intermediate result unit whose type is cor
*Namespace:* com.dynamsoft.ddn.intermediate_results
-*Assembly:* DynamsoftDocumentNormalizer.aar
+*Assembly:* DynamsoftCaptureVisionBundle.aar
```java
class CornersUnit extends IntermediateResultUnit
diff --git a/programming/android/api-reference/deskewed-image-element.md b/programming/android/api-reference/deskewed-image-element.md
new file mode 100644
index 0000000..73770a1
--- /dev/null
+++ b/programming/android/api-reference/deskewed-image-element.md
@@ -0,0 +1,58 @@
+---
+layout: default-layout
+title: DeskewedImageElement - Dynamsoft Document Normalizer Android SDK API Reference
+description: The class DeskewedImageElement represents an intermediate result whose type is deskewed image, It is inherited from RegionObjectElement and contains image data of deskewed result as additional parameter.
+keywords: deskewed image element, java, kotlin
+needGenerateH3Content: true
+needAutoGenerateSidebar: true
+noTitleIndex: true
+---
+
+# DeskewedImageElement
+
+The `DeskewedImageElement` class represents an intermediate result whose type is deskewed image. It is inherited from `RegionObjectElement` and contains image data of deskewed result as an additional parameter.
+
+## Definition
+
+*Namespace:* com.dynamsoft.ddn.intermediate_results
+
+*Assembly:* DynamsoftCaptureVisionBundle.aar
+
+```java
+class DeskewedImageElement extends RegionObjectElement
+```
+
+## Methods
+
+| Methods | Description |
+| ---------- | ----------- |
+| [`setImageData`](#getimagedata) | Sets the image data of the deskewed image with a `DSImageData` object. |
+| [`getSourceDeskewQuad`](#sourcedeskewquad) | Returns the quadrilateral from which you get the deskewed image result item. |
+
+The following methods are inherited from class [`RegionObjectElement`]({{ site.dcv_android_api }}core/intermediate-results/region-object-element.html).
+
+{%- include api-reference/region-object-element-android.md -%}
+
+### setImageData
+
+Gets an [`ImageData`]({{site.dcv_android_api}}core/basic-structures/image-data.html) object as the deskewed image.
+
+```java
+void setImageData(ImageData imageData);
+```
+
+**Parameters**
+
+`imageData`: A [`ImageData`]({{site.dcv_android_api}}core/basic-structures/image-data.html) object that represents the deskewed image.
+
+### getSourceDeskewQuad
+
+Returns the quadrilateral from which you get the deskewed image result item.
+
+```java
+Quadrilateral getSourceDeskewQuad();
+```
+
+**Return Value**
+
+The quadrilateral from which you get the deskewed image result item.
diff --git a/programming/android/api-reference/deskewed-image-result-item.md b/programming/android/api-reference/deskewed-image-result-item.md
new file mode 100644
index 0000000..66ee671
--- /dev/null
+++ b/programming/android/api-reference/deskewed-image-result-item.md
@@ -0,0 +1,89 @@
+---
+layout: default-layout
+title: DeskewedImageResultItem - Dynamsoft Document Normalizer Android SDK API Reference
+description: The class DeskewedImageResultItem represents a captured result item whose type is a deskewed image. It stores the deskewed image information.
+keywords: deskewed image result item, java, kotlin
+needGenerateH3Content: true
+needAutoGenerateSidebar: true
+noTitleIndex: true
+---
+
+# DeskewedImageResultItem
+
+The `DeskewedImageResultItem` class is an extension of [`CapturedResultItem`]({{ site.dcv_android_api }}core/basic-structures/captured-result-item.html) that represents a deskewed image. This is the most basic unit of the deskewed image result, one of the captured result types that the Capture Vision Router can output.
+
+## Definition
+
+*Namespace:* com.dynamsoft.ddn
+
+*Assembly:* DynamsoftCaptureVisionBundle.aar
+
+```java
+class DeskewedImageResultItem extends CapturedResultItem
+```
+
+## Methods
+
+| Methods | Description |
+| ---------- | ----------- |
+| [`getImageData`](#getimagedata) | Returns an `ImageData` object as the deskewed image. |
+| [`getSourceDeskewQuad`](#getlocation) | Returns the quadrilateral from which you get the deskewed image result item. |
+| [`getCrossVerificationStatus`](#getcrossverificationstatus) | Returns the cross verification status of the result item. |
+| [`getOriginalToLocalMatrix`](#getoriginaltolocalmatrix) | Returns the transformation matrix from the original image coordinate system to the local coordinate system. |
+
+The following methods are inherited from [`CapturedResultItem`]({{ site.dcv_android_api }}core/basic-structures/captured-result-item.html).
+
+| Method | Description |
+| ------ | ----------- |
+| [`getType`]({{ site.dcv_android_api }}core/basic-structures/captured-result-item.html#gettype) | Returns the type of the captured result item, indicating what kind of data it represents. |
+| [`getReferencedItem`]({{ site.dcv_android_api }}core/basic-structures/captured-result-item.html#getreferenceditem) | Returns a property of type `CapturedResultItem` that represents a reference to another captured result item. |
+| [`getTargetROIDefName`]({{ site.dcv_android_api }}core/basic-structures/captured-result-item.html#gettargetroidefname) | Returns the name of the [`TargetROIDef`]({{ site.dcv_parameters_reference }}target-roi-def/) object which includes a task that generated the result. |
+| [`getTaskName`]({{ site.dcv_android_api }}core/basic-structures/captured-result-item.html#gettaskname) | Returns the name of the task that generated the result. |
+
+### getImageData
+
+Returns an [`ImageData`]({{ site.dcv_android_api }}core/basic-structures/image-data.html) object for the deskewed image.
+
+```java
+ImageData getImageData();
+```
+
+**Return Value**
+
+The `ImageData` object as the deskewed image.
+
+### getSourceDeskewQuad
+
+Returns the soure [Quadrilateral]({{ site.dcv_android_api }}core/basic-structures/quadrilateral.html) that used to deskew the image.
+
+```java
+Quadrilateral getLocation();
+```
+
+**Return Value**
+
+The soure [Quadrilateral]({{ site.dcv_android_api }}core/basic-structures/quadrilateral.html) that used to deskew the image.
+
+### getCrossVerificationStatus
+
+Returns the cross verification status of the result item. The cross verification status determines whether the result item is approved by the multi-frame cross verification mechanism. If approved, the cross verification status is `CVS_PASSED`. Otherwise, it is `CVS_FAILED`.
+
+```java
+EnumCrossVerificationStatus getCrossVerificationStatus();
+```
+
+**Return Value**
+
+Returns the cross verification status of type [`EnumCrossVerificationStatus`]({{ site.dcv_enumerations }}core/cross-verification-status.html).
+
+### getOriginalToLocalMatrix
+
+Returns the transformation matrix from the original image coordinate system to the local coordinate system.
+
+```java
+Matrix getOriginalToLocalMatrix();
+```
+
+**Return Value**
+
+The transformation matrix of type `android.graphics.Matrix`.
diff --git a/programming/android/api-reference/deskewed-image-unit.md b/programming/android/api-reference/deskewed-image-unit.md
new file mode 100644
index 0000000..4984a9b
--- /dev/null
+++ b/programming/android/api-reference/deskewed-image-unit.md
@@ -0,0 +1,60 @@
+---
+layout: default-layout
+title: DeskewedImagesUnit - Dynamsoft Document Normalizer Android SDK API Reference
+description: The class DeskewedImagesUnit represents an intermediate result unit whose type is deskewed images.
+keywords: deskewed images, java, kotlin
+needGenerateH3Content: true
+needAutoGenerateSidebar: true
+noTitleIndex: true
+---
+
+# DeskewedImagesUnit
+
+The `DeskewedImagesUnit` class represents an intermediate result unit whose type is deskewed images.
+
+## Definition
+
+*Namespace:* com.dynamsoft.ddn.intermediate_results
+
+*Assembly:* DynamsoftCaptureVisionBundle.aar
+
+```java
+class DeskewedImagesUnit extends IntermediateResultUnit
+```
+
+## Methods
+
+| Methods | Description |
+| ---------- | ----------- |
+| [`getDeskewedImage`](#getdeskewedimage) | Gets the deskewed image of type [`DeskewedImageElement`](deskewed-image-element.md). |
+| [`setDeskewedImage`](#setdeskewedimage) | Sets the deskewed image with a [`DeskewedImageElement`](deskewed-image-element.md) object |
+
+The following methods are inherited from class [`IntermediateResultUnit`]({{ site.dcv_android_api }}core/intermediate-results/intermediate-result-unit.html).
+
+{%- include api-reference/intermediate-result-unit-android.md -%}
+
+### getDeskewedImage
+
+Gets a deskewed image.
+
+```java
+DeskewedImageElement getDeskewedImage();
+```
+
+**Return Value**
+
+A [`DeskewedImageElement`](deskewed-image-element.md) object that represents the deskewed image.
+
+### setDeskewedImage
+
+Sets a [`DeskewedImageElement`](deskewed-image-element.md) as the deskewed image.
+
+```java
+void setDeskewedImage(DeskewedImageElement element, Matrix matrixToOriginalImage);
+```
+
+**Parameters**
+
+`[in] element`: The deskewed image to be set.
+
+`[in] matrixToOriginalImage`: The matrix to the original image.
diff --git a/programming/android/api-reference/detected-quad-element.md b/programming/android/api-reference/detected-quad-element.md
index 774856f..0ba3071 100644
--- a/programming/android/api-reference/detected-quad-element.md
+++ b/programming/android/api-reference/detected-quad-element.md
@@ -16,7 +16,7 @@ The `DetectedQuadElement` class represents a detected quadrilateral element, whi
*Namespace:* com.dynamsoft.ddn.intermediate_results
-*Assembly:* DynamsoftDocumentNormalizer.aar
+*Assembly:* DynamsoftCaptureVisionBundle.aar
```java
class DetectedQuadElement extends RegionObjectElement
diff --git a/programming/android/api-reference/detected-quad-result-item.md b/programming/android/api-reference/detected-quad-result-item.md
index 900081d..50dc464 100644
--- a/programming/android/api-reference/detected-quad-result-item.md
+++ b/programming/android/api-reference/detected-quad-result-item.md
@@ -16,7 +16,7 @@ The `DetectedQuadResultItem` class is an extension of the [`CapturedResultItem`]
*Namespace:* com.dynamsoft.ddn
-*Assembly:* DynamsoftDocumentNormalizer.aar
+*Assembly:* DynamsoftCaptureVisionBundle.aar
```java
class DetectedQuadResultItem extends CapturedResultItem
diff --git a/programming/android/api-reference/detected-quads-result.md b/programming/android/api-reference/detected-quads-result.md
index f767c61..e43817a 100644
--- a/programming/android/api-reference/detected-quads-result.md
+++ b/programming/android/api-reference/detected-quads-result.md
@@ -16,7 +16,7 @@ The `DetectedQuadsResult` class represents a collection of [`DetectedQuadResultI
*Namespace:* com.dynamsoft.ddn
-*Assembly:* DynamsoftDocumentNormalizer.aar
+*Assembly:* DynamsoftCaptureVisionBundle.aar
```java
class DetectedQuadsResult
diff --git a/programming/android/api-reference/detected-quads-unit.md b/programming/android/api-reference/detected-quads-unit.md
index f0692cf..ca3968d 100644
--- a/programming/android/api-reference/detected-quads-unit.md
+++ b/programming/android/api-reference/detected-quads-unit.md
@@ -16,7 +16,7 @@ The `DetectedQuadsUnit` class represents an intermediate result unit whose type
*Namespace:* com.dynamsoft.ddn.intermediate_results
-*Assembly:* DynamsoftDocumentNormalizer.aar
+*Assembly:* DynamsoftCaptureVisionBundle.aar
```java
class DetectedQuadsUnit extends IntermediateResultUnit
diff --git a/programming/android/api-reference/document-normalizer-module.md b/programming/android/api-reference/document-normalizer-module.md
index f62ba7e..71d11af 100644
--- a/programming/android/api-reference/document-normalizer-module.md
+++ b/programming/android/api-reference/document-normalizer-module.md
@@ -16,7 +16,7 @@ The `DocumentNormalizerModule` class defines general functions of the document n
*Namespace:* com.dynamsoft.ddn
-*Assembly:* DynamsoftDocumentNormalizer.aar
+*Assembly:* DynamsoftCaptureVisionBundle.aar
```java
class DocumentNormalizerModule
diff --git a/programming/android/api-reference/enhanced-image-element.md b/programming/android/api-reference/enhanced-image-element.md
new file mode 100644
index 0000000..6f7048e
--- /dev/null
+++ b/programming/android/api-reference/enhanced-image-element.md
@@ -0,0 +1,45 @@
+---
+layout: default-layout
+title: EnhancedImageElement - Dynamsoft Document Normalizer Android SDK API Reference
+description: The class EnhancedImageElement represents an intermediate result whose type is enhanced image, It is inherited from RegionObjectElement and contains image data of enhanced result as additional parameter.
+keywords: enhanced image element, java, kotlin
+needGenerateH3Content: true
+needAutoGenerateSidebar: true
+noTitleIndex: true
+---
+
+# EnhancedImageElement
+
+The `EnhancedImageElement` class represents an intermediate result whose type is enhanced image. It is inherited from `RegionObjectElement` and contains image data of enhanced result as an additional parameter.
+
+## Definition
+
+*Namespace:* com.dynamsoft.ddn.intermediate_results
+
+*Assembly:* DynamsoftCaptureVisionBundle.aar
+
+```java
+class EnhancedImageElement extends RegionObjectElement
+```
+
+## Methods
+
+| Methods | Description |
+| ---------- | ----------- |
+| [`setImageData`](#getimagedata) | Sets the image data of the deskewed image with a `DSImageData` object. |
+
+The following methods are inherited from class [`RegionObjectElement`]({{ site.dcv_android_api }}core/intermediate-results/region-object-element.html).
+
+{%- include api-reference/region-object-element-android.md -%}
+
+### setImageData
+
+Gets an [`ImageData`]({{site.dcv_android_api}}core/basic-structures/image-data.html) object as the enhanced image.
+
+```java
+void setImageData(ImageData imageData);
+```
+
+**Parameters**
+
+`imageData`: A [`ImageData`]({{site.dcv_android_api}}core/basic-structures/image-data.html) object that represents the enhanced image.
diff --git a/programming/android/api-reference/enhanced-image-result-item.md b/programming/android/api-reference/enhanced-image-result-item.md
new file mode 100644
index 0000000..d8739d3
--- /dev/null
+++ b/programming/android/api-reference/enhanced-image-result-item.md
@@ -0,0 +1,63 @@
+---
+layout: default-layout
+title: EnhancedImageResultItem - Dynamsoft Document Normalizer Android SDK API Reference
+description: The class EnhancedImageResultItem represents a captured result item whose type is a enhanced image. It stores the enhanced image information.
+keywords: enhanced image result item, java, kotlin
+needGenerateH3Content: true
+needAutoGenerateSidebar: true
+noTitleIndex: true
+---
+
+# EnhancedImageResultItem
+
+The `EnhancedImageResultItem` class is an extension of [`CapturedResultItem`]({{ site.dcv_android_api }}core/basic-structures/captured-result-item.html) that represents a enhanced image. This is the most basic unit of the enhanced image result, one of the captured result types that the Capture Vision Router can output.
+
+## Definition
+
+*Namespace:* com.dynamsoft.ddn
+
+*Assembly:* DynamsoftCaptureVisionBundle.aar
+
+```java
+class EnhancedImageResultItem extends CapturedResultItem
+```
+
+## Methods
+
+| Methods | Description |
+| ---------- | ----------- |
+| [`getImageData`](#getimagedata) | Returns an `ImageData` object as the enhanced image. |
+| [`getOriginalToLocalMatrix`](#getoriginaltolocalmatrix) | Returns the transformation matrix from the original image coordinate system to the local coordinate system. |
+
+The following methods are inherited from [`CapturedResultItem`]({{ site.dcv_android_api }}core/basic-structures/captured-result-item.html).
+
+| Method | Description |
+| ------ | ----------- |
+| [`getType`]({{ site.dcv_android_api }}core/basic-structures/captured-result-item.html#gettype) | Returns the type of the captured result item, indicating what kind of data it represents. |
+| [`getReferencedItem`]({{ site.dcv_android_api }}core/basic-structures/captured-result-item.html#getreferenceditem) | Returns a property of type `CapturedResultItem` that represents a reference to another captured result item. |
+| [`getTargetROIDefName`]({{ site.dcv_android_api }}core/basic-structures/captured-result-item.html#gettargetroidefname) | Returns the name of the [`TargetROIDef`]({{ site.dcv_parameters_reference }}target-roi-def/) object which includes a task that generated the result. |
+| [`getTaskName`]({{ site.dcv_android_api }}core/basic-structures/captured-result-item.html#gettaskname) | Returns the name of the task that generated the result. |
+
+### getImageData
+
+Returns an [`ImageData`]({{ site.dcv_android_api }}core/basic-structures/image-data.html) object for the enhanced image.
+
+```java
+ImageData getImageData();
+```
+
+**Return Value**
+
+The `ImageData` object as the enhanced image.
+
+### getOriginalToLocalMatrix
+
+Returns the transformation matrix from the original image coordinate system to the local coordinate system.
+
+```java
+Matrix getOriginalToLocalMatrix();
+```
+
+**Return Value**
+
+The transformation matrix of type `android.graphics.Matrix`.
diff --git a/programming/android/api-reference/enhanced-image-unit.md b/programming/android/api-reference/enhanced-image-unit.md
new file mode 100644
index 0000000..24d8e36
--- /dev/null
+++ b/programming/android/api-reference/enhanced-image-unit.md
@@ -0,0 +1,58 @@
+---
+layout: default-layout
+title: EnhancedImagesUnit - Dynamsoft Document Normalizer Android SDK API Reference
+description: The class EnhancedImagesUnit represents an intermediate result unit whose type is enhanced images.
+keywords: enhanced images, java, kotlin
+needGenerateH3Content: true
+needAutoGenerateSidebar: true
+noTitleIndex: true
+---
+
+# EnhancedImagesUnit
+
+The `EnhancedImagesUnit` class represents an intermediate result unit whose type is enhanced images.
+
+## Definition
+
+*Namespace:* com.dynamsoft.ddn.intermediate_results
+
+*Assembly:* DynamsoftCaptureVisionBundle.aar
+
+```java
+class EnhancedImagesUnit extends IntermediateResultUnit
+```
+
+## Methods
+
+| Methods | Description |
+| ---------- | ----------- |
+| [`getEnhancedImage`](#getenhancedimage) | Gets the enhanced image of type [`EnhancedImageElement`](enhanced-image-element.md). |
+| [`setEnhancedImage`](#setenhancedimage) | Sets the enhanced image with a [`EnhancedImageElement`](enhanced-image-element.md) object |
+
+The following methods are inherited from class [`IntermediateResultUnit`]({{ site.dcv_android_api }}core/intermediate-results/intermediate-result-unit.html).
+
+{%- include api-reference/intermediate-result-unit-android.md -%}
+
+### getEnhancedImage
+
+Gets a enhanced image.
+
+```java
+EnhancedImageElement getEnhancedImage();
+```
+
+**Return Value**
+
+A [`EnhancedImageElement`](enhanced-image-element.md) object that represents the enhanced image.
+
+### setEnhancedImage
+
+Sets a [`EnhancedImageElement`](enhanced-image-element.md) as the enhanced image.
+
+```java
+void setEnhancedImage(EnhancedImageElement element);
+```
+
+**Parameters**
+
+`[in] element`: The enhanced image to be set.
diff --git a/programming/android/api-reference/logic-lines-unit.md b/programming/android/api-reference/logic-lines-unit.md
index 0580b4c..ba11d49 100644
--- a/programming/android/api-reference/logic-lines-unit.md
+++ b/programming/android/api-reference/logic-lines-unit.md
@@ -16,7 +16,7 @@ The `LogicLinesUnit` class represents an intermediate result unit containing log
*Namespace:* com.dynamsoft.ddn.intermediate_results
-*Assembly:* DynamsoftDocumentNormalizer.aar
+*Assembly:* DynamsoftCaptureVisionBundle.aar
```java
class LogicLinesUnit extends IntermediateResultUnit
diff --git a/programming/android/api-reference/long-lines-unit.md b/programming/android/api-reference/long-lines-unit.md
index b3f6ca9..04f7882 100644
--- a/programming/android/api-reference/long-lines-unit.md
+++ b/programming/android/api-reference/long-lines-unit.md
@@ -16,7 +16,7 @@ The `LongLinesUnit` class represents an intermediate result unit whose type is l
*Namespace:* com.dynamsoft.ddn.intermediate_results
-*Assembly:* DynamsoftDocumentNormalizer.aar
+*Assembly:* DynamsoftCaptureVisionBundle.aar
```java
class LongLinesUnit extends IntermediateResultUnit
diff --git a/programming/android/api-reference/normalized-image-element.md b/programming/android/api-reference/normalized-image-element.md
index a5410b0..e454db5 100644
--- a/programming/android/api-reference/normalized-image-element.md
+++ b/programming/android/api-reference/normalized-image-element.md
@@ -16,7 +16,7 @@ The `NormalizedImageElement` class represents an intermediate result whose type
*Namespace:* com.dynamsoft.ddn.intermediate_results
-*Assembly:* DynamsoftDocumentNormalizer.aar
+*Assembly:* DynamsoftCaptureVisionBundle.aar
```java
class NormalizedImageElement extends RegionObjectElement
diff --git a/programming/android/api-reference/normalized-image-result-item.md b/programming/android/api-reference/normalized-image-result-item.md
index cf9e1b0..7a7153f 100644
--- a/programming/android/api-reference/normalized-image-result-item.md
+++ b/programming/android/api-reference/normalized-image-result-item.md
@@ -16,7 +16,7 @@ The `NormalizedImageResultItem` class is an extension of [`CapturedResultItem`](
*Namespace:* com.dynamsoft.ddn
-*Assembly:* DynamsoftDocumentNormalizer.aar
+*Assembly:* DynamsoftCaptureVisionBundle.aar
```java
class NormalizedImageResultItem extends CapturedResultItem
diff --git a/programming/android/api-reference/normalized-image-unit.md b/programming/android/api-reference/normalized-image-unit.md
index b40f69a..e2e3ea9 100644
--- a/programming/android/api-reference/normalized-image-unit.md
+++ b/programming/android/api-reference/normalized-image-unit.md
@@ -16,7 +16,7 @@ The `NormalizedImagesUnit` class represents an intermediate result unit whose ty
*Namespace:* com.dynamsoft.ddn.intermediate_results
-*Assembly:* DynamsoftDocumentNormalizer.aar
+*Assembly:* DynamsoftCaptureVisionBundle.aar
```java
class NormalizedImagesUnit extends IntermediateResultUnit
diff --git a/programming/android/api-reference/normalized-images-result.md b/programming/android/api-reference/normalized-images-result.md
index 27aeac2..bc6fd6d 100644
--- a/programming/android/api-reference/normalized-images-result.md
+++ b/programming/android/api-reference/normalized-images-result.md
@@ -16,7 +16,7 @@ The `NormalizedImagesResult` class represents a collection of [`NormalizedImageR
*Namespace:* com.dynamsoft.ddn
-*Assembly:* DynamsoftDocumentNormalizer.aar
+*Assembly:* DynamsoftCaptureVisionBundle.aar
```java
class NormalizedImagesResult
diff --git a/programming/android/api-reference/processed-document-result.md b/programming/android/api-reference/processed-document-result.md
new file mode 100644
index 0000000..011b754
--- /dev/null
+++ b/programming/android/api-reference/processed-document-result.md
@@ -0,0 +1,77 @@
+---
+layout: default-layout
+title: ProcessedDocumentResult - Dynamsoft Document Normalizer Android SDK API Reference
+description: The class ProcessedDocumentResult represents a collection of captured result items whose types are detected boundaries, deskew images or enhanced images.
+keywords: detected boundaries, deskew images, enhanced images, java, kotlin
+needGenerateH3Content: true
+needAutoGenerateSidebar: true
+noTitleIndex: true
+---
+
+# ProcessedDocumentResult
+
+The class `ProcessedDocumentResult` represents a collection of captured result items whose types are detected boundaries, deskew images or enhanced images.
+
+## Definition
+
+*Namespace:* com.dynamsoft.ddn
+
+*Assembly:* DynamsoftCaptureVisionBundle.aar
+
+```java
+class ProcessedDocumentResult
+```
+
+## Methods
+
+| Methods | Description |
+| ---------- | ----------- |
+| [`getDeskewedImageResultItems`](#getdeskewedimageresultitems) | Gets the deskew images with an array of [`DeskewedImageResultItem`](deskewed-image-result-item.md). |
+| [`getDetectedQuadResultItems`](#getdetectedquadresultitems) | Gets the detected boundaries with an array of [`DetectedImageResultItem`](detected-image-result-item.md). |
+| [`getEnhancedImageResultItems`](#getenhancedimageresultitems) | Gets the enhanced images with an array of [`EnhancedImageResultItem`](enhanced-image-result-item.md). |
+
+The following methods are inherited from [`CapturedResultBase`]({{ site.dcv_android_api }}core/basic-structures/captured-result-base.html):
+
+| Method | Description |
+| ------ | ----------- |
+| [`getOriginalImageHashId`]({{ site.dcv_android_api }}core/basic-structures/captured-result-base.html#getoriginalimagehashid) | Gets the hash id of the original image. |
+| [`getOriginalImageTag`]({{ site.dcv_android_api }}core/basic-structures/captured-result-base.html#getoriginalimagetag) | Gets the [ImageTag](image-tag.md) of the original image. |
+| [`getRotationTransformMatrix`]({{ site.dcv_android_api }}core/basic-structures/captured-result-base.html#getrotationtransformmatrix) | Gets the rotation transformation matrix of the original image relative to the rotated image. |
+| [`getErrorCode`]({{ site.dcv_android_api }}core/basic-structures/captured-result-base.html#geterrorcode) | Gets the error code of this result. |
+| [`getErrorMessage`]({{ site.dcv_android_api }}core/basic-structures/captured-result-base.html#geterrormessage) | Gets the error message of this result. |
+
+### getDeskewedImageResultItems
+
+Returns an array of [`DeskewedImageResultItem`](deskewed-image-result-item.md) objects, where each `DeskewedImageResultItem` represents a single deskewed image.
+
+```java
+DeskewedImageResultItem[] getDeskewedImageResultItems();
+```
+
+**Return Value**
+
+The array of the deskewed image result items.
+
+### getDetectedQuadResultItems
+
+Returns an array of [`DetectedQuadResultItem`](detected-quad-result-item.md) objects, where each `DetectedQuadResultItem` represents a single detected boundary.
+
+```java
+DetectedQuadResultItem[] getDetectedQuadResultItems();
+```
+
+**Return Value**
+
+The array of the detected quad result items.
+
+### getEnhancedImageResultItems
+
+Returns an array of [`EnhancedImageResultItem`](enhanced-image-result-item.md) objects, where each `EnhancedImageResultItem` represents a single enhnanced image.
+
+```java
+EnhancedImageResultItem[] getEnhancedImageResultItems();
+```
+
+**Return Value**
+
+The array of the enhanced image result items.
diff --git a/programming/android/api-reference/simplified-document-normalizer-settings.md b/programming/android/api-reference/simplified-document-normalizer-settings.md
index ff518af..7442b81 100644
--- a/programming/android/api-reference/simplified-document-normalizer-settings.md
+++ b/programming/android/api-reference/simplified-document-normalizer-settings.md
@@ -16,7 +16,7 @@ The `SimplifiedDocumentNormalizerSettings` class represents a series of simple s
*Namespace:* com.dynamsoft.ddn
-*Assembly:* DynamsoftDocumentNormalizer.aar
+*Assembly:* DynamsoftCaptureVisionBundle.aar
```java
class SimplifiedDocumentNormalizerSettings
diff --git a/programming/android/user-guide-v2.6.1003.md b/programming/android/user-guide-v2.6.1003.md
new file mode 100644
index 0000000..93cd08b
--- /dev/null
+++ b/programming/android/user-guide-v2.6.1003.md
@@ -0,0 +1,403 @@
+---
+layout: default-layout
+title: Detect and Normalize Document - Android User Guide
+description: This page introduce how to detect and normalize document with Dynamsoft Capture Vision Android SDK.
+keywords: user guide, android, document scanner
+needAutoGenerateSidebar: true
+needGenerateH4Content: true
+noTitleIndex: true
+permalink: /programming/android/user-guide.html
+---
+
+# Android User Guide for Document Scanner Integration
+
+In this guide, you will learn step by step on how to build a document scanner application with Dynamsoft Capture Vision Android SDK.
+
+- [Android User Guide for Document Scanner Integration](#android-user-guide-for-document-scanner-integration)
+ - [Requirements](#requirements)
+ - [Add the SDK](#add-the-sdk)
+ - [Build Your First Application](#build-your-first-application)
+ - [Create a New Project](#create-a-new-project)
+ - [Include the Library](#include-the-library)
+ - [Initialize License](#initialize-license)
+ - [MainActivity for Realtime Document Normalization](#mainactivity-for-realtime-document-normalization)
+ - [Initialize Camera Module](#initialize-camera-module)
+ - [Initialize Capture Vision Router](#initialize-capture-vision-router)
+ - [Add a Captured Result Receiver and Filter](#add-a-captured-result-receiver-and-filter)
+ - [Start and Stop Video Document Normalization](#start-and-stop-video-document-normalization)
+ - [Additional Steps in MainActivity](#additional-steps-in-mainactivity)
+ - [ResultActivity for Displaying the Normalized Image](#resultactivity-for-displaying-the-normalized-image)
+ - [Display the Normalized Image](#display-the-normalized-image)
+ - [Build and Run the Project](#build-and-run-the-project)
+
+## Requirements
+
+- Supported OS: Android 5.0 (API Level 21) or higher.
+- Supported ABI: **armeabi-v7a**, **arm64-v8a**, **x86** and **x86_64**.
+- Development Environment: Android Studio 2022.2.1 or higher.
+
+## Add the SDK
+
+1. Open the file `[App Project Root Path]\app\build.gradle` and add the Maven repository:
+
+ ```groovy
+ allprojects {
+ repositories {
+ maven {
+ url "https://download2.dynamsoft.com/maven/aar"
+ }
+ }
+ }
+ ```
+
+2. Add the references in the dependencies:
+
+ ```groovy
+ dependencies {
+ implementation 'com.dynamsoft:dynamsoftcapturevisionbundle:2.6.1003'
+ }
+ ```
+
+ > Read more about the modules of [dynamsoftcapturevisionbundle]({{site.dcv_android_api}}index.html)
+
+## Build Your First Application
+
+In this section, let's see how to create a HelloWorld app for detecting and normalizing documents from camera video input.
+
+>Note:
+>
+> - Android Studio 2022.2.1 is used here in this guide.
+> - You can get the similar source code of the HelloWorld app from the following link
+> - [DocumentScanner Android Sample](https://github.com/Dynamsoft/capture-vision-mobile-samples/tree/main/Android/DocumentScanner){:target="_blank"}.
+
+### Create a New Project
+
+1. Open Android Studio, select **File > New > New Project**.
+
+2. Choose the correct template for your project. In this sample, we use **Empty Activity**.
+
+3. When prompted, choose your app name 'HelloWorld' and set the **Save** location, **Language**, and **Minimum SDK** (we use 21 here).
+ > Note:
+ >
+ > - With **minSdkVersion** set to 21, your app is compatible with more than 94.1% of devices on the Google Play Store (last update: March 2021).
+
+### Include the Library
+
+Add the SDK to your new project. Please read [Add the SDK](#add-the-sdk) section for more details.
+
+### Initialize License
+
+1. Import the `LicenseManager` class and initialize the license in the file `MyApplication.java`.
+
+ ```java
+ import com.dynamsoft.license.LicenseManager;
+
+ public class MyApplication extends Application {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", this, (isSuccess, error) -> {
+ if (!isSuccess) {
+ Log.e("License", "InitLicense Error: " + error);
+ }
+ });
+ }
+ ```
+
+ >Note:
+ >
+ >- The license string here grants a time-limited free trial which requires network connection to work.
+ >- You can request a 30-day trial license via the [Request a Trial License](https://www.dynamsoft.com/customer/license/trialLicense?product=ddn&utm_source=guide&package=android){:target="_blank"} link
+
+### MainActivity for Realtime Document Normalization
+
+#### Initialize Camera Module
+
+1. In the Project window, open **app > res > layout > `activity_main.xml`** and create a DCE camera view section under the root node.
+
+ ```xml
+
+
+ ```
+
+2. Import the camera module, initialize the camera view and bind to the created Camera Enhancer instance in the file `MainActivity.java`.
+
+ ```java
+ ...
+
+ import com.dynamsoft.dce.CameraView;
+ import com.dynamsoft.dce.CameraEnhancer;
+ import com.dynamsoft.dce.CameraEnhancerException;
+ import com.dynamsoft.dce.utils.PermissionUtil;
+
+ public class MainActivity extends AppCompatActivity {
+ private CameraEnhancer mCamera;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+
+ ...
+
+ CameraView cameraView = findViewById(R.id.camera_view);
+ mCamera = new CameraEnhancer(cameraView, MainActivity.this);
+
+ PermissionUtil.requestCameraPermission(MainActivity.this);
+ }
+ }
+ ```
+
+#### Initialize Capture Vision Router
+
+1. Import and initialize the capture vision router, and set the created Camera Enhancer instance as the input image source.
+
+ ```java
+ ...
+
+ import com.dynamsoft.cvr.CaptureVisionRouter;
+ import com.dynamsoft.cvr.CaptureVisionRouterException;
+
+ public class MainActivity extends AppCompatActivity {
+
+ ...
+
+ private CaptureVisionRouter mRouter;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+
+ ...
+
+ mRouter = new CaptureVisionRouter(MainActivity.this);
+ try {
+ mRouter.setInput(mCamera);
+ } catch (CaptureVisionRouterException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ ```
+
+#### Add a Captured Result Receiver and Filter
+
+1. Add a result receiver to get the normalized image results.
+
+ ```java
+ ...
+
+ import com.dynamsoft.core.basic_structures.CapturedResultReceiver;
+ import com.dynamsoft.core.basic_structures.ImageData;
+ import com.dynamsoft.cvr.EnumPresetTemplate;
+ import com.dynamsoft.ddn.NormalizedImagesResult;
+
+ public class MainActivity extends AppCompatActivity {
+
+ ...
+
+ public static ImageData mNormalizedImageData;
+ private boolean mJumpToOtherActivity = false;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+
+ ...
+
+ mRouter.addResultReceiver(new CapturedResultReceiver() {
+ @Override
+ public void onNormalizedImagesReceived(NormalizedImagesResult result) {
+ if (result.getItems().length > 0) {
+ NormalizedImageResultItem normalizedImageResultItem = result.getItems()[0];
+ if (normalizedImageResultItem.getCrossVerificationStatus() == EnumCrossVerificationStatus.CVS_PASSED || mJumpToOtherActivity)
+ {
+ mJumpToOtherActivity = false;
+ mNormalizedImageData = result.getItems()[0].getImageData();
+
+ Intent intent = new Intent(MainActivity.this, ResultActivity.class);
+ startActivity(intent);
+ }
+ }
+ }
+ });
+ }
+ }
+ ```
+
+2. Add a result cross filter to validate the normalized image result across multiple frames.
+
+ ```java
+ ...
+ import com.dynamsoft.core.basic_structures.EnumCapturedResultItemType;
+ import com.dynamsoft.utility.MultiFrameResultCrossFilter;
+
+ public class MainActivity extends AppCompatActivity {
+
+ ...
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+
+ ...
+ MultiFrameResultCrossFilter filter = new MultiFrameResultCrossFilter();
+ filter.enableResultCrossVerification(EnumCapturedResultItemType.CRIT_NORMALIZED_IMAGE, true);
+ mRouter.addResultFilter(filter);
+ }
+ }
+ ```
+
+#### Start and Stop Video Document Normalization
+
+1. Override the `MainActivity.onResume` function to open camera and start video document normalization, override the `MainActivity.onPause` function to close camera and stop video document normalization.
+
+ ```java
+ public class MainActivity extends AppCompatActivity {
+
+ ...
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ try {
+ mCamera.open();
+ mRouter.startCapturing(EnumPresetTemplate.PT_DETECT_AND_NORMALIZE_DOCUMENT, new CompletionListener() {
+ @Override
+ public void onSuccess() {
+
+ }
+ @Override
+ public void onFailure(int i, String s) {
+ Log.e(TAG, "onFailure: "+s);
+ }
+ });
+ } catch (CameraEnhancerException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ try {
+ mCamera.close();
+ } catch (CameraEnhancerException e) {
+ e.printStackTrace();
+ }
+
+ mRouter.stopCapturing();
+ }
+ }
+ ```
+
+2. Add `onCaptureBtnClick` function to start the video document normalization. After start capturing, the SDK will process the video frames from the Camera Enhancer, then send the normalized image results to the registered result receiver.
+
+ ```java
+ public class MainActivity extends AppCompatActivity {
+
+ ...
+
+ public void onCaptureBtnClick(View v) {
+ mJumpToOtherActivity = true;
+ }
+ }
+ ```
+
+#### Additional Steps in MainActivity
+
+1. In the Project window, open **app > res > layout > `activity_main.xml`**, create a button under the root node to capture the quads detected on the image.
+
+ ```xml
+ ...
+
+
+ ```
+
+### ResultActivity for Displaying the Normalized Image
+
+#### Display the Normalized Image
+
+1. Create a new empty activity named `ResultActivity`.
+
+2. In the AndroidManifest.xml file, declare the `ResultActivity`.
+
+ ```xml
+
+ ...
+
+
+
+
+
+
+
+
+
+
+
+ ...
+
+ ```
+
+3. In the Project window, open **app > res > layout > `activity_result.xml`**, create a image view under the root node to display the result image.
+
+ ```xml
+
+ ```
+
+4. Display the normalized image.
+
+ ```java
+ import android.os.Bundle;
+ import android.widget.ImageView;
+
+ import androidx.annotation.Nullable;
+ import androidx.appcompat.app.AppCompatActivity;
+ import com.dynamsoft.core.basic_structures.CoreException;
+
+ public class ResultActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_result);
+
+ ImageView ivNormalize = findViewById(R.id.iv_normalize);
+
+ try {
+ ivNormalize.setImageBitmap(MainActivity.mNormalizedImageData.toBitmap());
+ } catch (CoreException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ ```
+
+### Build and Run the Project
+
+1. Select the device that you want to run your app on from the target device drop-down menu in the toolbar.
+
+2. Click the **Run app** button, then Android Studio installs your app on your connected device and starts it.
+
+You can download the similar source code here:
+
+- [Java](https://github.com/Dynamsoft/capture-vision-mobile-samples/tree/main/android/DocumentScanner/AutoNormalize){:target="_blank"}.
+- [Kotlin](https://github.com/Dynamsoft/capture-vision-mobile-samples/tree/main/android/DocumentScanner/AutoNormalizeKt){:target="_blank"}.
diff --git a/programming/android/user-guide.md b/programming/android/user-guide.md
index 93cd08b..e031226 100644
--- a/programming/android/user-guide.md
+++ b/programming/android/user-guide.md
@@ -38,27 +38,61 @@ In this guide, you will learn step by step on how to build a document scanner ap
## Add the SDK
-1. Open the file `[App Project Root Path]\app\build.gradle` and add the Maven repository:
-
- ```groovy
- allprojects {
- repositories {
- maven {
+1. Open the file `[App Project Root Path]\settings.gradle` and add the Maven repository:
+
+
+ >- groovy
+ >- kts
+ >
+ >1.
+ ```groovy
+ dependencyResolutionManagement {
+ repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
+ repositories {
+ google()
+ mavenCentral()
+ maven {
url "https://download2.dynamsoft.com/maven/aar"
- }
- }
- }
- ```
+ }
+ }
+ }
+ ```
+ 2.
+ ```kotlin
+ dependencyResolutionManagement {
+ repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
+ repositories {
+ google()
+ mavenCentral()
+ maven {
+ url = uri("https://download2.dynamsoft.com/maven/aar")
+ }
+ }
+ }
+ ```
-2. Add the references in the dependencies:
+ > Note: If you are using gradle 6.x or older version, the maven dependencies should be configured in `[App Project Root Path]\app\build.gradle`
- ```groovy
- dependencies {
- implementation 'com.dynamsoft:dynamsoftcapturevisionbundle:2.6.1003'
- }
- ```
+2. Open the file `[App Project Root Path]\app\build.gradle` and add the dependencies:
+
+
+ >- groovy
+ >- kts
+ >
+ >1.
+ ```groovy
+ dependencies {
+ implementation 'com.dynamsoft:capturevisionbundle:3.0.3000'
+ }
+ ```
+ 2.
+ ```kotlin
+ dependencies {
+ implementation("com.dynamsoft:capturevisionbundle:3.0.3000")
+ }
+ ```
- > Read more about the modules of [dynamsoftcapturevisionbundle]({{site.dcv_android_api}}index.html)
+3. Click **Sync Now**. After the synchronization is complete, the SDK is added to the project.
## Build Your First Application
@@ -66,7 +100,7 @@ In this section, let's see how to create a HelloWorld app for detecting and norm
>Note:
>
-> - Android Studio 2022.2.1 is used here in this guide.
+> - Android Studio 2024.1.2 is used here in this guide.
> - You can get the similar source code of the HelloWorld app from the following link
> - [DocumentScanner Android Sample](https://github.com/Dynamsoft/capture-vision-mobile-samples/tree/main/Android/DocumentScanner){:target="_blank"}.
diff --git a/programming/ios/api-reference/candidate-quad-edges-unit.md b/programming/ios/api-reference/candidate-quad-edges-unit.md
index 0b54a66..e9c3d01 100644
--- a/programming/ios/api-reference/candidate-quad-edges-unit.md
+++ b/programming/ios/api-reference/candidate-quad-edges-unit.md
@@ -14,7 +14,7 @@ The `DSCandidateQuadEdgesUnit` class represents an intermediate result unit whos
## Definition
-*Assembly:* DynamsoftDocumentNormalizer.xcframework
+*Assembly:* DynamsoftCaptureVisionBundle.xcframework
>- Objective-C
diff --git a/programming/ios/api-reference/corners-unit.md b/programming/ios/api-reference/corners-unit.md
index 662c681..6413802 100644
--- a/programming/ios/api-reference/corners-unit.md
+++ b/programming/ios/api-reference/corners-unit.md
@@ -14,7 +14,7 @@ The `DSCornersUnit` class represents an intermediate result unit whose type is c
## Definition
-*Assembly:* DynamsoftDocumentNormalizer.xcframework
+*Assembly:* DynamsoftCaptureVisionBundle.xcframework
>- Objective-C
diff --git a/programming/ios/api-reference/deskewed-image-element.md b/programming/ios/api-reference/deskewed-image-element.md
new file mode 100644
index 0000000..0d09966
--- /dev/null
+++ b/programming/ios/api-reference/deskewed-image-element.md
@@ -0,0 +1,96 @@
+---
+layout: default-layout
+title: DSDeskewedImageElement - Dynamsoft Document Normalizer module iOS Edition API Reference
+description: The class DSDeskewedImageElement of Dynamsoft Document Normalizer module represents an intermediate result whose type is deskewed image, It is inherited from DSRegionObjectElement and contains image data of deskewed result as additional parameter.
+keywords: deskewed image element, objective-c, swift
+needGenerateH3Content: true
+needAutoGenerateSidebar: true
+noTitleIndex: true
+---
+
+# DSDeskewedImageElement
+
+The `DSDeskewedImageElement` class represents an intermediate result whose type is deskewed image. It is inherited from `DSRegionObjectElement` and contains image data of deskewed result as an additional parameter.
+
+## Definition
+
+*Assembly:* DynamsoftCaptureVisionBundle.xcframework
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+@interface DSDeskewedImageElement : DSRegionObjectElement
+```
+2.
+```swift
+class DeskewedImageElement : RegionObjectElement
+```
+
+## Methods
+
+| Methods | Description |
+| ------- | ----------- |
+| [`setImageData`](#getimagedata) | Sets the image data of the deskewed image with a `DSImageData` object. |
+
+
+| Attributes | Type | Description |
+| ---------- | ---- | ----------- |
+| [`sourceDeskewQuad`](#sourcedeskewquad) | *DSQuadrilateral \** | The quadrilateral from which you get the deskewed image result item. |
+
+The following methods are inherited from class [`DSRegionObjectElement`]({{ site.dcv_ios_api }}core/intermediate-results/region-object-element.html).
+
+{%- include api-reference/region-object-element-ios.md -%}
+
+### getImageData
+
+Returns `DSImageData` object as the image data of a deskewed image.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (nullable DSImageData *)getImageData;
+```
+2.
+```swift
+func getImageData() -> DSImageData?
+```
+
+### setImageData
+
+Sets the image data of the deskewed image with a `DSImageData` object.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (void)setImageData:(nullable DSImageData *)imageData;
+```
+2.
+```swift
+func setImageData(_ imageData: ImageData?)
+```
+
+### sourceDeskewQuad
+
+The quadrilateral from which you get the deskewed image result item.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (void)setImageData:(nullable DSImageData *)imageData;
+```
+2.
+```swift
+func setImageData(_ imageData: ImageData?)
+```
diff --git a/programming/ios/api-reference/deskewed-image-result-item.md b/programming/ios/api-reference/deskewed-image-result-item.md
new file mode 100644
index 0000000..4efa44b
--- /dev/null
+++ b/programming/ios/api-reference/deskewed-image-result-item.md
@@ -0,0 +1,120 @@
+---
+layout: default-layout
+title: DSDeskewedImageResultItem - Dynamsoft Document Normalizer module iOS Edition API Reference
+description: The class DSDeskewedImageResultItem of Dynamsoft Document Normalizer module represents a captured result item whose type is a deskewed image. It stores the deskewed image information.
+keywords: deskewed image result item, objective-c, swift
+needGenerateH3Content: true
+needAutoGenerateSidebar: true
+noTitleIndex: true
+---
+
+# DSDeskewedImageResultItem
+
+The `DSDeskewedImageResultItem` class is an extension of [`DSCapturedResultItem`]({{ site.dcv_ios_api }}core/basic-structures/captured-result-item.html) that represents a deskewed image. This is the most basic unit of the deskewed image result, one of the captured result types that the Capture Vision Router can output.
+
+## Definition
+
+*Assembly:* DynamsoftCaptureVisionBundle.xcframework
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+@interface DSDeskewedImageResultItem: DSCapturedResultItem
+```
+2.
+```swift
+class DeskewedImageResultItem : CapturedResultItem
+```
+
+## Attributes
+
+| Attributes | Type | Description |
+| ---------- | ---- | ----------- |
+| [`imageData`](#imagedata) | *DSImageData \** | A `DSImageData` object as the image data of a deskewed image. |
+| [`sourceDeskewQuad`](#sourcedeskewquad) | *DSQuadrilateral \** | The quadrilateral from which you get the deskewed image result item. |
+| [`crossVerificationStatus`](#crossverificationstatus) | *DSCrossVerificationStatus* | The cross verification status of the result item. |
+| [`originalToLocalMatrix`](#originaltolocalmatrix) | *CGAffineTransform* | The transformation matrix from the original image coordinate system to the local coordinate system. |
+
+The following attributes are inherited from [`DSCapturedResultItem`]({{ site.dcv_ios_api }}core/basic-structures/captured-result-item.html).
+
+| Attributes | Type | Description |
+| ---------- | ---- | ----------- |
+| [`type`]({{ site.dcv_ios_api }}core/basic-structures/captured-result-item.html#type) | *DSCapturedResultItemType* | The type of the captured result item. |
+| [`referencedItem`]({{ site.dcv_ios_api }}core/basic-structures/captured-result-item.html#referenceditem) | *DSCapturedResultItem \** | The referenced captured result item. The reference dependencies is defined in the Capture Vision settings. |
+| [`targetROIDefName`]({{ site.dcv_ios_api }}core/basic-structures/captured-result-item.html#targetroidefname) | *NSString* | The name of the [`TargetROIDef`]({{ site.dcv_parameters_reference }}target-roi-def/) object which includes a task that generated the result. |
+| [`taskName`]({{ site.dcv_ios_api }}core/basic-structures/captured-result-item.html#taskname) | *NSString* | The name of the task that generated the result. |
+
+### imageData
+
+A [`DSImageData`]({{ site.dcv_ios_api }}core/basic-structures/image-data.html) object for the deskewed image.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+@property (nonatomic, nullable, readonly) DSImageData *imageData
+```
+2.
+```swift
+var imageData: ImageData? { get }
+```
+
+### location
+
+The quadrilateral from which you get the deskewed image result item.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+@property (nonatomic, nullable, readonly) DSQuadrilateral *location
+```
+2.
+```swift
+var location: Quadrilateral? { get }
+```
+
+### crossVerificationStatus
+
+The cross verification status of the result. The cross verification status determines whether the result item is approved by the multi-frame cross verification mechanism. If approved, the cross verification status is `passed`. Otherwise, it is `failed`.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+@property (nonatomic, readonly) DSCrossVerificationStatus crossVerificationStatus;
+```
+2.
+```swift
+var crossVerificationStatus: CrossVerificationStatus { get }
+```
+
+Related API:
+
+- [`DSCrossVerificationStatus`]({{ site.dcv_enumerations }}core/cross-verification-status.html)
+
+### originalToLocalMatrix
+
+The transformation matrix from the original image coordinate system to the local coordinate system.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+@property (nonatomic, readonly, assign) CGAffineTransform originalToLocalMatrix;
+```
+2.
+```swift
+var originalToLocalMatrix: CGAffineTransform { get }
+```
diff --git a/programming/ios/api-reference/deskewed-image-unit.md b/programming/ios/api-reference/deskewed-image-unit.md
new file mode 100644
index 0000000..42796a1
--- /dev/null
+++ b/programming/ios/api-reference/deskewed-image-unit.md
@@ -0,0 +1,90 @@
+---
+layout: default-layout
+title: DSDeskewedImagesUnit - Dynamsoft Document Normalizer module iOS Edition API Reference
+description: The class DSDeskewedImagesUnit of Dynamsoft Document Normalizer module represents an intermediate result unit whose type is deskewed images.
+keywords: deskewed images, objective-c, swift
+needGenerateH3Content: true
+needAutoGenerateSidebar: true
+noTitleIndex: true
+---
+
+# DSDeskewedImagesUnit
+
+The `DSDeskewedImagesUnit` class represents an intermediate result unit whose type is deskewed images.
+
+## Definition
+
+*Assembly:* DynamsoftCaptureVisionBundle.xcframework
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+@interface DSDeskewedImagesUnit: DSIntermediateResultUnit
+```
+2.
+```swift
+class DeskewedImagesUnit: IntermediateResultUnit
+```
+
+## Methods
+
+| Methods | Description |
+| ------- | ----------- |
+| [`getDeskewedImage`](#getdeskewedimage) | Gets the deskewed image of type [`DSDeskewedImageElement`](deskewed-image-element.md). |
+| [`setDeskewedImage`](#setdeskewedimage) | Sets the deskewed image with a [`DSDeskewedImageElement`](deskewed-image-element.md) object |
+
+The following methods are inherited from class [`DSIntermediateResultUnit`]({{ site.dcv_ios_api }}core/intermediate-results/intermediate-result-unit.html).
+
+{%- include api-reference/intermediate-result-unit-ios.md -%}
+
+### getDeskewedImage
+
+Gets the deskewed image of type [`DSDeskewedImageElement`](deskewed-image-element.md).
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+-(DSDeskewedImageElement *)getDeskewedImage;
+```
+2.
+```swift
+func getDeskewedImage() -> DeskewedImageElement
+```
+
+**Return Value**
+
+The deskewed image of type [`DSDeskewedImageElement`](deskewed-image-element.md).
+
+### setDeskewedImage
+
+Set the deskewed image with a [`DSDeskewedImageElement`](deskewed-image-element.md) object.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+-(NSInteger)setDeskewedImage:(DSDeskewedImageElement*)element
+ matrixToOriginalImage:(CGAffineTransform)matrixToOriginalImage;
+```
+2.
+```swift
+func setDeskewedImage(element: DeskewedImageElement, matrixToOriginalImage: CGAffineTransform) -> Int
+```
+
+**Parameters**
+
+`[in] element`: The deskewed image to be set.
+
+`[in] matrixToOriginalImage`: The matrix to the original image.
+
+**Return Value**
+
+Returns the `ErrorCode` if failed. Otherwise, returns 0.
diff --git a/programming/ios/api-reference/detected-quad-element.md b/programming/ios/api-reference/detected-quad-element.md
index f90e2f7..fade1d6 100644
--- a/programming/ios/api-reference/detected-quad-element.md
+++ b/programming/ios/api-reference/detected-quad-element.md
@@ -14,7 +14,7 @@ The `DSDetectedQuadElement` class represents a detected quadrilateral element, w
## Definition
-*Assembly:* DynamsoftDocumentNormalizer.xcframework
+*Assembly:* DynamsoftCaptureVisionBundle.xcframework
>- Objective-C
diff --git a/programming/ios/api-reference/detected-quad-result-item.md b/programming/ios/api-reference/detected-quad-result-item.md
index 11cb688..f1b2276 100644
--- a/programming/ios/api-reference/detected-quad-result-item.md
+++ b/programming/ios/api-reference/detected-quad-result-item.md
@@ -14,7 +14,7 @@ The `DetectedQuadResultItem` class is an extension of the [`DSCapturedResultItem
## Definition
-*Assembly:* DynamsoftDocumentNormalizer.xcframework
+*Assembly:* DynamsoftCaptureVisionBundle.xcframework
>- Objective-C
diff --git a/programming/ios/api-reference/detected-quads-result.md b/programming/ios/api-reference/detected-quads-result.md
index 745d1e3..f5ed71a 100644
--- a/programming/ios/api-reference/detected-quads-result.md
+++ b/programming/ios/api-reference/detected-quads-result.md
@@ -14,7 +14,7 @@ The `DSDetectedQuadsResult` class represents a collection of [`DSDetectedQuadRes
## Definition
-*Assembly:* DynamsoftDocumentNormalizer.xcframework
+*Assembly:* DynamsoftCaptureVisionBundle.xcframework
>- Objective-C
diff --git a/programming/ios/api-reference/detected-quads-unit.md b/programming/ios/api-reference/detected-quads-unit.md
index 76bba5c..2337a36 100644
--- a/programming/ios/api-reference/detected-quads-unit.md
+++ b/programming/ios/api-reference/detected-quads-unit.md
@@ -14,7 +14,7 @@ The `DSDetectedQuadsUnit` class represents an intermediate result unit whose typ
## Definition
-*Assembly:* DynamsoftDocumentNormalizer.xcframework
+*Assembly:* DynamsoftCaptureVisionBundle.xcframework
>- Objective-C
diff --git a/programming/ios/api-reference/document-normalizer-module.md b/programming/ios/api-reference/document-normalizer-module.md
index eaad6b2..fea32e2 100644
--- a/programming/ios/api-reference/document-normalizer-module.md
+++ b/programming/ios/api-reference/document-normalizer-module.md
@@ -14,7 +14,7 @@ The `DSDocumentNormalizerModule` class defines general functions of the document
## Definition
-*Assembly:* DynamsoftDocumentNormalizer.xcframework
+*Assembly:* DynamsoftCaptureVisionBundle.xcframework
>- Objective-C
diff --git a/programming/ios/api-reference/enhanced-image-element.md b/programming/ios/api-reference/enhanced-image-element.md
new file mode 100644
index 0000000..ffc188f
--- /dev/null
+++ b/programming/ios/api-reference/enhanced-image-element.md
@@ -0,0 +1,57 @@
+---
+layout: default-layout
+title: DSEnhancedImageElement - Dynamsoft Document Normalizer module iOS Edition API Reference
+description: The class DSEnhancedImageElement of Dynamsoft Document Normalizer module represents an intermediate result whose type is enhanced image, It is inherited from DSRegionObjectElement and contains image data of enhanced result as additional parameter.
+keywords: enhanced image element, objective-c, swift
+needGenerateH3Content: true
+needAutoGenerateSidebar: true
+noTitleIndex: true
+---
+
+# DSEnhancedImageElement
+
+The `DSEnhancedImageElement` class represents an intermediate result whose type is enhanced image. It is inherited from `DSRegionObjectElement` and contains image data of enhanced result as an additional parameter.
+
+## Definition
+
+*Assembly:* DynamsoftCaptureVisionBundle.xcframework
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+@interface DSEnhancedImageElement : DSRegionObjectElement
+```
+2.
+```swift
+class EnhancedImageElement : RegionObjectElement
+```
+
+## Methods
+
+| Methods | Description |
+| ------- | ----------- |
+| [`setImageData`](#getimagedata) | Sets the image data of the enhanced image with a `DSImageData` object. |
+
+The following methods are inherited from class [`DSRegionObjectElement`]({{ site.dcv_ios_api }}core/intermediate-results/region-object-element.html).
+
+{%- include api-reference/region-object-element-ios.md -%}
+
+### setImageData
+
+Sets the image data of the enhanced image with a `DSImageData` object.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (void)setImageData:(nullable DSImageData *)imageData;
+```
+2.
+```swift
+func setImageData(_ imageData: ImageData?)
+```
diff --git a/programming/ios/api-reference/enhanced-image-result-item.md b/programming/ios/api-reference/enhanced-image-result-item.md
new file mode 100644
index 0000000..df8b136
--- /dev/null
+++ b/programming/ios/api-reference/enhanced-image-result-item.md
@@ -0,0 +1,80 @@
+---
+layout: default-layout
+title: DSEnhancedImageResultItem - Dynamsoft Document Normalizer module iOS Edition API Reference
+description: The class DSEnhancedImageResultItem of Dynamsoft Document Normalizer module represents a captured result item whose type is a enhanced image. It stores the enhanced image information.
+keywords: enhanced image result item, objective-c, swift
+needGenerateH3Content: true
+needAutoGenerateSidebar: true
+noTitleIndex: true
+---
+
+# DSEnhancedImageResultItem
+
+The `DSEnhancedImageResultItem` class is an extension of [`DSCapturedResultItem`]({{ site.dcv_ios_api }}core/basic-structures/captured-result-item.html) that represents a enhanced image. This is the most basic unit of the enhanced image result, one of the captured result types that the Capture Vision Router can output.
+
+## Definition
+
+*Assembly:* DynamsoftCaptureVisionBundle.xcframework
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+@interface DSEnhancedImageResultItem: DSCapturedResultItem
+```
+2.
+```swift
+class EnhancedImageResultItem : CapturedResultItem
+```
+
+## Attributes
+
+| Attributes | Type | Description |
+| ---------- | ---- | ----------- |
+| [`imageData`](#imagedata) | *DSImageData \** | A `DSImageData` object as the image data of a enhanced image. |
+| [`originalToLocalMatrix`](#originaltolocalmatrix) | *CGAffineTransform* | The transformation matrix from the original image coordinate system to the local coordinate system. |
+
+The following attributes are inherited from [`DSCapturedResultItem`]({{ site.dcv_ios_api }}core/basic-structures/captured-result-item.html).
+
+| Attributes | Type | Description |
+| ---------- | ---- | ----------- |
+| [`type`]({{ site.dcv_ios_api }}core/basic-structures/captured-result-item.html#type) | *DSCapturedResultItemType* | The type of the captured result item. |
+| [`referencedItem`]({{ site.dcv_ios_api }}core/basic-structures/captured-result-item.html#referenceditem) | *DSCapturedResultItem \** | The referenced captured result item. The reference dependencies is defined in the Capture Vision settings. |
+| [`targetROIDefName`]({{ site.dcv_ios_api }}core/basic-structures/captured-result-item.html#targetroidefname) | *NSString* | The name of the [`TargetROIDef`]({{ site.dcv_parameters_reference }}target-roi-def/) object which includes a task that generated the result. |
+| [`taskName`]({{ site.dcv_ios_api }}core/basic-structures/captured-result-item.html#taskname) | *NSString* | The name of the task that generated the result. |
+
+### imageData
+
+A [`DSImageData`]({{ site.dcv_ios_api }}core/basic-structures/image-data.html) object for the enhanced image.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+@property (nonatomic, nullable, readonly) DSImageData *imageData
+```
+2.
+```swift
+var imageData: ImageData? { get }
+```
+
+### originalToLocalMatrix
+
+The transformation matrix from the original image coordinate system to the local coordinate system.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+@property (nonatomic, readonly, assign) CGAffineTransform originalToLocalMatrix;
+```
+2.
+```swift
+var originalToLocalMatrix: CGAffineTransform { get }
+```
diff --git a/programming/ios/api-reference/enhanced-image-unit.md b/programming/ios/api-reference/enhanced-image-unit.md
new file mode 100644
index 0000000..71dbdf9
--- /dev/null
+++ b/programming/ios/api-reference/enhanced-image-unit.md
@@ -0,0 +1,87 @@
+---
+layout: default-layout
+title: DSEnhancedImagesUnit - Dynamsoft Document Normalizer module iOS Edition API Reference
+description: The class DSEnhancedImagesUnit of Dynamsoft Document Normalizer module represents an intermediate result unit whose type is enhanced images.
+keywords: enhanced images, objective-c, swift
+needGenerateH3Content: true
+needAutoGenerateSidebar: true
+noTitleIndex: true
+---
+
+# DSEnhancedImagesUnit
+
+The `DSEnhancedImagesUnit` class represents an intermediate result unit whose type is enhanced images.
+
+## Definition
+
+*Assembly:* DynamsoftCaptureVisionBundle.xcframework
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+@interface DSEnhancedImagesUnit: DSIntermediateResultUnit
+```
+2.
+```swift
+class EnhancedImagesUnit: IntermediateResultUnit
+```
+
+## Methods
+
+| Methods | Description |
+| ------- | ----------- |
+| [`getEnhancedImage`](#getenhancedimage) | Gets the enhanced image of type [`DSEnhancedImageElement`](enhanced-image-element.md). |
+| [`setEnhancedImage`](#setenhancedimage) | Set the [`DSEnhancedImageElement`](enhanced-image-element.md) at the specified index. |
+
+The following methods are inherited from class [`DSIntermediateResultUnit`]({{ site.dcv_ios_api }}core/intermediate-results/intermediate-result-unit.html).
+
+{%- include api-reference/intermediate-result-unit-ios.md -%}
+
+### getEnhancedImage
+
+Gets the [`DSEnhancedImageElement`](enhanced-image-element.md).
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+-(DSEnhancedImageElement *)getEnhancedImage;
+```
+2.
+```swift
+func getEnhancedImage() -> EnhancedImageElement
+```
+
+**Return Value**
+
+The enhanced image of type [`DSEnhancedImageElement`](enhanced-image-element.md).
+
+### setEnhancedImage
+
+Set the [`DSEnhancedImageElement`](enhanced-image-element.md) at the specified index.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+-(NSInteger)setEnhancedImage:(DSEnhancedImageElement*)element;
+```
+2.
+```swift
+func setEnhancedImage(element: EnhancedImageElement) -> Int
+```
+
+**Parameters**
+
+`[in] element`: The enhanced image to be set.
+
+**Return Value**
+
+Returns the `ErrorCode` if failed. Otherwise, returns 0.
diff --git a/programming/ios/api-reference/logic-lines-unit.md b/programming/ios/api-reference/logic-lines-unit.md
index d4ce191..168ec76 100644
--- a/programming/ios/api-reference/logic-lines-unit.md
+++ b/programming/ios/api-reference/logic-lines-unit.md
@@ -14,7 +14,7 @@ The `LogicLinesUnit` class represents an intermediate result unit containing log
## Definition
-*Assembly:* DynamsoftDocumentNormalizer.xcframework
+*Assembly:* DynamsoftCaptureVisionBundle.xcframework
>- Objective-C
diff --git a/programming/ios/api-reference/long-lines-unit.md b/programming/ios/api-reference/long-lines-unit.md
index 9f6571b..d37842c 100644
--- a/programming/ios/api-reference/long-lines-unit.md
+++ b/programming/ios/api-reference/long-lines-unit.md
@@ -14,7 +14,7 @@ The `DSLongLinesUnit` class represents an intermediate result unit whose type is
## Definition
-*Assembly:* DynamsoftDocumentNormalizer.xcframework
+*Assembly:* DynamsoftCaptureVisionBundle.xcframework
>- Objective-C
diff --git a/programming/ios/api-reference/normalized-image-element.md b/programming/ios/api-reference/normalized-image-element.md
index 94b4bb3..de79a4b 100644
--- a/programming/ios/api-reference/normalized-image-element.md
+++ b/programming/ios/api-reference/normalized-image-element.md
@@ -14,7 +14,7 @@ The `DSNormalizedImageElement` class represents an intermediate result whose typ
## Definition
-*Assembly:* DynamsoftDocumentNormalizer.xcframework
+*Assembly:* DynamsoftCaptureVisionBundle.xcframework
>- Objective-C
diff --git a/programming/ios/api-reference/normalized-image-result-item.md b/programming/ios/api-reference/normalized-image-result-item.md
index 5089d9c..0ec11f3 100644
--- a/programming/ios/api-reference/normalized-image-result-item.md
+++ b/programming/ios/api-reference/normalized-image-result-item.md
@@ -14,7 +14,7 @@ The `DSNormalizedImageResultItem` class is an extension of [`DSCapturedResultIt
## Definition
-*Assembly:* DynamsoftDocumentNormalizer.xcframework
+*Assembly:* DynamsoftCaptureVisionBundle.xcframework
>- Objective-C
diff --git a/programming/ios/api-reference/normalized-image-unit.md b/programming/ios/api-reference/normalized-image-unit.md
index 30278b8..197b206 100644
--- a/programming/ios/api-reference/normalized-image-unit.md
+++ b/programming/ios/api-reference/normalized-image-unit.md
@@ -14,7 +14,7 @@ The `DSNormalizedImagesUnit` class represents an intermediate result unit whose
## Definition
-*Assembly:* DynamsoftDocumentNormalizer.xcframework
+*Assembly:* DynamsoftCaptureVisionBundle.xcframework
>- Objective-C
diff --git a/programming/ios/api-reference/normalized-images-result.md b/programming/ios/api-reference/normalized-images-result.md
index fc35946..fe90647 100644
--- a/programming/ios/api-reference/normalized-images-result.md
+++ b/programming/ios/api-reference/normalized-images-result.md
@@ -14,7 +14,7 @@ The `DSNormalizedImagesResult` class represents a collection of [`DSNormalizedIm
## Definition
-*Assembly:* DynamsoftDocumentNormalizer.xcframework
+*Assembly:* DynamsoftCaptureVisionBundle.xcframework
>- Objective-C
diff --git a/programming/ios/api-reference/processed-document-result.md b/programming/ios/api-reference/processed-document-result.md
new file mode 100644
index 0000000..b877214
--- /dev/null
+++ b/programming/ios/api-reference/processed-document-result.md
@@ -0,0 +1,102 @@
+---
+layout: default-layout
+title: NormalizedImagesResult - Dynamsoft Document Normalizer iOS SDK API Reference
+description: The class NormalizedImagesResult represents a collection of captured result items whose type are normalized images.
+keywords: normalized images, objective-c, objc, swift
+needGenerateH3Content: true
+needAutoGenerateSidebar: true
+noTitleIndex: true
+---
+
+# NormalizedImagesResult
+
+The `NormalizedImagesResult` class represents a collection of [`NormalizedImageResultItem`](normalized-image-result-item.md), the basic unit of a normalized image result.
+
+## Definition
+
+*Assembly:* DynamsoftCaptureVisionBundle.xcframework
+
+```java
+class NormalizedImagesResult
+```
+
+## Attributes
+
+| Attributes | Type | Description |
+| ---------- | ---- | ----------- |
+| [`deskewedImageResultItems`](#deskewedimageresultitems) | *NSArray* | The deskew images represented by an array of [`DeskewedImageResultItem`](deskewed-image-result-item.md). |
+| [`detectedQuadResultItems`](#detectedquadresultitems) | *NSArray* | The detected boundaries represented by an array of [`DetectedImageResultItem`](detected-image-result-item.md). |
+| [`enhancedImageResultItems`](#enhancedimageresultitems) | *NSArray* | The enhanced images represented by an array of [`EnhancedImageResultItem`](enhanced-image-result-item.md). |
+
+The following attributes are inherited from [`DSCapturedResultBase`]({{ site.dcv_ios_api }}core/basic-structures/captured-result-base.html):
+
+| Attributes | Type | Description |
+| ---------- | ---- | ----------- |
+| [`originalImageHashId`]({{ site.dcv_ios_api }}core/basic-structures/captured-result-base.html#originalimagehashid) | *NSString \** | The hash id of the original image. |
+| [`originalImageTag`]({{ site.dcv_ios_api }}core/basic-structures/captured-result-base.html#originalimagetag) | *DSImageTag \** | The [DSImageTag](image-tag.md) of the original image. |
+| [`rotationTransformMatrix`]({{ site.dcv_ios_api }}core/basic-structures/captured-result-base.html#rotationtransformmatrix) | *CGAffineTransform* | The rotation transformation matrix of the original image relative to the rotated image. |
+| [`errorCode`]({{ site.dcv_ios_api }}core/basic-structures/captured-result-base.html#errorcode) | *NSInteger* | Get the error code of this result. |
+| [`errorMessage`]({{ site.dcv_ios_api }}core/basic-structures/captured-result-base.html#errormessage) | *NSString \** | Get the error message of this result. |
+
+### deskewedImageResultItems
+
+The deskew images represented by an array of [`DSDeskewedImageResultItem`](deskewed-image-result-item.md).
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+@property (nonatomic, readonly, assign) NSArray* deskewedImageResultItems;
+```
+2.
+```swift
+var deskewedImageResultItems: [DSDeskewedImageResultItem]? { get }
+```
+
+**Return Value**
+
+The array of the deskewed image result items.
+
+### detectedQuadResultItems
+
+The detected boundaries represented by an array of [`DSDetectedImageResultItem`](detected-image-result-item.md).
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+@property (nonatomic, readonly, assign) NSArray* detectedQuadResultItems;
+```
+2.
+```swift
+var detectedQuadResultItems: [DSDetectedQuadResultItem]? { get }
+```
+
+**Return Value**
+
+The array of the detected quad result items.
+
+### enhancedImageResultItems
+
+The enhanced images represented by an array of [`DSEnhancedImageResultItem`](enhanced-image-result-item.md).
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+@property (nonatomic, readonly, assign) NSArray* enhancedImageResultItems;
+```
+2.
+```swift
+var enhancedImageResultItems: [DSEnhancedImageResultItem]? { get }
+```
+
+**Return Value**
+
+The array of the enhanced image result items.
diff --git a/programming/ios/api-reference/simplified-document-normalizer-settings-v2.2.3000.md b/programming/ios/api-reference/simplified-document-normalizer-settings-v2.2.3000.md
index 3da996f..ebcca70 100644
--- a/programming/ios/api-reference/simplified-document-normalizer-settings-v2.2.3000.md
+++ b/programming/ios/api-reference/simplified-document-normalizer-settings-v2.2.3000.md
@@ -14,7 +14,7 @@ The `DSSimplifiedDocumentNormalizerSettings` class represents a series of simple
## Definition
-*Assembly:* DynamsoftDocumentNormalizer.xcframework
+*Assembly:* DynamsoftCaptureVisionBundle.xcframework
>- Objective-C
diff --git a/programming/ios/api-reference/simplified-document-normalizer-settings.md b/programming/ios/api-reference/simplified-document-normalizer-settings.md
index 2e62df4..65dc703 100644
--- a/programming/ios/api-reference/simplified-document-normalizer-settings.md
+++ b/programming/ios/api-reference/simplified-document-normalizer-settings.md
@@ -14,7 +14,7 @@ The `DSSimplifiedDocumentNormalizerSettings` class represents a series of simple
## Definition
-*Assembly:* DynamsoftDocumentNormalizer.xcframework
+*Assembly:* DynamsoftCaptureVisionBundle.xcframework
>- Objective-C
diff --git a/programming/ios/user-guide-v2.6.1004.md b/programming/ios/user-guide-v2.6.1004.md
new file mode 100644
index 0000000..5c9ef8f
--- /dev/null
+++ b/programming/ios/user-guide-v2.6.1004.md
@@ -0,0 +1,605 @@
+---
+layout: default-layout
+title: Detect and Normalize Document - iOS User Guide
+description: This page introduce how to detect and normalize document with Dynamsoft Capture Vision iOS SDK.
+keywords: user guide, iOS, document scanner
+needAutoGenerateSidebar: true
+needGenerateH4Content: true
+noTitleIndex: true
+multiProgrammingLanguage: true
+enableLanguageSelection: true
+---
+
+# iOS User Guide for Document Scanner Integration
+
+- [iOS User Guide for Document Scanner Integration](#ios-user-guide-for-document-scanner-integration)
+ - [System Requirements](#system-requirements)
+ - [Add the SDK](#add-the-sdk)
+ - [Add the xcframeworks via CocoaPods](#add-the-xcframeworks-via-cocoapods)
+ - [Add the xcframeworks via Swift Package Manager](#add-the-xcframeworks-via-swift-package-manager)
+ - [Build Your First Application](#build-your-first-application)
+ - [Create a New Project](#create-a-new-project)
+ - [Include the Library](#include-the-library)
+ - [Initialize License](#initialize-license)
+ - [Main ViewController for Realtime Detection of Quads](#main-viewcontroller-for-realtime-detection-of-quads)
+ - [Get Prepared with the Camera Module](#get-prepared-with-the-camera-module)
+ - [Initialize Capture Vision Router](#initialize-capture-vision-router)
+ - [Set up Result Receiver](#set-up-result-receiver)
+ - [Configure the methods viewDidLoad, viewWillAppear, and viewWillDisappear](#configure-the-methods-viewdidload-viewwillappear-and-viewwilldisappear)
+ - [Display the Normalized Image](#display-the-normalized-image)
+ - [Configure Camera Permissions](#configure-camera-permissions)
+ - [Additional Steps for iOS 12.x or Lower Versions](#additional-steps-for-ios-12x-or-lower-versions)
+ - [Build and Run the Project](#build-and-run-the-project)
+
+## System Requirements
+
+- Supported OS: iOS 11 or higher (iOS 13 and higher recommended).
+- Supported ABI: arm64 and x86_64.
+- Development Environment: Xcode 13 and above (Xcode 14.1+ recommended).
+
+## Add the SDK
+
+There are two ways to add the SDK into your project - **CocoaPods**, or via **Swift Package Manager**.
+
+### Add the xcframeworks via CocoaPods
+
+1. Add the frameworks in your **Podfile**.
+
+ ```sh
+ target 'HelloWorld' do
+ use_frameworks!
+
+ pod 'DynamsoftCaptureVisionBundle','2.6.1004'
+
+ end
+ ```
+
+2. Execute the pod command to install the frameworks and generate workspace(**HelloWorld.xcworkspace**):
+
+ ```sh
+ pod install
+ ```
+
+### Add the xcframeworks via Swift Package Manager
+
+1. In your Xcode project, go to **File --> AddPackages**.
+
+2. In the top-right section of the window, search "https://github.com/Dynamsoft/capture-vision-spm"
+
+3. Select `capture-vision-spm`, choose `Exact version`, enter **2.6.1004**, then click **Add Package**.
+
+4. Check all the frameworks and add.
+
+
+
+## Build Your First Application
+
+This guide will walk you through the process of creating a HelloWorld app for detecting and normalizing documents via a camera video input.
+
+>Note:
+>
+> - Xcode 14.0 is used in this guide.
+> - You can get the source code of the HelloWorld app from the following link
+> - [DocumentScanner iOS Sample](https://github.com/Dynamsoft/capture-vision-mobile-samples/tree/main/ios/DocumentScanner){:target="_blank"}.
+
+### Create a New Project
+
+1. Open Xcode and select create a new project.
+
+2. Select **iOS -> App** for your application.
+
+3. Input your product name (HelloWorld), interface (StoryBoard) and language (Objective-C/Swift).
+
+4. Click on the **Next** button and select the location to save the project.
+
+5. Click on the **Create** button to finish.
+
+### Include the Library
+
+Add the SDK to your new project. Please read [Add the SDK](#add-the-sdk) section for more details.
+
+### Initialize License
+
+Initialize the license first. In your **ViewController** file, add the following code to initialize the license.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+// Import the DynamsoftLicense module to init license
+#import
+// Add LicenseVerificationListener to the interface
+@interface ViewController ()
+- (void)setLicense{
+ [DSLicenseManager initLicense:@"DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9" verificationDelegate:self];
+}
+-(void)onLicenseVerified:(BOOL)isSuccess error:(NSError *)error
+{
+ NSLog(@"On License Verified");
+ if (!isSuccess)
+ {
+ NSLog(error.localizedDescription);
+ }else
+ {
+ NSLog(@"License approved");
+ }
+}
+...
+@end
+```
+2.
+```swift
+// Import the DynamsoftLicense module to init license
+import DynamsoftLicense
+// Add LicenseVerificationListener to the interface
+class ViewController: UIViewController, LicenseVerificationListener {
+ func setLicense(){
+ LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", verificationDelegate: self)
+ }
+ func onLicenseVerified(_ isSuccess: Bool, error: Error?) {
+ // Add your code to do when license server returns.
+ if let error = error, !isSuccess{
+ print(error.localizedDescription)
+ }
+ }
+ ...
+}
+```
+
+>Note:
+>
+>- Network connection is required for the license to work.
+>- The license string here will grant you a time-limited trial license.
+>- You can request a 30-day trial license via the [Request a Trial License](https://www.dynamsoft.com/customer/license/trialLicense?product=ddn&utm_source=guide&package=ios){:target="_blank"} link
+
+
+
+### Main ViewController for Realtime Detection of Quads
+
+In the main view controller, your app will scan documents via video streaming and display the detect quadrilateral area on the screen. First of all, import the headers in the ViewController file.
+
+
+ >- Objective-C
+ >- Swift
+ >
+ >1.
+ ```objc
+ #import
+ #import
+ #import
+ #import
+ #import
+ ```
+ 2.
+ ```swift
+ import DynamsoftCore
+ import DynamsoftCaptureVisionRouter
+ import DynamsoftDocumentNormalizer
+ import DynamsoftUtility
+ import DynamsoftCameraEnhancer
+ ```
+
+#### Get Prepared with the Camera Module
+
+Create the instances of `CameraEnhancer` and `CameraView`.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+@property (nonatomic, strong) DSCameraEnhancer *dce;
+@property (nonatomic, strong) DSCameraView *cameraView;
+...
+- (void)setUpCamera
+{
+ _cameraView = [[DSCameraView alloc] initWithFrame:self.view.bounds];
+ [_cameraView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
+ [self.view addSubview:_cameraView];
+ [_cameraView addSubview:_captureButton];
+ _dce = [[DSCameraEnhancer alloc] init];
+ [_dce setCameraView:_cameraView];
+ DSDrawingLayer * layer = [_cameraView getDrawingLayer:DSDrawingLayerIdDDN];
+ [layer setVisible:true];
+ // You can enable the frame filter feature of Dynamsoft Camera Enhancer.
+ //[_dce enableEnhancedFeatures:DSEnhancerFeatureFrameFilter];
+}
+```
+2.
+```swift
+var cameraView:CameraView!
+var dce:CameraEnhancer!
+...
+func setUpCamera() {
+ // Create a camera view and add it as a sub view of the current view.
+ cameraView = .init(frame: view.bounds)
+ cameraView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
+ view.insertSubview(cameraView, at: 0)
+ // Bind the camera enhancer with the camera view.
+ dce = CameraEnhancer()
+ dce.cameraView = cameraView
+ // Additional step: Highlight the detected document boundary.
+ let layer = cameraView.getDrawingLayer(DrawingLayerId.DDN.rawValue)
+ layer?.visible = true
+ // You can enable the frame filter feature of Dynamsoft Camera Enhancer.
+ // dce.enableEnhancedFeatures(.frameFilter)
+}
+```
+
+#### Initialize Capture Vision Router
+
+Once the camera component is set up, declare and create an instance of `CaptureVisionRouter` and set its input to the Camera Enhancer object you created in the last step.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+@property (nonatomic, strong) DSCaptureVisionRouter *cvr;
+...
+- (void)setUpCvr
+{
+ _cvr = [[DSCaptureVisionRouter alloc] init];
+}
+```
+2.
+```swift
+var cvr:CaptureVisionRouter!
+func setUpCvr() {
+ cvr = CaptureVisionRouter()
+}
+```
+
+Bind your `CaptureVisionRouter` instance with the created `CameraEnhancer` instance.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (void)setUpCvr
+{
+ ...
+ NSError *cvrError;
+ [_cvr setInput:_dce error:&cvrError];
+}
+```
+2.
+```swift
+func setUpCvr() {
+ try? cvr.setInput(dce)
+}
+```
+
+#### Set up Result Receiver
+
+1. Add `CapturedResultReceiver` to your ViewController.
+
+
+ >- Objective-C
+ >- Swift
+ >
+ >1.
+ ```objc
+ @interface ViewController ()
+ ```
+ 2.
+ ```swift
+ class ViewController: UIViewController, LicenseVerificationListener, CapturedResultReceiver {
+ ...
+ }
+ ```
+
+2. Implement `onNormalizedImagesReceived` method to receive the normalized images as the captured results.
+
+
+ >- Objective-C
+ >- Swift
+ >
+ >1.
+ ```objc
+ // import ImageViewController.h. It will be implemented later.
+ #import "ImageViewController.h"
+ -(void)onNormalizedImagesReceived:(DSNormalizedImagesResult *)result
+ {
+ if (result!=nil && result.items[0].imageData!=nil && (_implementCapture || result.items[0].crossVerificationStatus == DSCrossVerificationStatusPassed))
+ {
+ NSLog(@"Capture confirmed");
+ _implementCapture = false;
+ dispatch_async(dispatch_get_main_queue(), ^{
+ [self.cvr stopCapturing];
+ ImageViewController *imageViewController = [[ImageViewController alloc] init];
+ NSError * error;
+ imageViewController.normalizedImage = [result.items[0].imageData toUIImage:&error];
+ NSLog(@"UIImage set");
+ [self.navigationController pushViewController:imageViewController animated:YES];
+ });
+ }
+ }
+ ```
+ 2.
+ ```swift
+ func onNormalizedImagesReceived(_ result: NormalizedImagesResult) {
+ if let item = result.items?.first {
+ if item.crossVerificationStatus == .passed || implementCapture {
+ guard let data = item.imageData else { return }
+ implementCapture = false
+ cvr.stopCapturing()
+ DispatchQueue.main.async {
+ let resultView = ImageViewController()
+ resultView.normalizedImage = try? data.toUIImage()
+ self.navigationController?.pushViewController(resultView, animated: true)
+ }
+ }
+ }
+ }
+ ```
+
+3. Add the result receiver to the `CaptureVisionRouter`.
+
+
+ >- Objective-C
+ >- Swift
+ >
+ >1.
+ ```objc
+ - (void)setUpCvr
+ {
+ ...
+ [_cvr addResultReceiver:self];
+ DSMultiFrameResultCrossFilter *filter = [[DSMultiFrameResultCrossFilter alloc] init];
+ [filter enableResultCrossVerification:DSCapturedResultItemTypeNormalizedImage isEnabled:true];
+ [_cvr addResultFilter:filter];
+ }
+ ```
+ 2.
+ ```swift
+ func setUpCvr() {
+ ...
+ cvr.addResultReceiver(self)
+ let filter = MultiFrameResultCrossFilter.init()
+ filter.enableResultCrossVerification(.normalizedImage, isEnabled: true)
+ cvr.addResultFilter(filter)
+ }
+ ```
+
+4. Add a `confirmCapture` button to confirm the result.
+
+
+ >- Objective-C
+ >- Swift
+ >
+ >1.
+ ```objc
+ @property (nonatomic, strong) UIButton *captureButton;
+ @property (nonatomic) BOOL implementCapture;
+ ...
+ - (void)addCaptureButton {
+ [self.view addSubview:self.captureButton];
+ }
+ - (UIButton *)captureButton {
+ NSLog(@"Start adding button");
+ CGFloat screenWidth = [UIScreen mainScreen].bounds.size.width;
+ CGFloat screenHeight = [UIScreen mainScreen].bounds.size.height;
+ if (!_captureButton) {
+ _captureButton = [UIButton buttonWithType:UIButtonTypeCustom];
+ _captureButton.frame = CGRectMake((screenWidth - 150) / 2.0, screenHeight - 100, 150, 50);
+ _captureButton.backgroundColor = [UIColor grayColor];
+ _captureButton.layer.cornerRadius = 10;
+ _captureButton.layer.borderColor = [UIColor darkGrayColor].CGColor;
+ [_captureButton setTitle:@"Capture" forState:UIControlStateNormal];
+ [_captureButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
+ [_captureButton addTarget:self action:@selector(setCapture) forControlEvents:UIControlEventTouchUpInside];
+ }
+ return _captureButton;
+ }
+ - (void)setCapture
+ {
+ _implementCapture = true;
+ }
+ ```
+ 2.
+ ```swift
+ var captureButton:UIButton!
+ var implementCapture:Bool = false
+ ...
+ func addCaptureButton()
+ {
+ let w = UIScreen.main.bounds.size.width
+ let h = UIScreen.main.bounds.size.height
+ let SafeAreaBottomHeight: CGFloat = UIApplication.shared.statusBarFrame.size.height > 20 ? 34 : 0
+ let photoButton = UIButton(frame: CGRect(x: w / 2 - 60, y: h - 100 - SafeAreaBottomHeight, width: 120, height: 60))
+ photoButton.setTitle("Capture", for: .normal)
+ photoButton.backgroundColor = UIColor.green
+ photoButton.addTarget(self, action: #selector(confirmCapture), for: .touchUpInside)
+ DispatchQueue.main.async(execute: { [self] in
+ view.addSubview(photoButton)
+ })
+ }
+ @objc func confirmCapture()
+ {
+ implementCapture = true
+ }
+ ```
+
+#### Configure the methods viewDidLoad, viewWillAppear, and viewWillDisappear
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (void)viewDidLoad {
+ [super viewDidLoad];
+ [self setLicense];
+ [self setUpCamera];
+ [self setUpCvr];
+ [self addCaptureButton];
+}
+- (void)viewWillAppear:(BOOL)animated
+{
+ [super viewWillAppear:animated];
+ [_dce open];
+ [_cvr startCapturing:DSPresetTemplateDetectAndNormalizeDocument completionHandler:^(BOOL isSuccess, NSError * _Nullable error) {
+ if (!isSuccess && error != nil) {
+ NSLog(@"%@", error.localizedDescription);
+ }
+ }];
+}
+- (void)viewWillDisappear:(BOOL)animated
+{
+ [super viewWillAppear:animated];
+ [_dce close];
+}
+```
+2.
+```swift
+override func viewDidLoad() {
+ super.viewDidLoad()
+ setLicense()
+ setUpCamera()
+ setUpCvr()
+ addCaptureButton()
+}
+override func viewWillAppear(_ animated: Bool) {
+ super.viewWillAppear(animated)
+ dce.open()
+ cvr.startCapturing(PresetTemplate.detectAndNormalizeDocument.rawValue){ isSuccess, error in
+ if let error = error, !isSuccess {
+ print("Capture start failed")
+ print(error.localizedDescription)
+ }
+ }
+}
+override func viewWillDisappear(_ animated: Bool) {
+ super.viewWillDisappear(animated)
+ dce.close()
+}
+```
+
+#### Display the Normalized Image
+
+1. Create a new `UIViewController` class `ImageViewController`.
+
+2. Add a property `normalizedImage` to the header file of `ImageViewController` (Objective-C only).
+
+ ```objc
+ #import
+
+ NS_ASSUME_NONNULL_BEGIN
+
+ @interface ImageViewController : UIViewController
+
+ @property (nonatomic, strong) UIImage *normalizedImage;
+
+ @end
+
+ NS_ASSUME_NONNULL_END
+ ```
+
+3. Configure the `ImageViewController` to display the normalized image..
+
+
+ >- Objective-C
+ >- Swift
+ >
+ >1.
+ ```objc
+ #import "ImageViewController.h"
+ @interface ImageViewController()
+ @property (nonatomic, strong) UIImageView *imageView;
+ @end
+ @implementation ImageViewController
+ -(void)viewDidLoad
+ {
+ NSLog(@"ImageViewController loaded");
+ [super viewDidLoad];
+ [self setUpView];
+ }
+ - (void)setUpView
+ {
+ _imageView = [[UIImageView alloc] initWithFrame:self.view.bounds];
+ [self.view addSubview:_imageView];
+ [_imageView setContentMode:UIViewContentModeScaleAspectFit];
+ dispatch_async(dispatch_get_main_queue(), ^{
+ [self.imageView setImage:self.normalizedImage];
+ });
+ }
+ @end
+ ```
+ 2.
+ ```swift
+ import UIKit
+ import DynamsoftCore
+ import DynamsoftCaptureVisionRouter
+ import DynamsoftDocumentNormalizer
+ class ImageViewController: UIViewController {
+ var normalizedImage:UIImage!
+ var imageView:UIImageView!
+ override func viewDidLoad() {
+ super.viewDidLoad()
+ setUpView()
+ }
+ func setUpView() {
+ imageView = UIImageView.init(frame: view.bounds)
+ imageView.contentMode = .scaleAspectFit
+ view.addSubview(imageView)
+ DispatchQueue.main.async { [self] in
+ imageView.image = normalizedImage
+ }
+ }
+ }
+ ```
+
+4. Go to your **Main.storyboard** and add **Navigation Controller**.
+
+
+
+### Configure Camera Permissions
+
+Add **Privacy - Camera Usage Description** to the `info.plist` of your project to request camera permission. An easy way to do this is to access your project settings, go to *Info* and then add this Privacy property to the iOS target properties list.
+
+### Additional Steps for iOS 12.x or Lower Versions
+
+If your iOS version is 12.x or lower, please add the following additional steps:
+
+1. Remove the methods `application:didDiscardSceneSessions:` and `application:configurationForConnectingSceneSession:options:` from your `AppDelegate` file.
+2. Remove the `SceneDelegate.Swift` file (`SceneDelegate.h` & `SceneDelegate.m` for Objective-C).
+3. Remove the `Application Scene Manifest` from your info.plist file.
+4. Declaire the window in your `AppDelegate.Swift` file (`AppDelegate.h` for Objective-C).
+
+
+ >- Objective-C
+ >- Swift
+ >
+ >1.
+ ```objc
+ @interface AppDelegate : UIResponder
+ @property (strong, nonatomic) UIWindow *window;
+ @end
+ ```
+ 2.
+ ```swift
+ import UIKit
+ @main
+ class AppDelegate: UIResponder, UIApplicationDelegate {
+ var window: UIWindow?
+ }
+ ```
+
+### Build and Run the Project
+
+1. Select the device that you want to run your app on.
+2. Run the project, then your app will be installed on your device.
+
+> Note:
+>
+> - You can get the source code of the HelloWorld app from the following link
+> - [Objective-C](https://github.com/Dynamsoft/capture-vision-mobile-samples/tree/main/ios/DocumentScanner/AutoNormalizeObjc){:target="_blank"}.
+> - [Swift](https://github.com/Dynamsoft/capture-vision-mobile-samples/tree/main/ios/DocumentScanner/AutoNormalize){:target="_blank"}.
diff --git a/programming/ios/user-guide.md b/programming/ios/user-guide.md
index 5c9ef8f..f605226 100644
--- a/programming/ios/user-guide.md
+++ b/programming/ios/user-guide.md
@@ -33,7 +33,7 @@ enableLanguageSelection: true
## System Requirements
-- Supported OS: iOS 11 or higher (iOS 13 and higher recommended).
+- Supported OS: **iOS 13** or higher.
- Supported ABI: arm64 and x86_64.
- Development Environment: Xcode 13 and above (Xcode 14.1+ recommended).
@@ -49,7 +49,7 @@ There are two ways to add the SDK into your project - **CocoaPods**, or via **Sw
target 'HelloWorld' do
use_frameworks!
- pod 'DynamsoftCaptureVisionBundle','2.6.1004'
+ pod 'DynamsoftCaptureVisionBundle','3.0.3000'
end
```
@@ -66,7 +66,7 @@ There are two ways to add the SDK into your project - **CocoaPods**, or via **Sw
2. In the top-right section of the window, search "https://github.com/Dynamsoft/capture-vision-spm"
-3. Select `capture-vision-spm`, choose `Exact version`, enter **2.6.1004**, then click **Add Package**.
+3. Select `capture-vision-spm`, choose `Exact version`, enter **3.0.3000**, then click **Add Package**.
4. Check all the frameworks and add.
@@ -108,8 +108,7 @@ Initialize the license first. In your **ViewController** file, add the following
>
>1.
```objc
-// Import the DynamsoftLicense module to init license
-#import
+#import
// Add LicenseVerificationListener to the interface
@interface ViewController ()
- (void)setLicense{
@@ -131,8 +130,7 @@ Initialize the license first. In your **ViewController** file, add the following
```
2.
```swift
-// Import the DynamsoftLicense module to init license
-import DynamsoftLicense
+import DynamsoftCaptureVisionBundle
// Add LicenseVerificationListener to the interface
class ViewController: UIViewController, LicenseVerificationListener {
func setLicense(){
@@ -158,29 +156,6 @@ class ViewController: UIViewController, LicenseVerificationListener {
### Main ViewController for Realtime Detection of Quads
-In the main view controller, your app will scan documents via video streaming and display the detect quadrilateral area on the screen. First of all, import the headers in the ViewController file.
-
-
- >- Objective-C
- >- Swift
- >
- >1.
- ```objc
- #import
- #import
- #import
- #import
- #import
- ```
- 2.
- ```swift
- import DynamsoftCore
- import DynamsoftCaptureVisionRouter
- import DynamsoftDocumentNormalizer
- import DynamsoftUtility
- import DynamsoftCameraEnhancer
- ```
-
#### Get Prepared with the Camera Module
Create the instances of `CameraEnhancer` and `CameraView`.
@@ -512,6 +487,7 @@ override func viewWillDisappear(_ animated: Bool) {
>1.
```objc
#import "ImageViewController.h"
+ #import
@interface ImageViewController()
@property (nonatomic, strong) UIImageView *imageView;
@end
@@ -536,9 +512,7 @@ override func viewWillDisappear(_ animated: Bool) {
2.
```swift
import UIKit
- import DynamsoftCore
- import DynamsoftCaptureVisionRouter
- import DynamsoftDocumentNormalizer
+ import DynamsoftCaptureVisionBundle
class ImageViewController: UIViewController {
var normalizedImage:UIImage!
var imageView:UIImageView!