From 9d0221622b4c4b3b1078366286501c0421330d57 Mon Sep 17 00:00:00 2001 From: DMGithubPublisher Date: Fri, 12 Sep 2025 13:28:12 +0800 Subject: [PATCH] update to internal commit a31c9625 --- _config.yml | 33 +- _data/full_tree.yml | 13 - _data/product_version.yml | 23 -- _includes/ddnNav.html | 59 --- .../release-notes/product-highlight-1.0.0.md | 15 - .../release-notes/product-highlight-2.0.0.md | 16 - .../release-notes/product-highlight-2.2.0.md | 5 - .../release-notes/product-highlight-2.4.0.md | 5 - _includes/sidelist-development-v1.0.21.html | 18 - _includes/sidelist-development-v2.2.0.html | 17 - _includes/sidelist-development.html | 18 - _includes/sidelist-full-tree.html | 4 - _includes/sidelist-introduction.html | 2 - _includes/sidelist-license.html | 1 - .../sidelist-parameters-organization.html | 27 -- ...sidelist-parameters-reference-v1.0.21.html | 25 -- .../sidelist-parameters-reference-v2.0.0.html | 74 ---- ...sidelist-parameters-reference-v2.0.11.html | 74 ---- ...sidelist-parameters-reference-v2.2.10.html | 75 ---- _includes/sidelist-parameters-reference.html | 75 ---- _includes/sidelist-release-notes.html | 2 - _includes/sidelist-understanding-v1.0.21.html | 3 - _includes/sidelist-understanding.html | 4 - _includes/sidelist-useful.html | 3 - _layouts/default-layout-OLD.html | 110 ------ _layouts/home-page.html | 50 --- _layouts/search-page-OLD.html | 210 ----------- assets/js/ddnCoreVersionSearch.json | 182 --------- index-v1.0.21.md | 39 -- index-v2.2.0.md | 37 -- index.md | 38 -- license-activation/index-v1.0.30.md | 71 ---- license-activation/index.md | 78 ---- parameters-new/reference/index-v2.0.0.md | 86 ----- parameters-new/reference/index-v2.0.11.md | 86 ----- parameters-new/reference/index-v2.2.10.md | 86 ----- parameters-new/reference/index.md | 87 ----- ...arameter-organization-structure-v1.0.21.md | 169 --------- .../parameter-organization-structure.md | 122 ------ parameters/reference/assets/margin.png | Bin 207054 -> 0 bytes parameters/reference/binarization-modes.md | 238 ------------ parameters/reference/brightness.md | 28 -- .../reference/colour-channel-usage-type.md | 28 -- .../reference/colour-conversion-modes.md | 139 ------- parameters/reference/colour-mode.md | 28 -- parameters/reference/content-type.md | 28 -- parameters/reference/contrast.md | 28 -- parameters/reference/deskew-mode.md | 64 ---- .../reference/grayscale-enhancement-modes.md | 142 ------- .../grayscale-transformation-modes.md | 71 ---- parameters/reference/index-v1.0.20.md | 28 -- .../reference/interior-angle-range-array.md | 38 -- parameters/reference/line-extraction-modes.md | 71 ---- parameters/reference/max-thread-count.md | 28 -- .../reference/max-total-image-dimension.md | 32 -- parameters/reference/page-size.md | 35 -- .../quadrilateral-detection-modes.md | 44 --- .../reference/region-predetection-modes.md | 348 ------------------ parameters/reference/scale-down-threshold.md | 28 -- parameters/reference/text-filter-modes.md | 111 ------ .../reference/texture-detection-modes.md | 81 ---- parameters/reference/timeout.md | 32 -- 62 files changed, 3 insertions(+), 3709 deletions(-) delete mode 100644 _data/full_tree.yml delete mode 100644 _data/product_version.yml delete mode 100644 _includes/ddnNav.html delete mode 100644 _includes/release-notes/product-highlight-1.0.0.md delete mode 100644 _includes/release-notes/product-highlight-2.0.0.md delete mode 100644 _includes/release-notes/product-highlight-2.2.0.md delete mode 100644 _includes/release-notes/product-highlight-2.4.0.md delete mode 100644 _includes/sidelist-development-v1.0.21.html delete mode 100644 _includes/sidelist-development-v2.2.0.html delete mode 100644 _includes/sidelist-development.html delete mode 100644 _includes/sidelist-full-tree.html delete mode 100644 _includes/sidelist-introduction.html delete mode 100644 _includes/sidelist-license.html delete mode 100644 _includes/sidelist-parameters-organization.html delete mode 100644 _includes/sidelist-parameters-reference-v1.0.21.html delete mode 100644 _includes/sidelist-parameters-reference-v2.0.0.html delete mode 100644 _includes/sidelist-parameters-reference-v2.0.11.html delete mode 100644 _includes/sidelist-parameters-reference-v2.2.10.html delete mode 100644 _includes/sidelist-parameters-reference.html delete mode 100644 _includes/sidelist-release-notes.html delete mode 100644 _includes/sidelist-understanding-v1.0.21.html delete mode 100644 _includes/sidelist-understanding.html delete mode 100644 _includes/sidelist-useful.html delete mode 100644 _layouts/default-layout-OLD.html delete mode 100644 _layouts/home-page.html delete mode 100644 _layouts/search-page-OLD.html delete mode 100644 assets/js/ddnCoreVersionSearch.json delete mode 100644 index-v1.0.21.md delete mode 100644 index-v2.2.0.md delete mode 100644 index.md delete mode 100644 license-activation/index-v1.0.30.md delete mode 100644 license-activation/index.md delete mode 100644 parameters-new/reference/index-v2.0.0.md delete mode 100644 parameters-new/reference/index-v2.0.11.md delete mode 100644 parameters-new/reference/index-v2.2.10.md delete mode 100644 parameters-new/reference/index.md delete mode 100644 parameters/parameter-organization-structure-v1.0.21.md delete mode 100644 parameters/parameter-organization-structure.md delete mode 100644 parameters/reference/assets/margin.png delete mode 100644 parameters/reference/binarization-modes.md delete mode 100644 parameters/reference/brightness.md delete mode 100644 parameters/reference/colour-channel-usage-type.md delete mode 100644 parameters/reference/colour-conversion-modes.md delete mode 100644 parameters/reference/colour-mode.md delete mode 100644 parameters/reference/content-type.md delete mode 100644 parameters/reference/contrast.md delete mode 100644 parameters/reference/deskew-mode.md delete mode 100644 parameters/reference/grayscale-enhancement-modes.md delete mode 100644 parameters/reference/grayscale-transformation-modes.md delete mode 100644 parameters/reference/index-v1.0.20.md delete mode 100644 parameters/reference/interior-angle-range-array.md delete mode 100644 parameters/reference/line-extraction-modes.md delete mode 100644 parameters/reference/max-thread-count.md delete mode 100644 parameters/reference/max-total-image-dimension.md delete mode 100644 parameters/reference/page-size.md delete mode 100644 parameters/reference/quadrilateral-detection-modes.md delete mode 100644 parameters/reference/region-predetection-modes.md delete mode 100644 parameters/reference/scale-down-threshold.md delete mode 100644 parameters/reference/text-filter-modes.md delete mode 100644 parameters/reference/texture-detection-modes.md delete mode 100644 parameters/reference/timeout.md diff --git a/_config.yml b/_config.yml index fd0e61b..87ea8d2 100644 --- a/_config.yml +++ b/_config.yml @@ -3,42 +3,15 @@ repositoryUrl: https://github.com/dynamsoft-docs/document-normalizer-docs/blob/m docFullPath: https://www.dynamsoft.com/document-normalizer/docs/core firstLevelUrl: /document-normalizer/docs/core docHomePage: /document-normalizer/docs/core/ +needSearchIndex: true +searchNeedFilter: true introduction: /document-normalizer/docs/core/introduction/ -c: /document-normalizer/docs/server/programming/c/ -c_api: /document-normalizer/docs/server/programming/c/api-reference/ -c_release_notes: /document-normalizer/docs/server/programming/c/release-notes/ - -cpp: /document-normalizer/docs/server/programming/cplusplus/ -cpp_release_notes: /document-normalizer/docs/server/programming/cplusplus/release-notes/ - -dotnet: /document-normalizer/docs/server/programming/dotnet/ -dotnet_release_notes: /document-normalizer/docs/server/programming/dotnet/release-notes/ - -ios: /document-normalizer/docs/mobile/programming/ios/ -ios_release_notes: /document-normalizer/docs/mobile/programming/ios/release-notes/ - -android: /document-normalizer/docs/mobile/programming/android/ -android_release_notes: /document-normalizer/docs/mobile/programming/android/release-notes/ - -js: /document-normalizer/docs/web/programming/javascript/ -js_release_notes: /document-normalizer/docs/web/programming/javascript/release-notes/ - -xamarin: /document-normalizer/docs/mobile/programming/xamarin/ -xamarin_release_notes: /document-normalizer/docs/mobile/programming/xamarin/release-notes/ - -release_notes: /document-normalizer/docs/core/release-notes/ - -enumerations: /capture-vision/docs/core/enums/ -dcv_parameters: /capture-vision/docs/core/parameters/ -parameters_reference: /capture-vision/docs/core/parameters/reference/ -parameters_ddn: /document-normalizer/docs/core/parameters/ -parameters_reference_ddn: /document-normalizer/docs/core/parameters/reference/ -license: /document-normalizer/docs/core/license-activation/ useVersionTree: false isDCV: true +useJSVersionV3: true assets: /document-normalizer/docs/core/assets/ edit_icon: /document-normalizer/docs/core/assets/img-icon/edit-icon.png diff --git a/_data/full_tree.yml b/_data/full_tree.yml deleted file mode 100644 index a017e5f..0000000 --- a/_data/full_tree.yml +++ /dev/null @@ -1,13 +0,0 @@ -tree_file_list: - - sidelist-full-tree.html - - sidelist-development.html - - sidelist-development-v1.0.21.html - - sidelist-introduction.html - - sidelist-license.html - - sidelist-parameters-organization.html - - sidelist-parameters-reference.html - - sidelist-parameters-reference-v1.0.21.html - - sidelist-release-notes.html - - sidelist-useful.html - - sidelist-understanding.html - - sidelist-understanding-v1.0.21.html diff --git a/_data/product_version.yml b/_data/product_version.yml deleted file mode 100644 index 1506065..0000000 --- a/_data/product_version.yml +++ /dev/null @@ -1,23 +0,0 @@ -useGroupedVersion: true - -version_info_list: - - value: latest version - - value: 2.x - child: - - 2.2.10 - - 2.2.0 - - 2.0.21 - - 2.0.20 - - 2.0.11 - - 2.0.10 - - 2.0.0 - - value: 1.x - child: - - 1.0.21 - - 1.0.20 - - 1.0.12 - - 1.0.11 - - 1.0.10 - - 1.0.0 - - \ No newline at end of file diff --git a/_includes/ddnNav.html b/_includes/ddnNav.html deleted file mode 100644 index ec99f74..0000000 --- a/_includes/ddnNav.html +++ /dev/null @@ -1,59 +0,0 @@ - - -
-
- -
-
-
- -
Resource Base
-
-
-
-
-
-
-
- -
-
-
-
-
-
diff --git a/_includes/release-notes/product-highlight-1.0.0.md b/_includes/release-notes/product-highlight-1.0.0.md deleted file mode 100644 index 4fe4256..0000000 --- a/_includes/release-notes/product-highlight-1.0.0.md +++ /dev/null @@ -1,15 +0,0 @@ - -Dynamsoft Document Normalizer 1.0 version supports quad boundary detection and image correction features. - -- Detectable quads include but are not limited to: - - Document Pages - - Tables - - Cards like ID cards -- The following features are available when normalizing the image: - - Boundary cropping - - Deskew processing -- The following attributes of the output image can be adjusted: - - Colour mode - - Contrast - - Brightness - diff --git a/_includes/release-notes/product-highlight-2.0.0.md b/_includes/release-notes/product-highlight-2.0.0.md deleted file mode 100644 index 03b0d47..0000000 --- a/_includes/release-notes/product-highlight-2.0.0.md +++ /dev/null @@ -1,16 +0,0 @@ - -`DynamsoftDocumentNormalizer` SDK has been revamped to integrate with `DynamsoftCaptureVision (DCV)` architecture, which is newly established to aggregate the features of functional products powered by Dynamsoft. The features are designed to be pluggable, customizable and interactable. In addition, the functional products share the computation so that their processing speed is much higher than working individually. - -* `DynamsoftCaptureVision` architecture consists of: - * `ImageSourceAdapter(ISA)`, the standard input interface for you to convert image data from different sources into the standard input image data. In addition, `ISA` incorporates an image buffer management system that allows instant access to the buffered image data. - * `CaptureVisionRouter (CVR)`, an engine for you to update templates, retrieve images from `ISA`, coordinate corresponding functional products and dispatch the results to the receivers. - * Functional products that perform image processing, content understanding and semantic processing. The functional products are pluggable and passively called by CVR when they are required. - * Result receiver interfaces. You can implement `CapturedResultReceiver (CRR)` to receive the `CapturedResults` that output when the processing on an image is finalized. You can also implement `IntermediateResultReceiver (IRR)` to get timely results from different stages of the workflow. -* The parameter template system has been comprehensively upgraded. - * Multiple algorithm task settings are available. You can define barcode decoding, label recognizing, document scanning and semantic processing tasks in one template file. - * Extended the feature of the ROI system. By configuring the `target ROI` parameters, you can not only specify an `ROI` on the original image but also define the dependencies of the algorithm tasks. This feature enables you to customize the workflow when processing complex scenarios. - * The image processing parameters are separated from the task parameters so that the template settings become more clear and concise. -* The `intermediate result` system has been improved. - * Achieved the `intermediate result` sharing between different functional products. The results that have the same image source and processing parameters are directly reused, which speeds up the image processing workflow. You don’t need to add any additional code to enable the `intermediate result` sharing. The library can recognize all the reusable results automatically based on the template file you uploaded. - * The readability and interactivity of the `intermediate results` are enhanced. `IntermediateResultReceiver` allows you to receive up to 27 different types of `Intermediate results`. You can clearly read which stage of the algorithm each result is output from. In addition, `IntermediateResultManager` allows you to intervene in the workflows by modifying the `intermediate results`. - diff --git a/_includes/release-notes/product-highlight-2.2.0.md b/_includes/release-notes/product-highlight-2.2.0.md deleted file mode 100644 index fa9aaef..0000000 --- a/_includes/release-notes/product-highlight-2.2.0.md +++ /dev/null @@ -1,5 +0,0 @@ - -* Introduced the capability for users to influence the image processing process by altering intermediate results. Users can now clone, edit, and substitute intermediate result units within the callback function of each type. Subsequent operations will then proceed based on the updated unit. -* Introduced a feature for multi-condition filtering across products. Users can now specify filtering criteria for the task results of a `TargetROIDef` by implementing an `OutputTaskSetting` based on the task results of varying products from descendant `TargetROIDef` objects. -* Enhanced the `Offset` parameter in `TargetROIDef`. Users now have the capability to meticulously customize components of the coordinate system, including the origin, X-axis, and Y-axis, for precise offset calculation. - diff --git a/_includes/release-notes/product-highlight-2.4.0.md b/_includes/release-notes/product-highlight-2.4.0.md deleted file mode 100644 index bddd3ea..0000000 --- a/_includes/release-notes/product-highlight-2.4.0.md +++ /dev/null @@ -1,5 +0,0 @@ - -- Introduced two new parameters for quadrilateral filtering. - - Added a new parameter `MinQuadrilateralAreaRatio` to define the minimum targeting document area. The parameter is available via both the parameter template and the SimplifiedDocumentNormalizerSettings. - - Added a new parameter `ExpectedDocumentsCount` to define the expected document count for detection. The parameter is available via both the parameter template and the SimplifiedDocumentNormalizerSettings. - diff --git a/_includes/sidelist-development-v1.0.21.html b/_includes/sidelist-development-v1.0.21.html deleted file mode 100644 index ddb43f8..0000000 --- a/_includes/sidelist-development-v1.0.21.html +++ /dev/null @@ -1,18 +0,0 @@ -
  • DEVELOPMENT
  • -
  • - Web (Client Side)
  • -
  • - Mobile - -
  • -
  • - Server / Desktop - -
  • \ No newline at end of file diff --git a/_includes/sidelist-development-v2.2.0.html b/_includes/sidelist-development-v2.2.0.html deleted file mode 100644 index c4068a3..0000000 --- a/_includes/sidelist-development-v2.2.0.html +++ /dev/null @@ -1,17 +0,0 @@ -
  • DEVELOPMENT
  • -
  • - Web (Client Side)
  • -
  • - Mobile - -
  • -
  • - Server / Desktop - -
  • \ No newline at end of file diff --git a/_includes/sidelist-development.html b/_includes/sidelist-development.html deleted file mode 100644 index 9c4aade..0000000 --- a/_includes/sidelist-development.html +++ /dev/null @@ -1,18 +0,0 @@ -
  • DEVELOPMENT
  • -
  • - Web (Client Side)
  • -
  • - Mobile - -
  • -
  • - Server / Desktop - -
  • \ No newline at end of file diff --git a/_includes/sidelist-full-tree.html b/_includes/sidelist-full-tree.html deleted file mode 100644 index ee5a5f9..0000000 --- a/_includes/sidelist-full-tree.html +++ /dev/null @@ -1,4 +0,0 @@ -{%- include liquid_searchVersionTreeFile.html ver=include.ver curPath=include.curPath targetRelativePath="sidelist-introduction.html" -%} -{%- include liquid_searchVersionTreeFile.html ver=include.ver curPath=include.curPath targetRelativePath="sidelist-development.html" -%} -{%- include liquid_searchVersionTreeFile.html ver=include.ver curPath=include.curPath targetRelativePath="sidelist-understanding.html" -%} -{%- include liquid_searchVersionTreeFile.html ver=include.ver curPath=include.curPath targetRelativePath="sidelist-useful.html" -%} \ No newline at end of file diff --git a/_includes/sidelist-introduction.html b/_includes/sidelist-introduction.html deleted file mode 100644 index 658cfae..0000000 --- a/_includes/sidelist-introduction.html +++ /dev/null @@ -1,2 +0,0 @@ -
  • Introduction -
  • \ No newline at end of file diff --git a/_includes/sidelist-license.html b/_includes/sidelist-license.html deleted file mode 100644 index e0a6737..0000000 --- a/_includes/sidelist-license.html +++ /dev/null @@ -1 +0,0 @@ -
  • License Activation
  • \ No newline at end of file diff --git a/_includes/sidelist-parameters-organization.html b/_includes/sidelist-parameters-organization.html deleted file mode 100644 index 48ef6cb..0000000 --- a/_includes/sidelist-parameters-organization.html +++ /dev/null @@ -1,27 +0,0 @@ -
  • Parameter - Organization - -
  • \ No newline at end of file diff --git a/_includes/sidelist-parameters-reference-v1.0.21.html b/_includes/sidelist-parameters-reference-v1.0.21.html deleted file mode 100644 index 3cec49e..0000000 --- a/_includes/sidelist-parameters-reference-v1.0.21.html +++ /dev/null @@ -1,25 +0,0 @@ -
  • Parameter Reference - -
  • \ No newline at end of file diff --git a/_includes/sidelist-parameters-reference-v2.0.0.html b/_includes/sidelist-parameters-reference-v2.0.0.html deleted file mode 100644 index eb1b11f..0000000 --- a/_includes/sidelist-parameters-reference-v2.0.0.html +++ /dev/null @@ -1,74 +0,0 @@ -
  • Parameter Reference - -
  • \ No newline at end of file diff --git a/_includes/sidelist-parameters-reference-v2.0.11.html b/_includes/sidelist-parameters-reference-v2.0.11.html deleted file mode 100644 index 3b34b15..0000000 --- a/_includes/sidelist-parameters-reference-v2.0.11.html +++ /dev/null @@ -1,74 +0,0 @@ -
  • Parameter Reference - -
  • \ No newline at end of file diff --git a/_includes/sidelist-parameters-reference-v2.2.10.html b/_includes/sidelist-parameters-reference-v2.2.10.html deleted file mode 100644 index dd727a4..0000000 --- a/_includes/sidelist-parameters-reference-v2.2.10.html +++ /dev/null @@ -1,75 +0,0 @@ -
  • Parameter Reference - -
  • \ No newline at end of file diff --git a/_includes/sidelist-parameters-reference.html b/_includes/sidelist-parameters-reference.html deleted file mode 100644 index dd727a4..0000000 --- a/_includes/sidelist-parameters-reference.html +++ /dev/null @@ -1,75 +0,0 @@ -
  • Parameter Reference - -
  • \ No newline at end of file diff --git a/_includes/sidelist-release-notes.html b/_includes/sidelist-release-notes.html deleted file mode 100644 index 73b2b48..0000000 --- a/_includes/sidelist-release-notes.html +++ /dev/null @@ -1,2 +0,0 @@ -
  • Release Notes -
  • diff --git a/_includes/sidelist-understanding-v1.0.21.html b/_includes/sidelist-understanding-v1.0.21.html deleted file mode 100644 index 53be4c8..0000000 --- a/_includes/sidelist-understanding-v1.0.21.html +++ /dev/null @@ -1,3 +0,0 @@ -
  • UNDERSTANDING DDN
  • -
  • Parameter Organization Structure
  • -{%- include liquid_searchVersionTreeFile.html ver=include.ver curPath=include.curPath targetRelativePath="sidelist-parameters-reference.html" -%} diff --git a/_includes/sidelist-understanding.html b/_includes/sidelist-understanding.html deleted file mode 100644 index 6022445..0000000 --- a/_includes/sidelist-understanding.html +++ /dev/null @@ -1,4 +0,0 @@ -
  • UNDERSTANDING DDN
  • - -{%- include liquid_searchVersionTreeFile.html ver=include.ver curPath=include.curPath targetRelativePath="sidelist-parameters-organization.html" -%} -{%- include liquid_searchVersionTreeFile.html ver=include.ver curPath=include.curPath targetRelativePath="sidelist-parameters-reference.html" -%} diff --git a/_includes/sidelist-useful.html b/_includes/sidelist-useful.html deleted file mode 100644 index 2e76650..0000000 --- a/_includes/sidelist-useful.html +++ /dev/null @@ -1,3 +0,0 @@ -
  • USEFUL RESOURCES
  • -{%- include liquid_searchVersionTreeFile.html ver=include.ver curPath=include.curPath targetRelativePath="sidelist-license.html" -%} -{%- include liquid_searchVersionTreeFile.html ver=include.ver curPath=include.curPath targetRelativePath="sidelist-release-notes.html" -%} diff --git a/_layouts/default-layout-OLD.html b/_layouts/default-layout-OLD.html deleted file mode 100644 index e8e9f67..0000000 --- a/_layouts/default-layout-OLD.html +++ /dev/null @@ -1,110 +0,0 @@ - - - -{%- include head.html -%} -{%- assign noTitleIndex = "" -%} -{%- if page.noTitleIndex or page.url contains 'release-notes' -%} - {%- assign noTitleIndex = "noTitleIndex" -%} -{%- endif -%} - - {% assign url = 'https://www.dynamsoft.com/shared/head/' %} - {% remote_include {{ url }} %} - - {%- include ddnNav.html -%} -
    Table of contents
    -
    -
    -
    -
    - {%- include main-page-head.html -%} -
    -
    -
    - {{ content }} - -
    -
    -
    -

    This page is compatible for:

    -

    Version 1.0

    -
    -
    -

    Is this page helpful?

    - YesYes - NoNo -
    -
    - {%- if page.needAutoGenerateSidebar -%} -

    In this article:

    -
    - {%- endif -%} -
    -
    - -
    - -
    -
    -
    -
    -
    - {%- include liquid_autoGenerateHistoryList.html -%} - {%- include auto-version-list.html -%} -
    -
    -
    -
    - {%- include page_footer.html -%} -
    - - - - - - {%- include livehelp.html -%} - - - - - - - - - - - - - - diff --git a/_layouts/home-page.html b/_layouts/home-page.html deleted file mode 100644 index 89aa900..0000000 --- a/_layouts/home-page.html +++ /dev/null @@ -1,50 +0,0 @@ - - - -{%- include head.html -%} - - - - - {% assign url = 'https://www.dynamsoft.com/shared/head/' %} - {% remote_include {{ url }} %} - -
    -
    -
    - - {{ content }} -
    -
    -
    -
    - {%- include page_footer.html -%} -
    - - - - - - - diff --git a/_layouts/search-page-OLD.html b/_layouts/search-page-OLD.html deleted file mode 100644 index 51609d5..0000000 --- a/_layouts/search-page-OLD.html +++ /dev/null @@ -1,210 +0,0 @@ - - - -{%- include head.html -%} - - - - {% assign url = 'https://www.dynamsoft.com/shared/head/' %} - {% remote_include {{ url }} %} - - {%- include ddnNav.html -%} -
    -
    -
    -
    -
    -
    -
    -

    Search

    - - -
    -
    -
    - -
    -
    -
    -
    -
    - {%- include page_footer.html -%} -
    - - - - {%- include livehelp.html -%} - - - \ No newline at end of file diff --git a/assets/js/ddnCoreVersionSearch.json b/assets/js/ddnCoreVersionSearch.json deleted file mode 100644 index f889f54..0000000 --- a/assets/js/ddnCoreVersionSearch.json +++ /dev/null @@ -1,182 +0,0 @@ -[ - { - "version": "2.4.10", - "matchList": { - "dcvRepoCore": [ - { - "path": "/parameters/reference/capture-vision-template", - "version": "2.4.10" - },{ - "path": "/parameters/reference/target-roi-def", - "version": "2.4.10" - },{ - "path": "/parameters/reference/document-normalizer-task-settings", - "version": "2.4.10" - },{ - "path": "/parameters/reference/image-parameter", - "version": "2.2.40" - },{ - "path": "/parameters/reference/image-source-options", - "version": "3.2.40" - },{ - "path": "/parameters/reference/global-parameter", - "version": "2.4.10" - } - ] - } - }, - { - "version": "2.2.10", - "matchList": { - "dcvRepoCore": [ - { - "path": "/parameters/reference/capture-vision-template", - "version": "2.2.10" - },{ - "path": "/parameters/reference/target-roi-def", - "version": "2.2.10" - },{ - "path": "/parameters/reference/document-normalizer-task-settings", - "version": "2.2.10" - },{ - "path": "/parameters/reference/image-parameter", - "version": "2.2.10" - },{ - "path": "/parameters/reference/image-source-options", - "version": "3.2.10" - },{ - "path": "/parameters/reference/global-parameter", - "version": "2.2.10" - } - ] - } - }, - { - "version": "2.2.0", - "matchList": { - "dcvRepoCore": [ - { - "path": "/parameters/reference/capture-vision-template", - "version": "2.2.0" - },{ - "path": "/parameters/reference/target-roi-def", - "version": "2.2.0" - },{ - "path": "/parameters/reference/document-normalizer-task-settings", - "version": "2.2.0" - },{ - "path": "/parameters/reference/image-parameter", - "version": "2.2.0" - },{ - "path": "/parameters/reference/image-source-options", - "version": "3.2.0" - },{ - "path": "/parameters/reference/global-parameter", - "version": "2.2.0" - } - ] - } - }, - { - "version": "2.0.21", - "matchList": { - "dcvRepoCore": [ - { - "path": "/parameters/reference/capture-vision-template", - "version": "2.0.20" - },{ - "path": "/parameters/reference/target-roi-def", - "version": "2.0.20" - },{ - "path": "/parameters/reference/document-normalizer-task-settings", - "version": "2.0.20" - },{ - "path": "/parameters/reference/image-parameter", - "version": "2.0.20" - },{ - "path": "/parameters/reference/image-source-options", - "version": "3.0.20" - },{ - "path": "/parameters/reference/global-parameter", - "version": "2.0.20" - } - ] - } - }, - { - "version": "2.0.20", - "matchList": { - "dcvRepoCore": [ - { - "path": "/parameters/reference/capture-vision-template", - "version": "2.0.20" - },{ - "path": "/parameters/reference/target-roi-def", - "version": "2.0.20" - },{ - "path": "/parameters/reference/document-normalizer-task-settings", - "version": "2.0.20" - },{ - "path": "/parameters/reference/image-parameter", - "version": "2.0.20" - },{ - "path": "/parameters/reference/image-source-options", - "version": "3.0.20" - },{ - "path": "/parameters/reference/global-parameter", - "version": "2.0.20" - } - ] - } - },{ - "version": "2.0.10", - "matchList": { - "dcvRepoCore": [ - { - "path": "/parameters/reference/capture-vision-template", - "version": "2.0.10" - },{ - "path": "/parameters/reference/target-roi-def", - "version": "2.0.10" - },{ - "path": "/parameters/reference/document-normalizer-task-settings", - "version": "2.0.10" - },{ - "path": "/parameters/reference/image-parameter", - "version": "2.0.10" - },{ - "path": "/parameters/reference/image-source-options", - "version": "3.0.10" - },{ - "path": "/parameters/reference/global-parameter", - "version": "2.0.10" - } - ] - } - },{ - "version": "2.0.0", - "matchList": { - "dcvRepoCore": [ - { - "path": "/parameters/reference/capture-vision-template", - "version": "2.0.0" - },{ - "path": "/parameters/reference/target-roi-def", - "version": "2.0.0" - },{ - "path": "/parameters/reference/document-normalizer-task-settings", - "version": "10.0.0" - },{ - "path": "/parameters/reference/image-parameter", - "version": "3.0.0" - },{ - "path": "/parameters/reference/image-source-options", - "version": "3.0.0" - },{ - "path": "/parameters/reference/global-parameter", - "version": "2.0.0" - } - ] - } - } -] \ No newline at end of file diff --git a/index-v1.0.21.md b/index-v1.0.21.md deleted file mode 100644 index d12d27b..0000000 --- a/index-v1.0.21.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: default-layout -title: Dynamsoft Document Normalizer Documentation Homepage -keywords: homepage, documentation -breadcrumbText: HomePage -description: Documentation Homepage ---- - - -# Documentation HomePage - -* [Introduction]({{ site.introduction }}) - -
    -DEVELOPMENT -
    - -* [Web (Client Side)]({{ site.js }}) -* Mobile - * [Android]({{ site.android }}) - * [iOS]({{ site.ios }}) - * [Xamarin.Forms]({{ site.xamarin }}) -* Server / Desktop - * [C++]({{ site.cpp }}) - * [C]({{ site.c }}) - -
    -UNDERSTANDING DDN -
    - -* [Parameter Organization]({{ site.parameters_ddn }}parameter-organization-structure.html) -* [Parameter Reference]({{ site.parameters_reference_ddn }}) - -
    -USEFUL RESOURCES -
    - -* [Release Notes]({{ site.release_notes }}) -* [License Activation]({{ site.license }}) diff --git a/index-v2.2.0.md b/index-v2.2.0.md deleted file mode 100644 index 0accbcc..0000000 --- a/index-v2.2.0.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: default-layout -title: Dynamsoft Document Normalizer Documentation Homepage -keywords: homepage, documentation -breadcrumbText: HomePage -description: Homepage of Dynamsoft Document Normalizer ---- - -# Documentation HomePage - -* [Introduction]({{ site.introduction }}) - -
    -DEVELOPMENT -
    - -* [Web (Client Side)]({{ site.js }}) -* Mobile - * [Android]({{ site.android }}) - * [iOS]({{ site.ios }}) - * [Xamarin.Forms]({{ site.xamarin }}) -* Server / Desktop - * [C++]({{ site.cpp }}) - -
    -UNDERSTANDING DDN -
    - -* [Parameter Organization]({{ site.parameters_ddn }}parameter-organization-structure.html) -* [Parameter Reference]({{ site.parameters_reference_ddn }}) - -
    -USEFUL RESOURCES -
    - -* [Release Notes]({{ site.release_notes }}) -* [License Activation]({{ site.license }}) diff --git a/index.md b/index.md deleted file mode 100644 index eff252f..0000000 --- a/index.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: default-layout -title: Dynamsoft Document Normalizer Documentation Homepage -keywords: homepage, documentation -breadcrumbText: HomePage -description: Homepage of Dynamsoft Document Normalizer ---- - -# Documentation HomePage - -* [Introduction]({{ site.introduction }}) - -
    -DEVELOPMENT -
    - -* [Web (Client Side)]({{ site.js }}) -* Mobile - * [Android]({{ site.android }}) - * [iOS]({{ site.ios }}) - * [Xamarin.Forms]({{ site.xamarin }}) -* Server / Desktop - * [C++]({{ site.cpp }}) - * [.NET]({{ site.dotnet }}) - -
    -UNDERSTANDING DDN -
    - -* [Parameter Organization]({{ site.parameters_ddn }}parameter-organization-structure.html) -* [Parameter Reference]({{ site.parameters_reference_ddn }}) - -
    -USEFUL RESOURCES -
    - -* [Release Notes]({{ site.release_notes }}) -* [License Activation]({{ site.license }}) diff --git a/license-activation/index-v1.0.30.md b/license-activation/index-v1.0.30.md deleted file mode 100644 index 14544a8..0000000 --- a/license-activation/index-v1.0.30.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: default-layout -title: License initialization - Dynamsoft Document Normalizer -description: This is the documentation - License initialization page of Dynamsoft Document Normalizer. -keywords: Document Normalizer, License initialization -needAutoGenerateSidebar: true -breadcrumbText: License Initialization ---- - -# License initialization - -## Get a trial key - -- A free public trial license is available for every new device for first use of Dynamsoft Document Normalizer. The public trial license is the default key used in samples. You can also find the public trial license on the following parts of this page. -- If your free key is expired, please visit Private Trial License Page to get a 30-day trial extension. - -## Get a full license - -- [Contact us](https://www.dynamsoft.com/company/contact/) to purchase a full license - -## Initialize the license - -The following code snippets are using the public trial license to initialize the license. You can replace the public trial license with your own license key. - -
    ->- JavaScript ->- Java-Android ->- Objective-C ->- Swift ->- C ->- C++ -> ->1. -```javascript -Dynamsoft.DDN.DocumentNormalizer.license = "DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"; -``` -2. -```java -LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", MainActivity.this, new LicenseVerificationListener() { - @Override - public void licenseVerificationCallback(boolean isSuccess, CoreException error) { - if(!isSuccess){ - error.printStackTrace(); - } - } -}); -``` -3. -```objc -[DynamsoftLicenseManager initLicense:@"DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9" verificationDelegate: self]; -- (void)licenseVerificationCallback:(BOOL)isSuccess error:(NSError *)error{ - // Add your code to execute when license verification call back is handled. -} -``` -4. -```swift -DynamsoftLicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", verificationDelegate: self) -func licenseVerificationCallback(_ isSuccess: Bool, error: Error?) { - // Add your code to execute when license verification call back is handled. -} -``` -5. -```c -char errorMessage[256]; -DC_InitLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwNSJ9", errorMessage, 256); -``` -6. -```cpp -char errorMessage[256]; -CLicenseManager::InitLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwNSJ9", errorMessage, 256); -``` diff --git a/license-activation/index.md b/license-activation/index.md deleted file mode 100644 index 549dd10..0000000 --- a/license-activation/index.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -layout: default-layout -title: License initialization - Dynamsoft Document Normalizer -description: This is the documentation - License initialization page of Dynamsoft Document Normalizer. -keywords: Document Normalizer, License initialization -needAutoGenerateSidebar: true -breadcrumbText: License Initialization ---- - -# License initialization - -## Get a trial key - -- A free public trial license is available for every new device for first use of Dynamsoft Document Normalizer. The public trial license is the default key used in samples. You can also find the public trial license on the following parts of this page. -- If your free key is expired, please visit Private Trial License Page to get a 30-day trial extension. - -## Get a full license - -- [Contact us](https://www.dynamsoft.com/company/contact/) to purchase a full license - -## Initialize the license - -The following code snippets are using the public trial license to initialize the license. You can replace the public trial license with your own license key. - -
    ->- JavaScript ->- Java-Android ->- Objective-C ->- Swift ->- C ->- C++ -> ->1. -```javascript -Dynamsoft.License.LicenseManager.initLicense("YOUR-LICENSE-KEY"); -``` -2. -```java -LicenseManager.initLicense("YOUR-LICENSE-KEY", MainActivity.this, new LicenseVerificationListener() { - @Override - public void onLicenseVerified(boolean b, Exception e) { - if(!b && e != null){ - e.printStackTrace(); - } - } -}); -``` -3. -```objc -[DSLicenseManager initLicense:@"YOUR-LICENSE-KEY" verificationDelegate:self]; -- (void)onLicenseVerified:(bool)isSuccess error:(NSError *)error{ - if(!isSuccess && error != nil){ - NSString* msg = error.userInfo[NSUnderlyingErrorKey]; - NSLog(@"%@", msg); - } -} -``` -4. -```swift -LicenseManager.initLicense("YOUR-LICENSE-KEY",verificationDelegate:self) -func onLicenseVerified(_ isSuccess: Bool, error: Error?) { - if(!isSuccess && error != nil){ - let err = error as NSError? - let msg = err!.userInfo[NSUnderlyingErrorKey] as? String - print(msg ?? "") - } -} -``` -5. -```c -char errorMessage[256]; -DC_InitLicense("YOUR-LICENSE-KEY", errorMessage, 256); -``` -6. -```cpp -char errorMessage[256]; -CLicenseManager::InitLicense("YOUR-LICENSE-KEY", errorMessage, 256); -``` diff --git a/parameters-new/reference/index-v2.0.0.md b/parameters-new/reference/index-v2.0.0.md deleted file mode 100644 index dca2e66..0000000 --- a/parameters-new/reference/index-v2.0.0.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Dynamsoft Document Normalizer Parameter Reference - Main Page -description: Dynamsoft Document Normalizer Parameter Reference - Main Page -keywords: parameter reference, parameters -needAutoGenerateSidebar: false -permalink: /parameters/reference/index-v2.0.0.html ---- - -# Parameter Reference - -## Capture Vision Template - - | Parameter Name | Description | - | ---------------------------------------------------------------------------- | ----------- | - | [`ImageROIProcessingNameArray`]({{ site.parameters_reference }}capture-vision-template/image-roi-processing-name-array.html) | Defines the collection of image ROI processing object names, used to refer to the `TargetROIDef` objects. | - | [`ImageSourceName`]({{ site.parameters_reference }}capture-vision-template/image-source-name.html) | Indicates the input source name, used to refer to the `ImageSource` object. | - | [`MaxParallelTasks`]({{ site.parameters_reference }}capture-vision-template/max-parallel-tasks.html) | Defines the maximum number of parallel tasks for the DCV runtime. | - | [`OutputRawImage`]({{ site.parameters_reference }}capture-vision-template/output-raw-Image.html) | Indicates whether DCV finally outputs the raw input image. | - | [`SemanticProcessingNameArray`]({{ site.parameters_reference }}capture-vision-template/semantic-processing-name-array.html) | Represents the collection of semantic-processing object names, used to refer to the `SematicProcessing` objects. | - | [`Timeout`]({{ site.parameters_reference }}capture-vision-template/timeout.html) | Defines the maximum amount of time (in milliseconds) that should be spent processing each image or frame. | - -## Target ROI Def - - | Parameter Name | Description | - | ------------------------------------------------------------------------------------- | ----------- | - | [`BaseTargetROIDefName`]({{ site.parameters_reference }}target-roi-def/base-target-roidef-name.html) | Represents the name of another `TargetROIDef` object to inherit from. | - | [`Location`]({{ site.parameters_reference }}target-roi-def/location.html) | Defines the location of the TargetROI with `reference objects` filter conditions and `offset` parameters. | - | [`PauseFlag`]({{ site.parameters_reference }}target-roi-def/pause-flag.html) | Indicates that the region results generated by this `TargetROIDef` will not be used by other `TargetROIDef` objects that depend on it to calculate the target regions, unless the user explicitly performs an update operation. | - | [`TaskSettingNameArray`]({{ site.parameters_reference }}target-roi-def/task-setting-name-array.html) | Parameter `TaskSettingNameArray` represents the collection of task setting object names, used to refer to the `DocumentNormalizerTaskSetting` objects. | - -## Document Normalizer Task Setting - - | Parameter Name | Description | - | ------------------------------------------------------------------------------------------------------------------------- | ----------- | - | [`BaseDocumentNormalizerTaskSettingName`]({{ site.parameters_reference }}document-normalizer-task-settings/base-document-normalizer-task-setting-name.html) | Represents the name of another `DocumentNormalizerTaskSetting` object to inherit from. | - | [`Brightness`]({{ site.parameters_reference }}document-normalizer-task-settings/brightness.html) | Defines the brightness of the normalized image. | - | [`ColourMode`]({{ site.parameters_reference }}document-normalizer-task-settings/colour-mode.html) | Defines the output colour mode of the normalized image. | - | [`ContentType`]({{ site.parameters_reference }}document-normalizer-task-settings/content-type.html) | Defines which contents are the targeting objects. | - | [`Contrast`]({{ site.parameters_reference }}document-normalizer-task-settings/contrast.html) | Defines the contrast of the normalized image. | - | [`CornerAngleRangeArray`]({{ site.parameters_reference }}document-normalizer-task-settings/corner-angle-range.html) | Defines the range of angles (in degrees) of the extracted corners. | - | [`DeskewMode`]({{ site.parameters_reference }}document-normalizer-task-settings/deskew-mode.html) | Defines the method in which the deskew process way used to apply the deskew process on the target normalized image. | - | [`LineExtractionModes`]({{ site.parameters_reference }}document-normalizer-task-settings/line-extraction-modes.html) | Defines the algorithm used to extract lines. | - | [`PageSize`]({{ site.parameters_reference }}document-normalizer-task-settings/page-size.html) | Defines the page size (width by height in pixels) of the normalized image. | - | [`QuadrilateralDetectionModes`]({{ site.parameters_reference }}document-normalizer-task-settings/quadrilateral-detection-modes.html) | Defines the quadrilateral detection process on an image. | - -## ImageParameter - - | Parameter Name | Description | - | ---------------------------------------------------------------------------------------------------- | ----------- | - | [`BaseImageParameterName`]({{ site.parameters_reference }}image-parameter/base-image-parameter-name.html) | Represents the name of another `ImageParameter` object to inherit from. | - | [`BinarizationModes`]({{ site.parameters_reference }}image-parameter/binarization-modes.html) | Defines the process of binarization | - | [`ColourConversionModes`]({{ site.parameters_reference }}image-parameter/colour-conversion-modes.html) | Defines how to convert a colour image to a grayscale image. | - | [`GrayscaleEnhancementModes`]({{ site.parameters_reference }}image-parameter/grayscale-enhancement-modes.html) | Defines the image processing methods to enhance the quality of the grayscale image. | - | [`GrayscaleTransformationModes`]({{ site.parameters_reference }}image-parameter/grayscale-transformation-modes.html) | Defines whether or not to invert the color of the grayscale image. | - | [`IfEraseTextZone`]({{ site.parameters_reference }}image-parameter/if-erase-text-zone.html) | Defines whether to erase the detected text zone. | - | [`RegionPredetectionModes`]({{ site.parameters_reference }}image-parameter/region-predetection-modes.html) | Defines how to find a region of interest (ROI) within the image or frame. | - | [`ScaleDownThreshold`]({{ site.parameters_reference }}image-parameter/scale-down-threshold.html) | Defines the threshold for image shrinking. | - | [`ScaleUpModes`]({{ site.parameters_reference }}image-parameter/scale-up-modes.html) | Defines the scale-up process when targets in the image are too small. | - | [`TextDetectionMode`]({{ site.parameters_reference }}image-parameter/text-detection-mode.html) | Defines how to detect the text area. | - | [`TextureDetectionModes`]({{ site.parameters_reference }}image-parameter/texture-detection-modes.html) | Defines how to detect texture on an image. | - -## Image Source - - | Parameter Name | Description | - | ------------------------------------------------------------------------ | ----------- | - | [`FileFilter`]({{ site.parameters_reference }}image-source-options/file-filter.html) | Defines a file name filter string, which determines which files are fetched. | - | [`PDFReadingMode`]({{ site.parameters_reference }}image-source-options/pdf-reading-mode.html) | Defines how to handle PDF files. | - | [`Recursive`]({{ site.parameters_reference }}image-source-options/recursive.html) | Defines whether to fetch files recursively. | - | [`Type`]({{ site.parameters_reference }}image-source-options/type.html) | Defines the type of the ImageSource object, which helps CVR create the correct type of image source. | - -## Global Parameter - - | Parameter Name | Description | - | ----------------------------------------------------------------------------------------- | ----------- | - | [`MaxTotalImageDimension`]({{ site.parameters_reference }}global-parameter/max-total-image-dimension.html) | Defines the maximum total dimension of the images that read in the memory | - -## Shared Parameter - - | Parameter Name | Description | - | ------------------------------------------------------------------------------------------------- | ----------- | - | [`DirectoryPath`]({{ site.parameters_reference }}shared-parameter/directory-path.html) | Defines a path when the library have to read files. | - | [`MaxThreadsInOneTask`]({{ site.parameters_reference }}shared-parameter/max-threads-in-one-task.html) | Defines the maximum threads that can be consumed in one task. | - | [`Name`]({{ site.parameters_reference }}shared-parameter/name.html) | Represents the name of the top-level objects in Dynamsoft Capture Vision Parameter Template, which serves as its unique identifier. | - | [`SectionImageParameterArray`]({{ site.parameters_reference }}shared-parameter/section-image-parameter-array.html) | Defines the image processing algorithms that implemented in the task. | - | [`StartSection`]({{ site.parameters_reference }}shared-parameter/start-section.html) | Defines the start section of the algorithm task. | - | [`TerminateSetting`]({{ site.parameters_reference }}shared-parameter/terminate-setting.html) | Defines the terminate stages of the task. | \ No newline at end of file diff --git a/parameters-new/reference/index-v2.0.11.md b/parameters-new/reference/index-v2.0.11.md deleted file mode 100644 index e34380c..0000000 --- a/parameters-new/reference/index-v2.0.11.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Dynamsoft Document Normalizer Parameter Reference - Main Page -description: Dynamsoft Document Normalizer Parameter Reference - Main Page -keywords: parameter reference, parameters -needAutoGenerateSidebar: false -permalink: /parameters/reference/index-v2.0.11.html ---- - -# Parameter Reference - -## Capture Vision Template - - | Parameter Name | Description | - | ---------------------------------------------------------------------------- | ----------- | - | [`ImageROIProcessingNameArray`]({{ site.parameters_reference }}capture-vision-template/image-roi-processing-name-array.html) | Defines the collection of image ROI processing object names, used to refer to the `TargetROIDef` objects. | - | [`ImageSourceName`]({{ site.parameters_reference }}capture-vision-template/image-source-name.html) | Indicates the input source name, used to refer to the `ImageSource` object. | - | [`MaxParallelTasks`]({{ site.parameters_reference }}capture-vision-template/max-parallel-tasks.html) | Defines the maximum number of parallel tasks for the DCV runtime. | - | [`OutputOriginalImage`]({{ site.parameters_reference }}capture-vision-template/output-original-Image.html) | Indicates whether DCV finally outputs the original input image. | - | [`SemanticProcessingNameArray`]({{ site.parameters_reference }}capture-vision-template/semantic-processing-name-array.html) | Represents the collection of semantic-processing object names, used to refer to the `SematicProcessing` objects. | - | [`Timeout`]({{ site.parameters_reference }}capture-vision-template/timeout.html) | Defines the maximum amount of time (in milliseconds) that should be spent processing each image or frame. | - -## Target ROI Def - - | Parameter Name | Description | - | ------------------------------------------------------------------------------------- | ----------- | - | [`BaseTargetROIDefName`]({{ site.parameters_reference }}target-roi-def/base-target-roidef-name.html) | Represents the name of another `TargetROIDef` object to inherit from. | - | [`Location`]({{ site.parameters_reference }}target-roi-def/location.html) | Defines the location of the TargetROI with `reference objects` filter conditions and `offset` parameters. | - | [`PauseFlag`]({{ site.parameters_reference }}target-roi-def/pause-flag.html) | Indicates that the region results generated by this `TargetROIDef` will not be used by other `TargetROIDef` objects that depend on it to calculate the target regions, unless the user explicitly performs an update operation. | - | [`TaskSettingNameArray`]({{ site.parameters_reference }}target-roi-def/task-setting-name-array.html) | Parameter `TaskSettingNameArray` represents the collection of task setting object names, used to refer to the `DocumentNormalizerTaskSetting` objects. | - -## Document Normalizer Task Setting - - | Parameter Name | Description | - | ------------------------------------------------------------------------------------------------------------------------- | ----------- | - | [`BaseDocumentNormalizerTaskSettingName`]({{ site.parameters_reference }}document-normalizer-task-settings/base-document-normalizer-task-setting-name.html) | Represents the name of another `DocumentNormalizerTaskSetting` object to inherit from. | - | [`Brightness`]({{ site.parameters_reference }}document-normalizer-task-settings/brightness.html) | Defines the brightness of the normalized image. | - | [`ColourMode`]({{ site.parameters_reference }}document-normalizer-task-settings/colour-mode.html) | Defines the output colour mode of the normalized image. | - | [`ContentType`]({{ site.parameters_reference }}document-normalizer-task-settings/content-type.html) | Defines which contents are the targeting objects. | - | [`Contrast`]({{ site.parameters_reference }}document-normalizer-task-settings/contrast.html) | Defines the contrast of the normalized image. | - | [`CornerAngleRange`]({{ site.parameters_reference }}document-normalizer-task-settings/corner-angle-range.html) | Defines the range of angles (in degrees) of the extracted corners. | - | [`DeskewMode`]({{ site.parameters_reference }}document-normalizer-task-settings/deskew-mode.html) | Defines the method in which the deskew process way used to apply the deskew process on the target normalized image. | - | [`LineExtractionModes`]({{ site.parameters_reference }}document-normalizer-task-settings/line-extraction-modes.html) | Defines the algorithm used to extract lines. | - | [`PageSize`]({{ site.parameters_reference }}document-normalizer-task-settings/page-size.html) | Defines the page size (width by height in pixels) of the normalized image. | - | [`QuadrilateralDetectionModes`]({{ site.parameters_reference }}document-normalizer-task-settings/quadrilateral-detection-modes.html) | Defines the quadrilateral detection process on an image. | - -## ImageParameter - - | Parameter Name | Description | - | ---------------------------------------------------------------------------------------------------- | ----------- | - | [`BaseImageParameterName`]({{ site.parameters_reference }}image-parameter/base-image-parameter-name.html) | Represents the name of another `ImageParameter` object to inherit from. | - | [`BinarizationModes`]({{ site.parameters_reference }}image-parameter/binarization-modes.html) | Defines the process of binarization | - | [`ColourConversionModes`]({{ site.parameters_reference }}image-parameter/colour-conversion-modes.html) | Defines how to convert a colour image to a grayscale image. | - | [`GrayscaleEnhancementModes`]({{ site.parameters_reference }}image-parameter/grayscale-enhancement-modes.html) | Defines the image processing methods to enhance the quality of the grayscale image. | - | [`GrayscaleTransformationModes`]({{ site.parameters_reference }}image-parameter/grayscale-transformation-modes.html) | Defines whether or not to invert the color of the grayscale image. | - | [`IfEraseTextZone`]({{ site.parameters_reference }}image-parameter/if-erase-text-zone.html) | Defines whether to erase the detected text zone. | - | [`RegionPredetectionModes`]({{ site.parameters_reference }}image-parameter/region-predetection-modes.html) | Defines how to find a region of interest (ROI) within the image or frame. | - | [`ScaleDownThreshold`]({{ site.parameters_reference }}image-parameter/scale-down-threshold.html) | Defines the threshold for image shrinking. | - | [`ScaleUpModes`]({{ site.parameters_reference }}image-parameter/scale-up-modes.html) | Defines the scale-up process when targets in the image are too small. | - | [`TextDetectionMode`]({{ site.parameters_reference }}image-parameter/text-detection-mode.html) | Defines how to detect the text area. | - | [`TextureDetectionModes`]({{ site.parameters_reference }}image-parameter/texture-detection-modes.html) | Defines how to detect texture on an image. | - -## Image Source - - | Parameter Name | Description | - | ------------------------------------------------------------------------ | ----------- | - | [`FileFilter`]({{ site.parameters_reference }}image-source-options/file-filter.html) | Defines a file name filter string, which determines which files are fetched. | - | [`PDFReadingMode`]({{ site.parameters_reference }}image-source-options/pdf-reading-mode.html) | Defines how to handle PDF files. | - | [`Recursive`]({{ site.parameters_reference }}image-source-options/recursive.html) | Defines whether to fetch files recursively. | - | [`Type`]({{ site.parameters_reference }}image-source-options/type.html) | Defines the type of the ImageSource object, which helps CVR create the correct type of image source. | - -## Global Parameter - - | Parameter Name | Description | - | ----------------------------------------------------------------------------------------- | ----------- | - | [`MaxTotalImageDimension`]({{ site.parameters_reference }}global-parameter/max-total-image-dimension.html) | Defines the maximum total dimension of the images that read in the memory | - -## Shared Parameter - - | Parameter Name | Description | - | ------------------------------------------------------------------------------------------------- | ----------- | - | [`DirectoryPath`]({{ site.parameters_reference }}shared-parameter/directory-path.html) | Defines a path when the library have to read files. | - | [`MaxThreadsInOneTask`]({{ site.parameters_reference }}shared-parameter/max-threads-in-one-task.html) | Defines the maximum threads that can be consumed in one task. | - | [`Name`]({{ site.parameters_reference }}shared-parameter/name.html) | Represents the name of the top-level objects in Dynamsoft Capture Vision Parameter Template, which serves as its unique identifier. | - | [`SectionImageParameterArray`]({{ site.parameters_reference }}shared-parameter/section-image-parameter-array.html) | Defines the image processing algorithms that implemented in the task. | - | [`StartSection`]({{ site.parameters_reference }}shared-parameter/start-section.html) | Defines the start section of the algorithm task. | - | [`TerminateSetting`]({{ site.parameters_reference }}shared-parameter/terminate-setting.html) | Defines the terminate stages of the task. | \ No newline at end of file diff --git a/parameters-new/reference/index-v2.2.10.md b/parameters-new/reference/index-v2.2.10.md deleted file mode 100644 index 424e1bb..0000000 --- a/parameters-new/reference/index-v2.2.10.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Dynamsoft Document Normalizer Parameter Reference - Main Page -description: Dynamsoft Document Normalizer Parameter Reference - Main Page -keywords: parameter reference, parameters -needAutoGenerateSidebar: false -permalink: /parameters/reference/index-v2.2.10.html ---- - -# Parameter Reference - -## Capture Vision Template - - | Parameter Name | Description | - | ---------------------------------------------------------------------------- | ----------- | - | [`Name`]({{ site.parameters_reference }}shared-parameter/name.html) | Represents the name of the top-level objects in Dynamsoft Capture Vision Parameter Template, which serves as its unique identifier. | - | [`ImageROIProcessingNameArray`]({{ site.parameters_reference }}capture-vision-template/image-roi-processing-name-array.html) | Defines the collection of image ROI processing object names, used to refer to the `TargetROIDef` objects. | - | [`ImageSourceName`]({{ site.parameters_reference }}capture-vision-template/image-source-name.html) | Indicates the input source name, used to refer to the `ImageSource` object. | - | [`MinImageCaptureInterval`]({{ site.parameters_reference }}capture-vision-template/min-image-capture-interval.html) | Specifies the minimum time interval (in milliseconds) allowed between consecutive image captures. | - | [`MaxParallelTasks`]({{ site.parameters_reference }}capture-vision-template/max-parallel-tasks.html) | Defines the maximum number of parallel tasks for the DCV runtime. | - | [`OutputOriginalImage`]({{ site.parameters_reference }}capture-vision-template/output-original-Image.html) | Indicates whether DCV finally outputs the original input image. | - | [`SemanticProcessingNameArray`]({{ site.parameters_reference }}capture-vision-template/semantic-processing-name-array.html) | Represents the collection of semantic-processing object names, used to refer to the `SematicProcessing` objects. | - | [`Timeout`]({{ site.parameters_reference }}capture-vision-template/timeout.html) | Defines the maximum amount of time (in milliseconds) that should be spent processing each image or frame. | - -## Target ROI Def - - | Parameter Name | Description | - | ------------------------------------------------------------------------------------- | ----------- | - | [`Name`]({{ site.parameters_reference }}shared-parameter/name.html) | Represents the name of the top-level objects in Dynamsoft Capture Vision Parameter Template, which serves as its unique identifier. | - | [`BaseTargetROIDefName`]({{ site.parameters_reference }}target-roi-def/base-target-roidef-name.html) | Represents the name of another `TargetROIDef` object to inherit from. | - | [`Location`]({{ site.parameters_reference }}target-roi-def/location.html) | Defines the location of the TargetROI with `reference objects` filter conditions and `offset` parameters. | - | [`PauseFlag`]({{ site.parameters_reference }}target-roi-def/pause-flag.html) | Indicates that the region results generated by this `TargetROIDef` will not be used by other `TargetROIDef` objects that depend on it to calculate the target regions, unless the user explicitly performs an update operation. | - | [`TaskSettingNameArray`]({{ site.parameters_reference }}target-roi-def/task-setting-name-array.html) | Parameter `TaskSettingNameArray` represents the collection of task setting object names, used to refer to the `DocumentNormalizerTaskSetting` objects. | - -## Document Normalizer Task Setting - - | Parameter Name | Description | - | ------------------------------------------------------------------------------------------------------------------------- | ----------- | - | [`Name`]({{ site.parameters_reference }}shared-parameter/name.html) | Represents the name of the top-level objects in Dynamsoft Capture Vision Parameter Template, which serves as its unique identifier. | - | [`BaseDocumentNormalizerTaskSettingName`]({{ site.parameters_reference }}document-normalizer-task-settings/base-document-normalizer-task-setting-name.html) | Represents the name of another `DocumentNormalizerTaskSetting` object to inherit from. | - | [`Brightness`]({{ site.parameters_reference }}document-normalizer-task-settings/brightness.html) | Defines the brightness of the normalized image. | - | [`ColourMode`]({{ site.parameters_reference }}document-normalizer-task-settings/colour-mode.html) | Defines the output colour mode of the normalized image. | - | [`ContentType`]({{ site.parameters_reference }}document-normalizer-task-settings/content-type.html) | Defines which contents are the targeting objects. | - | [`Contrast`]({{ site.parameters_reference }}document-normalizer-task-settings/contrast.html) | Defines the contrast of the normalized image. | - | [`CornerAngleRange`]({{ site.parameters_reference }}document-normalizer-task-settings/corner-angle-range.html) | Defines the range of angles (in degrees) of the extracted corners. | - | [`DeskewMode`]({{ site.parameters_reference }}document-normalizer-task-settings/deskew-mode.html) | Defines the method in which the deskew process way used to apply the deskew process on the target normalized image. | - | [`LineExtractionModes`]({{ site.parameters_reference }}document-normalizer-task-settings/line-extraction-modes.html) | Defines the algorithm used to extract lines. | - | [`PageSize`]({{ site.parameters_reference }}document-normalizer-task-settings/page-size.html) | Defines the page size (width by height in pixels) of the normalized image. | - | [`QuadrilateralDetectionModes`]({{ site.parameters_reference }}document-normalizer-task-settings/quadrilateral-detection-modes.html) | Defines the quadrilateral detection process on an image. | - | [`MaxThreadsInOneTask`]({{ site.parameters_reference }}shared-parameter/max-threads-in-one-task.html) | Defines the maximum threads that can be consumed in one task. | - | [`SectionImageParameterArray`]({{ site.parameters_reference }}shared-parameter/section-image-parameter-array.html) | Defines the image processing algorithms that implemented in the task. | - | [`StartSection`]({{ site.parameters_reference }}shared-parameter/start-section.html) | Defines the start section of the algorithm task. | - | [`TerminateSetting`]({{ site.parameters_reference }}shared-parameter/terminate-setting.html) | Defines the terminate stages of the task. | - -## ImageParameter - - | Parameter Name | Description | - | ---------------------------------------------------------------------------------------------------- | ----------- | - | [`Name`]({{ site.parameters_reference }}shared-parameter/name.html) | Represents the name of the top-level objects in Dynamsoft Capture Vision Parameter Template, which serves as its unique identifier. | - | [`BaseImageParameterName`]({{ site.parameters_reference }}image-parameter/base-image-parameter-name.html) | Represents the name of another `ImageParameter` object to inherit from. | - | [`BinarizationModes`]({{ site.parameters_reference }}image-parameter/binarization-modes.html) | Defines the process of binarization | - | [`ColourConversionModes`]({{ site.parameters_reference }}image-parameter/colour-conversion-modes.html) | Defines how to convert a colour image to a grayscale image. | - | [`GrayscaleEnhancementModes`]({{ site.parameters_reference }}image-parameter/grayscale-enhancement-modes.html) | Defines the image processing methods to enhance the quality of the grayscale image. | - | [`GrayscaleTransformationModes`]({{ site.parameters_reference }}image-parameter/grayscale-transformation-modes.html) | Defines whether or not to invert the color of the grayscale image. | - | [`IfEraseTextZone`]({{ site.parameters_reference }}image-parameter/if-erase-text-zone.html) | Defines whether to erase the detected text zone. | - | [`RegionPredetectionModes`]({{ site.parameters_reference }}image-parameter/region-predetection-modes.html) | Defines how to find a region of interest (ROI) within the image or frame. | - | [`ScaleDownThreshold`]({{ site.parameters_reference }}image-parameter/scale-down-threshold.html) | Defines the threshold for image shrinking. | - | [`ScaleUpModes`]({{ site.parameters_reference }}image-parameter/scale-up-modes.html) | Defines the scale-up process when targets in the image are too small. | - | [`TextDetectionMode`]({{ site.parameters_reference }}image-parameter/text-detection-mode.html) | Defines how to detect the text area. | - | [`TextureDetectionModes`]({{ site.parameters_reference }}image-parameter/texture-detection-modes.html) | Defines how to detect texture on an image. | - -## Image Source - - | Parameter Name | Description | - | ------------------------------------------------------------------------ | ----------- | - | [`Name`]({{ site.parameters_reference }}shared-parameter/name.html) | Represents the name of the top-level objects in Dynamsoft Capture Vision Parameter Template, which serves as its unique identifier. | - | [`FileFilter`]({{ site.parameters_reference }}image-source-options/file-filter.html) | Defines a file name filter string, which determines which files are fetched. | - | [`Pages`]({{ site.parameters_reference }}image-source-options/pages.html) | Sets the 0-based page indexes of a file (.tiff or .pdf) for barcode searching. | - | [`PDFReadingMode`]({{ site.parameters_reference }}image-source-options/pdf-reading-mode.html) | Defines how to handle PDF files. | - | [`Recursive`]({{ site.parameters_reference }}image-source-options/recursive.html) | Defines whether to fetch files recursively. | - | [`Type`]({{ site.parameters_reference }}image-source-options/type.html) | Defines the type of the ImageSource object, which helps CVR create the correct type of image source. | - -## Global Parameter - - | Parameter Name | Description | - | ----------------------------------------------------------------------------------------- | ----------- | - | [`MaxTotalImageDimension`]({{ site.parameters_reference }}global-parameter/max-total-image-dimension.html) | Defines the maximum total dimension of the images that read in the memory | diff --git a/parameters-new/reference/index.md b/parameters-new/reference/index.md deleted file mode 100644 index c466d74..0000000 --- a/parameters-new/reference/index.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: Dynamsoft Document Normalizer Parameter Reference - Main Page -description: Dynamsoft Document Normalizer Parameter Reference - Main Page -keywords: parameter reference, parameters -needAutoGenerateSidebar: false -permalink: /parameters/reference/index.html ---- - -# Parameter Reference - -## Capture Vision Template - - | Parameter Name | Description | - | ---------------------------------------------------------------------------- | ----------- | - | [`Name`]({{ site.parameters_reference }}shared-parameter/name.html) | Represents the name of the top-level objects in Dynamsoft Capture Vision Parameter Template, which serves as its unique identifier. | - | [`ImageROIProcessingNameArray`]({{ site.parameters_reference }}capture-vision-template/image-roi-processing-name-array.html) | Defines the collection of image ROI processing object names, used to refer to the `TargetROIDef` objects. | - | [`ImageSourceName`]({{ site.parameters_reference }}capture-vision-template/image-source-name.html) | Indicates the input source name, used to refer to the `ImageSource` object. | - | [`MinImageCaptureInterval`]({{ site.parameters_reference }}capture-vision-template/min-image-capture-interval.html) | Specifies the minimum time interval (in milliseconds) allowed between consecutive image captures. | - | [`MaxParallelTasks`]({{ site.parameters_reference }}capture-vision-template/max-parallel-tasks.html) | Defines the maximum number of parallel tasks for the DCV runtime. | - | [`OutputOriginalImage`]({{ site.parameters_reference }}capture-vision-template/output-original-Image.html) | Indicates whether DCV finally outputs the original input image. | - | [`SemanticProcessingNameArray`]({{ site.parameters_reference }}capture-vision-template/semantic-processing-name-array.html) | Represents the collection of semantic-processing object names, used to refer to the `SematicProcessing` objects. | - | [`Timeout`]({{ site.parameters_reference }}capture-vision-template/timeout.html) | Defines the maximum amount of time (in milliseconds) that should be spent processing each image or frame. | - -## Target ROI Def - - | Parameter Name | Description | - | ------------------------------------------------------------------------------------- | ----------- | - | [`Name`]({{ site.parameters_reference }}shared-parameter/name.html) | Represents the name of the top-level objects in Dynamsoft Capture Vision Parameter Template, which serves as its unique identifier. | - | [`BaseTargetROIDefName`]({{ site.parameters_reference }}target-roi-def/base-target-roidef-name.html) | Represents the name of another `TargetROIDef` object to inherit from. | - | [`Location`]({{ site.parameters_reference }}target-roi-def/location.html) | Defines the location of the TargetROI with `reference objects` filter conditions and `offset` parameters. | - | [`PauseFlag`]({{ site.parameters_reference }}target-roi-def/pause-flag.html) | Indicates that the region results generated by this `TargetROIDef` will not be used by other `TargetROIDef` objects that depend on it to calculate the target regions, unless the user explicitly performs an update operation. | - | [`TaskSettingNameArray`]({{ site.parameters_reference }}target-roi-def/task-setting-name-array.html) | Parameter `TaskSettingNameArray` represents the collection of task setting object names, used to refer to the `DocumentNormalizerTaskSetting` objects. | - -## Document Normalizer Task Setting - - | Parameter Name | Description | - | ------------------------------------------------------------------------------------------------------------------------- | ----------- | - | [`Name`]({{ site.parameters_reference }}shared-parameter/name.html) | Represents the name of the top-level objects in Dynamsoft Capture Vision Parameter Template, which serves as its unique identifier. | - | [`BaseDocumentNormalizerTaskSettingName`]({{ site.parameters_reference }}document-normalizer-task-settings/base-document-normalizer-task-setting-name.html) | Represents the name of another `DocumentNormalizerTaskSetting` object to inherit from. | - | [`Brightness`]({{ site.parameters_reference }}document-normalizer-task-settings/brightness.html) | Defines the brightness of the normalized image. | - | [`ColourMode`]({{ site.parameters_reference }}document-normalizer-task-settings/colour-mode.html) | Defines the output colour mode of the normalized image. | - | [`ContentType`]({{ site.parameters_reference }}document-normalizer-task-settings/content-type.html) | Defines which contents are the targeting objects. | - | [`Contrast`]({{ site.parameters_reference }}document-normalizer-task-settings/contrast.html) | Defines the contrast of the normalized image. | - | [`CornerAngleRange`]({{ site.parameters_reference }}document-normalizer-task-settings/corner-angle-range.html) | Defines the range of angles (in degrees) of the extracted corners. | - | [`DeskewMode`]({{ site.parameters_reference }}document-normalizer-task-settings/deskew-mode.html) | Defines the method in which the deskew process way used to apply the deskew process on the target normalized image. | - | [`ExpectedDocumentsCount`]({{ site.parameters_reference }}document-normalizer-task-settings/expected-documents-count.html) | Defines the the number of documents expected to be detected. | - | [`LineExtractionModes`]({{ site.parameters_reference }}document-normalizer-task-settings/line-extraction-modes.html) | Defines the algorithm used to extract lines. | - | [`PageSize`]({{ site.parameters_reference }}document-normalizer-task-settings/page-size.html) | Defines the page size (width by height in pixels) of the normalized image. | - | [`QuadrilateralDetectionModes`]({{ site.parameters_reference }}document-normalizer-task-settings/quadrilateral-detection-modes.html) | Defines the quadrilateral detection process on an image. | - | [`MaxThreadsInOneTask`]({{ site.parameters_reference }}shared-parameter/max-threads-in-one-task.html) | Defines the maximum threads that can be consumed in one task. | - | [`SectionImageParameterArray`]({{ site.parameters_reference }}shared-parameter/section-image-parameter-array.html) | Defines the image processing algorithms that implemented in the task. | - | [`StartSection`]({{ site.parameters_reference }}shared-parameter/start-section.html) | Defines the start section of the algorithm task. | - | [`TerminateSetting`]({{ site.parameters_reference }}shared-parameter/terminate-setting.html) | Defines the terminate stages of the task. | - -## ImageParameter - - | Parameter Name | Description | - | ---------------------------------------------------------------------------------------------------- | ----------- | - | [`Name`]({{ site.parameters_reference }}shared-parameter/name.html) | Represents the name of the top-level objects in Dynamsoft Capture Vision Parameter Template, which serves as its unique identifier. | - | [`BaseImageParameterName`]({{ site.parameters_reference }}image-parameter/base-image-parameter-name.html) | Represents the name of another `ImageParameter` object to inherit from. | - | [`BinarizationModes`]({{ site.parameters_reference }}image-parameter/binarization-modes.html) | Defines the process of binarization | - | [`ColourConversionModes`]({{ site.parameters_reference }}image-parameter/colour-conversion-modes.html) | Defines how to convert a colour image to a grayscale image. | - | [`GrayscaleEnhancementModes`]({{ site.parameters_reference }}image-parameter/grayscale-enhancement-modes.html) | Defines the image processing methods to enhance the quality of the grayscale image. | - | [`GrayscaleTransformationModes`]({{ site.parameters_reference }}image-parameter/grayscale-transformation-modes.html) | Defines whether or not to invert the color of the grayscale image. | - | [`IfEraseTextZone`]({{ site.parameters_reference }}image-parameter/if-erase-text-zone.html) | Defines whether to erase the detected text zone. | - | [`RegionPredetectionModes`]({{ site.parameters_reference }}image-parameter/region-predetection-modes.html) | Defines how to find a region of interest (ROI) within the image or frame. | - | [`ScaleDownThreshold`]({{ site.parameters_reference }}image-parameter/scale-down-threshold.html) | Defines the threshold for image shrinking. | - | [`ScaleUpModes`]({{ site.parameters_reference }}image-parameter/scale-up-modes.html) | Defines the scale-up process when targets in the image are too small. | - | [`TextDetectionMode`]({{ site.parameters_reference }}image-parameter/text-detection-mode.html) | Defines how to detect the text area. | - | [`TextureDetectionModes`]({{ site.parameters_reference }}image-parameter/texture-detection-modes.html) | Defines how to detect texture on an image. | - -## Image Source - - | Parameter Name | Description | - | ------------------------------------------------------------------------ | ----------- | - | [`Name`]({{ site.parameters_reference }}shared-parameter/name.html) | Represents the name of the top-level objects in Dynamsoft Capture Vision Parameter Template, which serves as its unique identifier. | - | [`FileFilter`]({{ site.parameters_reference }}image-source-options/file-filter.html) | Defines a file name filter string, which determines which files are fetched. | - | [`Pages`]({{ site.parameters_reference }}image-source-options/pages.html) | Sets the 0-based page indexes of a file (.tiff or .pdf) for barcode searching. | - | [`PDFReadingMode`]({{ site.parameters_reference }}image-source-options/pdf-reading-mode.html) | Defines how to handle PDF files. | - | [`Recursive`]({{ site.parameters_reference }}image-source-options/recursive.html) | Defines whether to fetch files recursively. | - | [`Type`]({{ site.parameters_reference }}image-source-options/type.html) | Defines the type of the ImageSource object, which helps CVR create the correct type of image source. | - -## Global Parameter - - | Parameter Name | Description | - | ----------------------------------------------------------------------------------------- | ----------- | - | [`MaxTotalImageDimension`]({{ site.parameters_reference }}global-parameter/max-total-image-dimension.html) | Defines the maximum total dimension of the images that read in the memory | diff --git a/parameters/parameter-organization-structure-v1.0.21.md b/parameters/parameter-organization-structure-v1.0.21.md deleted file mode 100644 index 6ddbc1b..0000000 --- a/parameters/parameter-organization-structure-v1.0.21.md +++ /dev/null @@ -1,169 +0,0 @@ ---- -layout: default-layout -title: Parameter Organization Structure -keywords: organization, parameters, documentation -description: Dynamsoft Document Normalizer - Parameter Organization Structure ---- - -# Parameter Organization Structure - -This article introduces the organization structure of all parameters. - -## Definitions - -Dynamsoft Document Normalizer uses a template to organize parameters. A template is a `JSON` object which contains following keys: - -| Key Name | Description | -| -------- | ----------- | -| GlobalParameter | A JSON Object which defines a [GlobalParameter Object](#globalparameter-object). | -| ImageParameterArray | A JSON Object array which defines multiple [ImageParameter Objects](#imageparameter-object). | -| NormalizerParameterArray | A JSON Object array which defines multiple [NormalizerParameter Objects](#normalizerparameter-object). | - -### GlobalParameter Object - -A GlobalParameter object contains following keys: - -| Key Name | Description | -| -------- | ----------- | -| Name | (Required) A string value which specifies the name of current GlobalParameter object. | -| MaxTotalImageDimension | (Optional) Sets the parameter [MaxTotalImageDimension](reference/max-total-image-dimension.md). | - -### ImageParameter Object - -An ImageParameter object contains following keys: - -| Key Name | Description | -| -------- | ----------- | -| Name | (Required) A string value which specifies the name of current ImageParameter object. The name value must be unique between all ImageParameter objects. | -| RegionPredetectionModes | (Optional) Sets the parameter [RegionPredetectionModes](reference/region-predetection-modes.md). | -| Timeout | (Optional) Sets the parameter [Timeout](reference/timeout.md). | -| ColourChannelUsageType | (Optional) Sets the parameter [ColourChannelUsageType](reference/colour-channel-usage-type.md). | -| MaxThreadCount | (Optional) Sets the parameter [MaxThreadCount](reference/max-thread-count.md). | -| ScaleDownThreshold | (Optional) Sets the parameter [ScaleDownThreshold](reference/scale-down-threshold.md). | -| ColourConversionModes | (Optional) Sets the parameter [ColourConversionModes](reference/colour-conversion-modes.md). | -| GrayscaleTransformationModes | (Optional) Sets the parameter [GrayscaleTransformationModes](reference/grayscale-transformation-modes.md). | -| GrayscaleEnhancementModes | (Optional) Sets the parameter [GrayscaleEnhancementModes](reference/grayscale-enhancement-modes.md). | -| BinarizationModes | (Optional) Sets the parameter [BinarizationModes](reference/binarization-modes.md). | -| TextureDetectionModes | (Optional) Sets the parameter [TextureDetectionModes](reference/texture-detection-modes.md). | -| TextFilterModes | (Optional) Sets the parameter [TextFilterModes](reference/text-filter-modes.md). | -| LineExtractionModes | (Optional) Sets the parameter [LineExtractionModes](reference/line-extraction-modes.md). | -| NormalizerParameterName | (Optional) A string value which is the name of a [NormalizerParameter Object](#normalizerparameter-object). | -| BaseImageParameterName | (Optional) A string value which is the name of an [ImageParameter Object](#imageparameter-object). When a parameter is not explicitly set in current ImageParameter Object, it will inherit the value from base ImageParameter Object. If BaseImageParameterName is also not set, this parameter is set with parameter's default value. | - -### NormalizerParameter Object - -A NormalizerParameter object contains following keys: - -| Key Name | Description | -| -------- | ----------- | -| Name | (Required) A string value which specifies the name of current NormalizerParameter object. The name value must be unique between all NormalizerParameter objects. | -| ContentType | (Optional) Sets the parameter [ContentType](reference/content-type.md). | -| InteriorAngleRangeArray | (Optional) Sets the parameter [InteriorAngleRangeArray](reference/interior-angle-range-array.md). | -| QuadrilateralDetectionModes | (Optional) Sets the parameter [QuadrilateralDetectionModes](reference/quadrilateral-detection-modes.md). | -| DeskewMode | (Optional) Sets the parameter [DeskewMode](reference/deskew-mode.md). | -| PageSize | (Optional) Sets the parameter [PageSize](reference/page-size.md). | -| ColourMode | (Optional) Sets the parameter [ColourMode](reference/colour-mode.md). | -| Brightness | (Optional) Sets the parameter [Brightness](reference/brightness.md). | -| Contrast | (Optional) Sets the parameter [Contrast](reference/contrast.md). | - -## Example - -```json -{ - "GlobalParameter":{ - "Name":"GP", - "MaxTotalImageDimension":0 - }, - "ImageParameterArray":[ - { - "Name":"IP-1", - "RegionPredetectionModes":[ - { - "Mode": "RPM_GENERAL" - } - ], - "Timeout": 10000, - "ColourChannelUsageType": "CCUT_AUTO", - "MaxThreadCount": 4, - "ScaleDownThreshold": 2300, - "ColourConversionModes":[ - { - "Mode": "CICM_GENERAL", - "BlueChannelWeight": -1, - "GreenChannelWeight": -1, - "RedChannelWeight": -1 - } - ], - "GrayscaleTransformationModes":[ - { - "Mode": "GTM_ORIGINAL" - } - ], - "GrayscaleEnhancementModes": [ - { - "Mode": "GEM_GENERAL" - } - ], - "BinarizationModes":[ - { - "Mode": "BM_LOCAL_BLOCK", - "BlockSizeX": 0, - "BlockSizeY": 0, - "EnableFillBinaryVacancy": 0, - "MorphOperation": "Close", - "MorphShape": "Rectangle", - "MorphOperationKernelSizeX": -1, - "MorphOperationKernelSizeY": -1, - "ThresholdCompensation": 10 - } - ], - "TextureDetectionModes":[ - { - "Mode": "TDM_GENERAL_WIDTH_CONCENTRATION", - "Sensitivity": 5 - } - ], - "TextFilterModes": [ - { - "Mode": "TFM_GENERAL_CONTOUR", - "IfEraseTextZone": 0, - "MinImageDimension": 65536, - "Sensitivity": 0 - } - ], - "LineExtractionModes": [ - { - "Mode": "LEM_GENERAL" - } - ], - "NormalizerParameterName":"NP-1", - "BaseImageParameterName":"" - } - ], - "NormalizerParameterArray":[ - { - "Name":"NP-1", - "ContentType": "CT_DOCUMENT", - "InteriorAngleRangeArray": [ - { - "MinValue": 70, - "MaxValue": 110 - } - ], - "QuadrilateralDetectionModes": [ - { - "Mode": "QDM_GENERAL" - } - ], - "DeskewMode": { - "Mode": "DM_PERSPECTIVE_CORRECTION", - "ContentDirection": 0 - }, - "PageSize": [-1, -1], - "ColourMode": "ICM_BINARY", - "Brightness": 0, - "Contrast": 0 - } - ] -} -``` diff --git a/parameters/parameter-organization-structure.md b/parameters/parameter-organization-structure.md deleted file mode 100644 index fc7f076..0000000 --- a/parameters/parameter-organization-structure.md +++ /dev/null @@ -1,122 +0,0 @@ ---- -layout: default-layout -title: Dynamsoft Document Normalizer Parameters under Dynamsoft Capture Vision -description: Introduce the parameters design of Dynamsoft Capture Vision related to Dynamsoft Document Normalizer. -keywords: Parameter, Parameter Template, Parameter Template File, Dynamsoft Document Normalizer -needAutoGenerateSidebar: true -noTitleIndex: true -needGenerateH3Content: true ---- - -# Overview of Dynamsoft Capture Vision parameters Related to Dynamsoft Document Normalizer - -Starting in version 2.0, Dynamsoft Document Normalizer is restructured under Dynamsoft Capture Vision Framework. - -Dynamsoft Capture Vision (DCV) is designed for high scalability and flexibility, and its parameter system plays a crucial role in achieving this goal. The parameter system is highly configurable and can drive different behavior logic within the SDK. In this article, we will provide an overview of the parametric architecture design regarding the use of Dynamsoft Document Normalizer in the Dynamsoft Capture Vision framework. - -## Key Terms - -In order to eliminate ambiguity, we first define several key terms. - -1. **Parameter** - A parameter is designed to represent a particular aspect of the behavior of the SDK, and each parameter has its own name. For instance, the `ExpectedBarcodeCount` parameter is used to control the expected count of recognized barcodes. Parameters can be configured with specific values or ranges of values, which can be adjusted as required. - -2. **Parameter template** - A parameter template is a collection of parameters organized in a structured manner, expressed in JSON format. The name of the `CaptureVisionTemplate` object is also called "template name", which is a unique identifier assigned to each parameter template. In the DCV SDK, this name is used to load the relevant configurations and control runtime behavior. - -3. **Parameter template file** - A parameter template file is a JSON file that contains one or multiple parameter templates. - -## Organization of a Parameter Template File - -As shown in the example below, the organizational structure of a parameter template file consists of several top-level objects such as `CaptureVisionTemplates`, `ImageSourceOptions`,`TargetROIDefOptions` etc. - -```json -{ - "CaptureVisionTemplates": [ - { - "Name" : "CV_0", - "ImageSourceName": "ISA_0", - "ImageROIProcessingNameArray": ["TA_0" ], - "SemanticProcessingNameArray": ["SP_0"] - } - ], - "ImageSourceOptions": [ - { - "Name": "ISA_0" - } - ], - "TargetROIDefOptions" : [ - { - "Name" : "TA_0", - "TaskSettingNameArray": [ "LR_0", "BR_0", "DN_0" ] - } - ], - "ImageParameterOptions": [ - { - "Name": "IP_0" - } - ], - "DocumentNormalizerTaskSettingOptions": [ - { - "Name" : "DN_0" - } - ], - "GlobalParameter":{ - "MaxTotalImageDimension":0 - } -} -``` - -With the exception of GlobalParameter, all top-level objects in the parameter template file are arrays of the corresponding object. For example,`CaptureVisionTemplates` are an array of `CaptureVisionTemplate` objects, and `TargetROIDefOptions` are an array of `TargetROIDef` objects. - -Furthermore, to reuse the same parameter definitions, reduce the size of the parameter template file, and simplify the parameter configuration hierarchy, the reference relationship was adopted in the parameter template file design. For example, the value of the `ImageSource` parameter for the first object in `CaptureVisionTemplates` is `ISA_0`, which refers to the first object in `ImageSourceOptions`. - -Therefore, a parameter template starts with an object in `CaptureVisionTemplates` and recursively searches for the objects that are directly or indirectly referenced by it, and then combines them to form a specific set of parameters. Then, the parameter template may be applied to DCV through "template name" to control its internal execution logic. - -Next, we will focus on introducing some main objects and their relationships in a parameter template. - -## Structure of a Parameter Template - -The following table list the main objects type and description of a complete parameter template when using only Dynamsoft Document Normalizer: - -| Object Type | Description | -| :---------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| CaptureVisionTemplate | This is the entry object of a parameter template in DCV. The `Name` parameter represents the name of the parameter template, which serves as its unique identifier. | -| ImageSource | It defines the input for DCV, responsible for providing images to DCV. It can be defined as different image sources, including but not limited to image directories, scanners, cameras, etc. | -| TargetROIDef | It is used to specify one or more recognition tasks to be performed on some regions of interest (ROIs) within an image. | -| DocumentNormalizerTaskSetting | It is used to configure the document detection or normalization process of an image in DCV. | -| ImageParameter | It provides various image-processing features to adjust and enhance the input image for better recognition results. | - -For more details, please refer to [introduction of the capture vision template]({{ site.dcv_parameters }}file/capture-vision-template.html) - -## How to Apply DCV Parameters - -Dynamsoft Capture Vision (DCV) provides two methods to apply parameters: - -- `SimplifiedCaptureVisionSettings`: It is a structure that contains commonly used DCV parameters. To update DCV parameters using `SimplifiedCaptureVisionSettings`, you can follow these steps: - - 1. Call the `GetSimplifiedSettings` API to get the `SimplifiedCaptureVisionSettings` object named `dcv_settings` associated with the Dynamsoft Capture Vision Router instance. - 2. Modify the attributes of `dcv_settings`. - 3. Call the `UpdateSettings` API to apply the modified `dcv_settings`. - -- `JSON parameter template file/string` - It supports all DCV parameters. The related parameter setting APIs are: - - 1. `InitSettings/InitSettingsFromFile` - after calling this interface, each parameter template in the file/string will be converted into a single parameter template object. They will replace the previously associated parameter template objects on the Capture Vision Router instance. - - 2. `ResetSettings` - after calling this API, the internal associated parameter template objects are reset to the factory state. - -## Special Rules for DCV Parameter Configuration - -In this section, we will discuss some special rules for configuring the DCV parameter templates. Understanding these rules will help you efficiently configure a simple and user-friendly parameter template. - -### Default Value of Parameters - -Generally, the DCV parameter templates have been designed with many common scenarios in mind, so the default values of many parameters do not need to be modified. When configuring a custom template, you only need to configure required parameters and fine-tuning parameters related to business scenarios. Other optional parameters are automatically filled with default values. This simplifies your configuration and makes your templates easier to read. - -### Inherited Parameters - -Sometimes, we need to configure multiple templates to adapt to different scenarios, but only a few parameter values differ between each template. DCV provides a parameter configuration inheritance mechanism that further reduces the amount of configuration work. -For example, when configuring `IP_A` and `IP_B` objects in `ImageParameterOptions`, you can define a `BaseImageParameterName` parameter in the `IP_B` object with a value of `IP_A`. Then `IP_B` object will inherit all the parameter definitions of `IP_A`, and if `IP_B` defines a parameter with the same name but a different value, that parameter will adopt the value of `IP_B`. - -This allows you to create a new parameter template that inherits most of its configuration from an existing template, reducing the amount of repetitive configuration work needed. diff --git a/parameters/reference/assets/margin.png b/parameters/reference/assets/margin.png deleted file mode 100644 index 06aa3fd71e328bb1ae5ea0a2f8b75aa6f48cac24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 207054 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%0AP)zukfIc`jK{6HH$DQ>6C7laW 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%0A)JP{+gGv*iLt9!O=u$B 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 - -## Setting Methods - -### As JSON Parameter - -`LineExtractionModes` as a JSON parameter is a JSON Object array defined as below. - -| Parent Json Object | Key Name | Key Value | -| ------------------ | ------------------- | ---------- | -| ImageParameter | LineExtractionModes | A JSON Object array while each Object is defined as below | - -| Key Name | Key Value | Description | -| -------- | --------- | ----------- | -| Mode | Any one in Candidate Mode List as string | (Required) Specifies a mode for line extraction. | - -**Default Value** - -```json -{ - "LineExtractionModes": [ - { - "Mode": "LEM_GENERAL" - } - ] -} -``` - -**JSON Parameter Example** - -```json -{ - "LineExtractionModes": [ - { - "Mode": "LEM_GENERAL" - }, - { - "Mode": "LEM_MARGIN_BASED" - } - ] -} -``` diff --git a/parameters/reference/max-thread-count.md b/parameters/reference/max-thread-count.md deleted file mode 100644 index 830c697..0000000 --- a/parameters/reference/max-thread-count.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: default-layout -title: MaxThreadCount -keywords: MaxThreadCount, parameters, reference, documentation -description: Dynamsoft Document Normalizer Parameter Reference - MaxThreadCount ---- - -# MaxThreadCount - -`MaxThreadCount` specifies the number of threads the image processing algorithm will use. - -## Setting Methods - -### As JSON Parameter - -`MaxThreadCount` as a JSON parameter is a number value defined as below. - -| Parent Json Object | Key Name | Key Value Type | Key Value Range | Key Default Value | -| ------------------ | -------- | -------------- | ----------- | ------------- | -| ImageParameter | MaxThreadCount | *int* | [1, 4] | 4 | - -**Example** - -```json -{ - "MaxThreadCount": 1 -} -``` diff --git a/parameters/reference/max-total-image-dimension.md b/parameters/reference/max-total-image-dimension.md deleted file mode 100644 index 0a9c078..0000000 --- a/parameters/reference/max-total-image-dimension.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: default-layout -title: MaxTotalImageDimension -keywords: MaxTotalImageDimension, parameters, reference, documentation -description: Dynamsoft Document Normalizer Parameter Reference - MaxTotalImageDimension ---- - -# MaxTotalImageDimension - -`MaxTotalImageDimension` specifies the maximum value of the total dimension area (in millions of pixels) of the source images the library can process concurrently. For example, if the library is processing 10 images concurrently, and each image has dimensions of 1920x1080. Then the total area of all the images is (1920 * 1080 * 10 = 20,736,000 pixels). So if the MaxTotalImageDimension is set to a value of 20 (which would equate to 20 million pixels) then you can process only 9 of those images at a time. - -## Setting Methods - -### As JSON Parameter - -`MaxTotalImageDimension` as a JSON parameter is a number value defined as below. - -| Parent Json Object | Key Name | Key Value Type | Key Value Range | Key Default Value | -| ------------------ | -------- | -------------- | --------------- | ----------------- | -| GlobalParameter | MaxTotalImageDimension | *int* | [0, 0x7fffffff] | 0 | - -**Remarks** - -- 0: no limitation on the total image dimension. - -**Example** - -```json -{ - "MaxTotalImageDimension": 0 -} -``` diff --git a/parameters/reference/page-size.md b/parameters/reference/page-size.md deleted file mode 100644 index a7913fc..0000000 --- a/parameters/reference/page-size.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: default-layout -title: PageSize -keywords: PageSize, parameters, reference, documentation -description: Dynamsoft Document Normalizer Parameter Reference - PageSize ---- - -# PageSize - -Sets the page size (width by height in pixels) of the normalized image. - -## Setting Methods - -### As Json Parameter - -`PageSize` as a JSON parameter is a string value defined as below. - -| Parent Json Object | Key Name | Key Value Type | Key Value Range | Key Default Value | -| ------------------ | -------- | -------------- | ----------- | ------------- | -| NormalizerParameter | PageSize | *int array* | A value representing the page size defined as bellow | [-1, -1] | - -**Remarks** - -- A page size is defined as: [`TargetPageWidth`, `TargetPageHeight`] -- Allowed value range of `TargetPageWidth` and `TargetPageHeight`: [-1, 0x7fffffff] -- TargetPageWidth * TargetPageHeight < 100000000 -- If any of `TargetPageWidth` and `TargetPageHeight` is 0 or -1, the original width and height of the detected content will be used. - -**Example** - -```json -{ - "PageSize": [210, 297] -} -``` diff --git a/parameters/reference/quadrilateral-detection-modes.md b/parameters/reference/quadrilateral-detection-modes.md deleted file mode 100644 index 84d8a4e..0000000 --- a/parameters/reference/quadrilateral-detection-modes.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: default-layout -title: QuadrilateralDetectionModes -keywords: QuadrilateralDetectionModes, parameters, reference, documentation -description: Dynamsoft Document Normalizer Parameter Reference - QuadrilateralDetectionModes ---- - -# QuadrilateralDetectionModes - -`QuadrilateralDetectionModes` controls the quadrilateral detection process on an image. It currently includes only one mode. - -## Candidate Mode List - -- QDM_GENERAL - -### QDM_GENERAL - -Detects quadrilateral(s) using the general algorithm. - -## Setting Methods - -### As JSON Parameter - -`QuadrilateralDetectionModes` as a JSON parameter is a JSON Object array defined as below. - -| Parent Json Object | Key Name | Key Value | -| ------------------ | ------------------- | ---------- | -| NormalizerParameter | QuadrilateralDetectionModes | A JSON Object array while each Object is defined as below | - -| Key Name | Key Value | Description | -| -------- | --------- | ----------- | -| Mode | Any one in Candidate Mode List as string | (Required) Specifies a mode for quadrilateral detection. | - -**JSON Parameter Example** - -```json -{ - "QuadrilateralDetectionModes": [ - { - "Mode": "QDM_GENERAL" - } - ] -} -``` diff --git a/parameters/reference/region-predetection-modes.md b/parameters/reference/region-predetection-modes.md deleted file mode 100644 index d84a4fc..0000000 --- a/parameters/reference/region-predetection-modes.md +++ /dev/null @@ -1,348 +0,0 @@ ---- -layout: default-layout -title: RegionPredetectionModes -keywords: RegionPredetectionModes, parameters, reference, documentation -description: Dynamsoft Document Normalizer Parameter Reference - RegionPredetectionModes ---- - -# RegionPredetectionModes - -`RegionPredetectionModes` controls how to find a region of interest (ROI) within the image or frame. It consists of one or more modes, each mode representing a different way to find a region of interest. - -## Candidate Mode List - -- RPM_AUTO -- RPM_GENERAL -- RPM_GENERAL_RGB_CONTRAST -- RPM_GENERAL_GRAY_CONTRAST -- RPM_GENERAL_HSV_CONTRAST -- RPM_MANUAL_SPECIFICATION - -### RPM_AUTO - -Lets the library automatically choose an algorithm to detect the region of interest(s). - -### RPM_GENERAL - -Takes the whole image as a region of interest. - -### RPM_GENERAL_RGB_CONTRAST - -Detects the ROI using the general algorithm based on RGB colour contrast. This mode has the following arguments for further customization. - -- [ImageParameterName](#imageparametername) -- [MinImageDimension](#minimagedimension) -- [RelativeRegions](#relativeregions) -- [Sensitivity](#sensitivity) -- [SpatialIndexBlockSize](#spatialindexblocksize) - -### RPM_GENERAL_GRAY_CONTRAST - -Detects the ROI using the general algorithm based on gray contrast. This mode has the following arguments for further customization. - -- [ImageParameterName](#imageparametername) -- [MinImageDimension](#minimagedimension) -- [RelativeRegions](#relativeregions) -- [Sensitivity](#sensitivity) -- [SpatialIndexBlockSize](#spatialindexblocksize) - -### RPM_GENERAL_HSV_CONTRAST - -Detects the ROI using the general algorithm based on HSV colour contrast. This mode has the following arguments for further customization. - -- [AspectRatioRange](#aspectratiorange ) -- [FindAccurateBoundary](#findaccurateboundary) -- [ForeAndBackgroundColours](#foreandbackgroundcolours) -- [HeightRange](#heightrange) -- [ImageParameterName](#imageparametername) -- [MinImageDimension](#minimagedimension) -- [RelativeRegions](#relativeregions) -- [Sensitivity](#sensitivity) -- [SpatialIndexBlockSize](#spatialindexblocksize) -- [WidthRange](#widthrange) - -### RPM_MANUAL_SPECIFICATION - -Defines the ROI directly by specifying the region coordinates. This mode has the following arguments for further customizing. - -- [FirstPoint](#firstpoint) -- [FourthPoint](#fourthpoint) -- [ImageParameterName](#imageparametername) -- [MeasuredByPercentage](#measuredbypercentage) -- [RelativeRegions](#relativeregions) -- [SecondPoint](#secondpoint) -- [ThirdPoint](#thirdpoint) - -## Setting Methods - -### As JSON Parameter - -`RegionPredetectionModes` as a JSON parameter is a JSON Object array defined as below. - -| Parent Json Object | Key Name | Key Value | -| ------------------ | ------------------- | ---------- | -| ImageParameter | RegionPredetectionModes | A JSON Object array while each Object is defined as below | - -| Key Name | Key Value | Description | -| -------- | --------- | ----------- | -| Mode | Any one in Candidate Mode List as string | (Required) Specifies a mode to find a region. | -| AspectRatioRange | A string from value range of AspectRatioRange | (Optional) Sets the Argument [AspectRatioRange](#aspectratiorange). | -| FindAccurateBoundary | A number from value range of FindAccurateBoundary | (Optional) Sets the Argument [FindAccurateBoundary](#findaccurateboundary). | -| ForeAndBackgroundColours | A string from value range of ForeAndBackgroundColours | (Optional) Sets the Argument [ForeAndBackgroundColours](#foreandbackgroundcolours). | -| HeightRange | A string from value range of HeightRange | (Optional) Sets the Argument [HeightRange](#heightrange). | -| ImageParameterName | A string from value range of ImageParameterName | (Optional) Sets the Argument [ImageParameterName](#imageparametername). | -| MinImageDimension | A number from value range of MinImageDimension | (Optional) Sets the Argument [MinImageDimension](#minimagedimension). | -| RelativeRegions | A string from value range of RelativeRegions | (Optional) Sets the Argument [RelativeRegions](#relativeregions). | -| Sensitivity | A number from value range of Sensitivity | (Optional) Sets the Argument [Sensitivity](#sensitivity). | -| SpatialIndexBlockSize | A number from value range of SpatialIndexBlockSize | (Optional) Sets the Argument [SpatialIndexBlockSize](#spatialindexblocksize). | -| WidthRange | A string from value range of WidthRange | (Optional) Sets the Argument [WidthRange](#widthrange). | - -**Default Value** - -```json -{ - "RegionPredetectionModes":[ - { - "Mode": "RPM_GENERAL" - } - ] -} -``` - -**JSON Parameter Example** - -```json -{ - "RegionPredetectionModes": [ - { - "Mode": "RPM_GENERAL_RGB_CONTRAST", - "Sensitivity": 5 - }, - { - "Mode": "RPM_GENERAL_HSV_CONTRAST", - "WidthRange": "[100, 200]" - } - ] -} -``` - -## Candidate Argument List - -- [AspectRatioRange](#aspectratiorange ) -- [FindAccurateBoundary](#findaccurateboundary) -- [FirstPoint](#firstpoint) -- [ForeAndBackgroundColours](#foreandbackgroundcolours) -- [FourthPoint](#fourthpoint) -- [HeightRange](#heightrange) -- [ImageParameterName](#imageparametername) -- [MeasuredByPercentage](#measuredbypercentage) -- [MinImageDimension](#minimagedimension) -- [RelativeRegions](#relativeregions) -- [SecondPoint](#secondpoint) -- [Sensitivity](#sensitivity) -- [SpatialIndexBlockSize](#spatialindexblocksize) -- [ThirdPoint](#thirdpoint) -- [WidthRange](#widthrange) - -### AspectRatioRange - -Specifies a set (or multiple sets) of aspect ratio range for filtering the predetected region. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *string* | A string value representing aspect ratio range sets. | "" | RPM_GENERAL_HSV_CONTRAST | - -**Remarks** - -- A set of aspect ratio range is defined as [`MinAspectRatio`, `MaxAspectRatio`]. -- Using a "";"" to separate multiple sets. -- Value range of `MinAspectRatio`, `MaxAspectRatio`: [1,10000] -- Aspect ratio equals to *height/width\*100*, while the height and width is from the bounding rectangle of the predetected region. - -### FindAccurateBoundary - -Sets whether to enable finding accurate boundary. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *int* | [0, 1] | 0 | `RPM_GENERAL_HSV_CONTRAST` | - -**Remarks** - -- 0: disable. -- 1: enable. - -### FirstPoint - -Sets the first point of the region, which is usually the top-left corner. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *int array* | A value representing a point | [0, 0] | RPM_MANUAL_SPECIFICATION | - -**Remarks** - -- A point is defined as [`x-coordinate`, `y-coordinate`]. -- When [MeasuredByPercentage](#measuredbypercentage) = 0, the valid value range for `x-coordinate` and `y-coordinate` is [0, 0x7fffffff]. -- When [MeasuredByPercentage](#measuredbypercentage) = 1, the valid value range for `x-coordinate` and `y-coordinate` is [0, 100]. - -### ForeAndBackgroundColours - -Specifies a set (or multiple sets) of the foreground and background colours used for region predetection algorithm. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *string* | A string value representing one or more colour sets. | "" | RPM_GENERAL_HSV_CONTRAST | - -**Remarks** - -- This argument is **mandatory** for RPM_GENERAL_HSV_CONTRAST mode. If there is no manual setting, no region can be detected. -- A set of the foreground and background colours is defined as [`ForegroundColour`, `BackgroundColour`, `Tolerance`]. -- Using a "";"" to separate multiple sets. -- `ForegroundColour`and `BackgroundColour` are the Hue values in the HSV colour space for defining the foreground and background colours of the regions you want to predetect. The value -1 means black, gray, white. -- `Tolerance` is the allowable deviation of the Hue value defined by `ForegroundColour`. -- Value range of `ForegroundColour`, `BackgroundColour`: [-1,360] -- Value range of `Tolerance`: [0, 360] - -### FourthPoint - -Sets the fourth point of the region, which is usually the top-left corner. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *int array* | A value representing a point | [0, 0] | RPM_MANUAL_SPECIFICATION | - -**Remarks** - -- A point is defined as [`x-coordinate`, `y-coordinate`]. -- When [MeasuredByPercentage](#measuredbypercentage) = 0, the valid value range for `x-coordinate` and `y-coordinate` is [0, 0x7fffffff]. -- When [MeasuredByPercentage](#measuredbypercentage) = 1, the valid value range for `x-coordinate` and `y-coordinate` is [0, 100]. - -### HeightRange - -Specifies a set (or multiple sets) of height range for filtering the predetected region. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *string* | A string value representing height range sets. | "" | RPM_GENERAL_HSV_CONTRAST | - -**Remarks** - -- A set of height is defined as [`MinHeight`, `MaxHeight`]. -- Using a "";"" to separate multiple sets. -- Value range of `MinHeight`, `MaxHeight`: [1, 0x7fffffff] -- The height value is the height of the bounding rectangle of the predetected region. - -### ImageParameterName - -Specifies the name of ImageParameter Object which defines the parameters used for predetected region results. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *string* | A string value representing the name of an ImageParameter Object. | "" | RPM_GENERAL_HSV_CONTRAST
    RPM_GENERAL_RGB_CONTRAST
    RPM_GENERAL_GRAY_CONTRAST
    RPM_MANUAL_SPECIFICATION | - -**Remarks** - -Definition of An [ImageParameter Object](../parameter-organization-structure.md#imageparameter-object). - -### MeasuredByPercentage - -Sets whether or not to use percentages to measure the coordinate. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *int* | [0, 1] | 1 | RPM_MANUAL_SPECIFICATION | - -### MinImageDimension - -Sets the minimum image dimension (in pixels) to enable region pre-detection. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *int* | [16384, 0x7fffffff] | 262144 | RPM_GENERAL_HSV_CONTRAST
    RPM_GENERAL_RGB_CONTRAST
    RPM_GENERAL_GRAY_CONTRAST | - -**Remarks** - -The library will enable the region pre-detection feature only when the image dimension is larger than the given value. - -### RelativeRegions - -Sets the regions relative to the predetected region. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *string* | A string value representing one or more regions. | "" | RPM_GENERAL_HSV_CONTRAST
    RPM_GENERAL_RGB_CONTRAST
    RPM_GENERAL_GRAY_CONTRAST
    RPM_MANUAL_SPECIFICATION | - -**Remarks** - -- Each region need to be defined as [`Left`, `Top`, `Right`, `Bottom`, `Index`]. If you want to define multiple regions, you can use a "";"" to separate them. -- `Left`, `Top`, `Right`, `Bottom` are four percentage values relative to top-left corner of the predetected region. -- `Index` means the index of a specific colour set in [`ForeAndBackgroundColours`](#foreandbackgroundcolours) which the current region is applied to. If the value of `index` is set to -1, the current region will be applied to all colour sets in [`ForeAndBackgroundColours`](#foreandbackgroundcolours). -- Value range of `Left`, `Top`, `Right`, `Bottom`: [-10000,10000] -- Value range of `Index`: [-1, 0x7fffffff] - -### SecondPoint - -Sets the second point of the region, which is usually the top-left corner. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *int array* | A value representing a point | [0, 0] | RPM_MANUAL_SPECIFICATION | - -**Remarks** - -- A point is defined as [`x-coordinate`, `y-coordinate`]. -- When [MeasuredByPercentage](#measuredbypercentage) = 0, the valid value range for `x-coordinate` and `y-coordinate` is [0, 0x7fffffff]. -- When [MeasuredByPercentage](#measuredbypercentage) = 1, the valid value range for `x-coordinate` and `y-coordinate` is [0, 100]. - -### Sensitivity - -Sets the sensitivity used for region predetection algorithm. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *int* | [1, 9] | 1 | RPM_GENERAL_HSV_CONTRAST
    RPM_GENERAL_RGB_CONTRAST
    RPM_GENERAL_GRAY_CONTRAST | - -**Remarks** - -A larger value means the library will take more effort to detect regions. - -### SpatialIndexBlockSize -Sets the spatial index block size used for region predetection algorithm. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *int* | [1, 32] | 5 | RPM_GENERAL_HSV_CONTRAST
    RPM_GENERAL_RGB_CONTRAST
    RPM_GENERAL_GRAY_CONTRAST | - -**Remarks** - -The block size used for region predetection would be 2 to the power of N. The allowed values of SpatialIndexBlockSize is the power number (N=1,2,3...). - -### ThirdPoint - -Sets the third point of the region, which is usually the top-left corner. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *int array* | A value representing a point | [0, 0] | RPM_MANUAL_SPECIFICATION | - -**Remarks** - -- A point is defined as [`x-coordinate`, `y-coordinate`]. -- When [MeasuredByPercentage](#measuredbypercentage) = 0, the valid value range for `x-coordinate` and `y-coordinate` is [0, 0x7fffffff]. -- When [MeasuredByPercentage](#measuredbypercentage) = 1, the valid value range for `x-coordinate` and `y-coordinate` is [0, 100]. - -### WidthRange - -Specifies a set (or multiple sets) of width range for filtering the predetected region. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *string* | A string value representing width range sets. | "" | RPM_GENERAL_HSV_CONTRAST | - -**Remarks** - -- A set of width is defined as [`MinWidth`, `MaxWidth`]. -- Using a "";"" to separate multiple sets. -- Value range of `MinWidth`, `MaxWidth`: [1, 0x7fffffff] -- The width value is the width of the bounding rectangle of the predetected region. diff --git a/parameters/reference/scale-down-threshold.md b/parameters/reference/scale-down-threshold.md deleted file mode 100644 index 6438504..0000000 --- a/parameters/reference/scale-down-threshold.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: default-layout -title: ScaleDownThreshold -keywords: ScaleDownThreshold, parameters, reference, documentation -description: Dynamsoft Document Normalizer Parameter Reference - ScaleDownThreshold ---- - -# ScaleDownThreshold - -`ScaleDownThreshold` controls the threshold used when shrinking an image. If the shorter edge size is larger than the given value, the library will calculate the required height and width of the image and shrink the image to that size. - -## Setting Methods - -### As JSON Parameter - -`ScaleDownThreshold` as a JSON parameter is a number value defined as below. - -| Parent Json Object | Key Name | Key Value Type | Key Value Range | Key Default Value | -| ------------------ | -------- | -------------- | ----------- | ------------- | -| ImageParameter | ScaleDownThreshold | *int* | [512, 0x7fffffff] | 2300 | - -**Example** - -```json -{ - "ScaleDownThreshold": 2300 -} -``` diff --git a/parameters/reference/text-filter-modes.md b/parameters/reference/text-filter-modes.md deleted file mode 100644 index 6ddc851..0000000 --- a/parameters/reference/text-filter-modes.md +++ /dev/null @@ -1,111 +0,0 @@ ---- -layout: default-layout -title: TextFilterModes -keywords: TextFilterModes, parameters, reference, documentation -description: Dynamsoft Document Normalizer Parameter Reference - TextFilterModes ---- - -# TextFilterModes - -`TextFilterModes` is used to control how to filter texts on an image. It currently consists of a single mode. - -## Candidate Mode List - -- TFM_GENERAL_CONTOUR - -### TFM_GENERAL_CONTOUR - -Filters text using the general algorithm based on contour. This mode has the following arguments for further customization. - -- [IfEraseTextZone](#iferasetextzone) -- [MinImageDimension](#minimagedimension) -- [Sensitivity](#sensitivity) - -## Setting Methods - -### As JSON Parameter - -`TextFilterModes` as a JSON parameter is a JSON Object array defined as below. - -| Parent Json Object | Key Name | Key Value | -| ------------------ | ------------------- | ---------- | -| ImageParameter | TextFilterModes | A JSON Object array while each Object is defined as below | - -| Key Name | Key Value | Description | -| -------- | --------- | ----------- | -| Mode | Any one in Candidate Mode List as string | (Required) Specifies a mode for text filtering. | -| IfEraseTextZone | A number from value range of IfEraseTextZone | (Optional) Sets the Argument [IfEraseTextZone](#iferasetextzone). | -| MinImageDimension | A number from value range of MinImageDimension | (Optional) Sets the Argument [MinImageDimension](#minimagedimension). | -| Sensitivity | A number from value range of Sensitivity | (Optional) Sets the Argument [Sensitivity](#sensitivity). | - -**Default Value** - -```json -{ - "TextFilterModes": [ - { - "Mode": "TFM_GENERAL_CONTOUR", - "IfEraseTextZone": 0, - "MinImageDimension": 65536, - "Sensitivity": 0 - } - ] -} -``` - -**JSON Parameter Example** - -```json -{ - "TextFilterModes": [ - { - "Mode": "TFM_GENERAL_CONTOUR", - "Sensitivity": 5 - } - ] -} -``` - -## Candidate Argument List - -- [IfEraseTextZone](#iferasetextzone) -- [MinImageDimension](#minimagedimension) -- [Sensitivity](#sensitivity) - -### IfEraseTextZone - -Sets whether to erase the detected text zone. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *int* | [0, 1] | 0 | TFM_GENERAL_CONTOUR | - -**Remarks** - -- 0: Do not erase the text zone. -- 1: Erase the text zone. - -### MinImageDimension - -Sets the minimum image dimension (in pixels) to enable text filtering. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *int* | [65536, 0x7fffffff] | 65536 | TFM_GENERAL_CONTOUR | - -**Remarks** - -The library will enable the region pre-detection feature only when the image dimension is larger than the given value. - -### Sensitivity - -Sets the sensitivity used for text filtering. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *int* | [0, 9] | 0 | TFM_GENERAL_CONTOUR | - -**Remarks** - -- 0: automatically set by the library. -- A larger value means the library will take more effort to filter text. diff --git a/parameters/reference/texture-detection-modes.md b/parameters/reference/texture-detection-modes.md deleted file mode 100644 index dcd9cf1..0000000 --- a/parameters/reference/texture-detection-modes.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -layout: default-layout -title: TextureDetectionModes -keywords: TextureDetectionModes, parameters, reference, documentation -description: Dynamsoft Document Normalizer Parameter Reference - TextureDetectionModes ---- - -# TextureDetectionModes - -`TextureDetectionModes` controls how to detect texture on an image. It currently only supports a single mode for texture detection. - -## Candidate Mode List - -- TDM_GENERAL_WIDTH_CONCENTRATION - -### TDM_GENERAL_WIDTH_CONCENTRATION - -Detects texture using the general algorithm. This mode has the following arguments for further customization. - -- [Sensitivity](#sensitivity) - -## Setting Methods - -### As JSON Parameter - -`TextureDetectionModes` as a JSON parameter is a JSON Object array defined as below. - -| Parent Json Object | Key Name | Key Value | -| ------------------ | ------------------- | ---------- | -| ImageParameter | TextureDetectionModes | A JSON Object array while each Object is defined as below | - -| Key Name | Key Value | Description | -| -------- | --------- | ----------- | -| Mode | Any one in Candidate Mode List as string | (Required) Specifies a mode for text filtering. | -| Sensitivity | A number from value range of Sensitivity | (Optional) Sets the Argument [Sensitivity](#sensitivity). | - -**Default Value** - -```json -{ - "TextureDetectionModes":[ - { - "Mode": "TDM_GENERAL_WIDTH_CONCENTRATION", - "Sensitivity": 5 - } - ] -} -``` - -**JSON Parameter Example** - -```json -{ - "TextureDetectionModes": [ - { - "Mode": "TDM_GENERAL_WIDTH_CONCENTRATION", - "Sensitivity": 1 - }, - { - "Mode": "TDM_GENERAL_WIDTH_CONCENTRATION", - "Sensitivity": 9 - } - ] -} -``` - -## Candidate Argument List - -- [Sensitivity](#sensitivity) - -### Sensitivity - -Sets the sensitivity used for texture detection. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *int* | [1, 9] | 5 | TDM_GENERAL_WIDTH_CONCENTRATION | - -**Remarks** - -A larger value means the library will take more effort to detect texture. diff --git a/parameters/reference/timeout.md b/parameters/reference/timeout.md deleted file mode 100644 index 2d51376..0000000 --- a/parameters/reference/timeout.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: default-layout -title: Timeout -keywords: Timeout, parameters, reference, documentation -description: Dynamsoft Document Normalizer Parameter Reference - Timeout ---- - -# Timeout - -`Timeout` determines the maximum amount of time (in milliseconds) that should be spent processing each image or frame. It does not include the time taken to load/decode an image (Tiff, PNG, etc) from disk into memory. - -## Setting Methods - -### As JSON Parameter - -`Timeout` as a JSON parameter is a number value defined as below. - -| Parent Json Object | Key Name | Key Value Type | Key Value Range | Key Default Value | -| ------------------ | -------- | -------------- | ----------- | ------------- | -| ImageParameter | Timeout | *int* | [0, 0x7fffffff] | 10000 | - -**Remarks** - -- 0: no limitation on the time cost. - -**Example** - -```json -{ - "Timeout": 500 -} -```

    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 IM6N<$f{oULhX4Qo diff --git a/parameters/reference/binarization-modes.md b/parameters/reference/binarization-modes.md deleted file mode 100644 index 0049d9e..0000000 --- a/parameters/reference/binarization-modes.md +++ /dev/null @@ -1,238 +0,0 @@ ---- -layout: default-layout -title: BinarizationModes -keywords: binarizationmodes, parameters, reference, documentation -description: Dynamsoft Document Normalizer Parameter Reference - BinarizationModes ---- - - -# BinarizationModes - -This parameter helps control the binarization process, which converts a grayscale image to a binary image, and potentially result in a higher quality binary image. During binarization, the threshold is the key criteria. If a pixel's value is smaller than the threshold, it is set to 0. Otherwise, the pixel value is set to the maximum value (255 in the library). By default, the library automatically calculates the adaptive size of the neighbourhood area and then binarizes the grayscale image with the adaptive threshold based on a small neighbourhood area with an adaptive size around it. - -It consists of one or more modes, each mode is a way to implement the binarization. - -## Candidate Mode List - -- BM_LOCAL_BLOCK -- BM_THRESHOLD - -### BM_LOCAL_BLOCK - -Binarizes the image for each pixel based on a threshold which is calculated based on a small region around said pixel. This mode has the following arguments for further customization: - -- [`BlockSizeX`](#blocksizex) -- [`BlockSizeY`](#blocksizey) -- [`EnableFillBinaryVacancy`](#enablefillbinaryvacancy) -- [`MorphOperation`](#morphoperation) -- [`MorphOperationKernelSizeX`](#morphoperationkernelsizex) -- [`MorphOperationKernelSizeY`](#morphoperationkernelsizey) -- [`MorphShape`](#morphshape) -- [`ThresholdCompensation`](#thresholdcompensation) - -### BM_THRESHOLD - -Binarizes the image for each pixel based on a unified threshold. If the gray value of the pixel is less than the threshold, it will be black in the binary image, otherwise it will be white. This mode has the following arguments for further customization: - -- [`BinarizationThreshold`](#binarizationthreshold) -- [`MorphOperation`](#morphoperation) -- [`MorphOperationKernelSizeX`](#morphoperationkernelsizex) -- [`MorphOperationKernelSizeY`](#morphoperationkernelsizey) -- [`MorphShape`](#morphshape) - -## Setting Methods - -### As Json Parameter - -`BinarizationModes` as a JSON parameter is a JSON Object array defined as below. - -| Parent Json Object | Key Name | Key Value | -| ------------------ | ------------------- | ---------- | -| ImageParameter | BinarizationModes | A JSON Object array while each Object is defined as below | - -| Key Name | Key Value | Description | -| -------- | --------- | ----------- | -| Mode | Any one in Candidate Mode List as string | (Required) Sets a binarization mode. | -| BinarizationThreshold | A number from value range of BinarizationThreshold | (Optional) Sets the Argument [BinarizationThreshold](#binarizationthreshold). | -| BlockSizeX | A number from value range of BlockSizeX | (Optional) Sets the Argument [BlockSizeX](#blocksizex). | -| BlockSizeY | A number from value range of BlockSizeY | (Optional) Sets the Argument [BlockSizeY](#blocksizey). | -| EnableFillBinaryVacancy | A number from value range of EnableFillBinaryVacancy | (Optional) Sets the Argument [EnableFillBinaryVacancy](#enablefillbinaryvacancy). | -| MorphOperation | A string from value range of MorphOperation | (Optional) Sets the Argument [MorphOperation](#morphoperation). | -| MorphOperationKernelSizeX | A number from value range of MorphOperationKernelSizeX | (Optional) Sets the Argument [MorphOperationKernelSizeX](#morphoperationkernelsizex). | -| MorphOperationKernelSizeY | A number from value range of MorphOperationKernelSizeY | (Optional) Sets the Argument [MorphOperationKernelSizeY](#morphoperationkernelsizey). | -| MorphShape | A number from value range of MorphShape | (Optional) Sets the Argument [MorphShape](#morphshape). | -| ThresholdCompensation | A number from value range of ThresholdCompensation | (Optional) Sets the Argument [ThresholdCompensation](#thresholdcompensation). | - -**Default Value** - -```json -{ - "BinarizationModes":[ - { - "Mode": "BM_LOCAL_BLOCK", - "BlockSizeX": 0, - "BlockSizeY": 0, - "EnableFillBinaryVacancy": 0, - "MorphOperation": "Close", - "MorphShape": "Rectangle", - "MorphOperationKernelSizeX": -1, - "MorphOperationKernelSizeY": -1, - "ThresholdCompensation": 10 - } - ] -} -``` - -**JSON Parameter Example** - -```json -{ - "BinarizationModes": [ - { - "Mode": "BM_LOCAL_BLOCK", - "BlockSizeX": 51, - "BlockSizeY": 51, - "EnableFillBinaryVacancy": 0 - }, - { - "Mode": "BM_THRESHOLD", - "BinarizationThreshold": 120, - "MorphOperation": "Close", - "MorphShape": "Rectangle", - "MorphOperationKernelSizeX": 3, - "MorphOperationKernelSizeY": 3 - } - ] -} -``` - -## Candidate Argument List - -- [`BinarizationThreshold`](#binarizationthreshold) -- [`BlockSizeX`](#blocksizex) -- [`BlockSizeY`](#blocksizey) -- [`EnableFillBinaryVacancy`](#enablefillbinaryvacancy) -- [`MorphOperation`](#morphoperation) -- [`MorphOperationKernelSizeX`](#morphoperationkernelsizex) -- [`MorphOperationKernelSizeY`](#morphoperationkernelsizey) -- [`MorphShape`](#morphshape) -- [`ThresholdCompensation`](#thresholdcompensation) - -### BinarizationThreshold - -Sets the binarization threshold. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *int* | [-1, 255] | -1 | BM_THRESHOLD | - -**Remarks** --1: The value will be set automatically by the SDK. - -### BlockSizeX - -Sets the horizontal block size for the binarization process. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *int* | [0, 1000] | 0 | BM_LOCAL_BLOCK | - -**Remarks** -Block size refers to the size of a pixel neighborhood used to calculate a threshold value for the pixel. - -- 0: the block size used for binarization will be set to a value which is calculated automatically. -- N: - - 1 <= N <= 3: the block size used for binarization will be set to 3. - - N > 3: the block size used for binarization will be set to N. - -### BlockSizeY - -Sets the vertical block size for the binarization process. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *int* | [0, 1000] | 0 | BM_LOCAL_BLOCK | - -**Remarks** -Block size refers to the size of a pixel neighborhood used to calculate a threshold value for the pixel. - -- 0: the block size used for binarization will be set to a value which is calculated automatically. -- N: - - 1 <= N <= 3: the block size used for binarization will be set to 3. - - N > 3: the block size used for binarization will be set to N. - -### EnableFillBinaryVacancy - -Sets whether to enable binary vacancy filling. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *int* | [0, 1] | 0 | BM_LOCAL_BLOCK | - -**Remarks** - -- 0: disable. -- 1: enable. - -### MorphOperation - -Sets the morph operation for the morphology process. - -| Value Type | Value Range | Default Value | -| ---------- | ----------- | ------------- | -| *string* | "Erode"
    "Dilate"
    "Open"
    "Close" | "Close" | - -**Remarks** - -- "Erode": Perform erosion process. -- "Dilate": Perform dilation process. -- "Open": Perform erosion first, then perform dilation. -- "Close": Perform dilation first, then perform erosion. - -For more information, please check out [Image Processing in OpenCV - Morphological Transformations](https://docs.opencv.org/master/d9/d61/tutorial_py_morphological_ops.html) for reference. - -### MorphOperationKernelSizeX - -Sets the horizontal kernel size for the morphology process. - -| Value Type | Value Range | Default Value | -| ---------- | ----------- | ------------- | -| *int* | [-1, 1000] | -1 | - -**Remarks** - -- 0: The value will be set automatically by the SDK. -- -1: Skip the morph operation. - -### MorphOperationKernelSizeY - - Sets the vertical kernel size for the morphology process. - -| Value Type | Value Range | Default Value | -| ---------- | ----------- | ------------- | -| *int* | [-1, 1000] | -1 | - -**Remarks** - -- 0: The value will be set automatically by the SDK. -- -1: Skip the morph operation. - -### MorphShape - - Sets the morph shape for the morphology process. - -| Value Type | Value Range | Default Value | -| ---------- | ----------- | ------------- | -| *string* | "Rectangle"
    "Cross"
    "Ellipse" | "Rectangle" | - -### ThresholdCompensation - -Constant subtracted from the mean or weighted mean used for calculating the threshold. Normally, it is positive but may be zero or negative as well. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *int* | [-255, 255] and -10000 | 10 | BM_LOCAL_BLOCK | - -**Remarks** - -- -10000: The library may try multiple values for current process. diff --git a/parameters/reference/brightness.md b/parameters/reference/brightness.md deleted file mode 100644 index 1549b63..0000000 --- a/parameters/reference/brightness.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: default-layout -title: Brightness -keywords: Brightness, parameters, reference, documentation -description: Dynamsoft Document Normalizer Parameter Reference - Brightness ---- - -# Brightness - -`Brightness` specifies the brightness of the normalized image. - -## Setting Methods - -### As Json Parameter - -`Brightness` as a JSON parameter is a number value defined as below. - -| Parent Json Object | Key Name | Key Value Type | Key Value Range | Key Default Value | -| ------------------ | -------- | -------------- | ----------- | ------------- | -| NormalizerParameter | Brightness | *int* | [-100, 100] | 0 | - -**Example** - -```json -{ - "Brightness": 50, -} -``` diff --git a/parameters/reference/colour-channel-usage-type.md b/parameters/reference/colour-channel-usage-type.md deleted file mode 100644 index 39c49e0..0000000 --- a/parameters/reference/colour-channel-usage-type.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: default-layout -title: ColourChannelUsageType -keywords: ColourChannelUsageType, parameters, reference, documentation -description: Dynamsoft Document Normalizer Parameter Reference - ColourChannelUsageType ---- - -# ColourChannelUsageType - -`ColourChannelUsageType` specifies how to use the colour channel from the source image buffer. - -## Setting Methods - -### As Json Parameter - -`ColourChannelUsageType` as a JSON parameter is a string value defined as below. - -| Parent Json Object | Key Name | Key Value Type | Key Value Range | Key Default Value | -| ------------------ | -------- | -------------- | ----------- | ------------- | -| ImageParameter | ColourChannelUsageType | *string* | "CCUT_AUTO"
    "CCUT_FULL_CHANNEL"
    "CCUT_NV21_Y_CHANNEL_ONLY"
    "CCUT_RGB_R_CHANNEL_ONLY"
    "CCUT_RGB_G_CHANNEL_ONLY"
    "CCUT_RGB_B_CHANNEL_ONLY" | "CCUT_AUTO" | - -**Example** - -```json -{ - "ColourChannelUsageType": "CCUT_NV21_Y_CHANNEL_ONLY", -} -``` diff --git a/parameters/reference/colour-conversion-modes.md b/parameters/reference/colour-conversion-modes.md deleted file mode 100644 index 2f59794..0000000 --- a/parameters/reference/colour-conversion-modes.md +++ /dev/null @@ -1,139 +0,0 @@ ---- -layout: default-layout -title: ColourConversionModes -keywords: ColourConversionModes, parameters, reference, documentation -description: Dynamsoft Document Normalizer Parameter Reference - ColourConversionModes ---- - -# ColourConversionModes - -This parameter helps control the process of colour conversion, i.e. converting a colour image to a grayscale image. If you input a colour image, the library will convert it to a grayscale image first for further processing. By default, the conversion will be based on the RGB channel with the default weights of each of the three channels. This parameter allows you to specify the referred colour channel (RGB or HSV) and the weight of each channel during the colour conversion. Assume your image has a very high contrast of one colour channel between the content area and background, you can use this parameter to put more weight on that specific colour channel to get a higher quality grayscale image. - -It consists of one or more modes, each mode represents a way to implement the convertion. - -## Candidate Mode List - -- CICM_GENERAL -- CICM_HSV - -### CICM_GENERAL - -Converts a colour image to a grayscale image using the general RGB conversion algorithm. This mode has the following arguments for further customization. - -- [BlueChannelWeight](#bluechannelweight) -- [GreenChannelWeight](#greenchannelweight) -- [RedChannelWeight](#redchannelweight) - -### CICM_HSV - -Converts a colour image to a grayscale image using one of the HSV channels. This mode has the following arguments for further customizing. - -- [ReferChannel](#referchannel) - -## Setting Methods - -### As JSON Parameter - -`ColourConversionModes` as a JSON parameter is a JSON Object array defined as below. - -| Parent Json Object | Key Name | Key Value | -| ------------------ | ------------------- | ---------- | -| ImageParameter | ColourConversionModes | A JSON Object array while each Object is defined as below | - -| Key Name | Key Value | Description | -| -------- | --------- | ----------- | -| Mode | Any one in Candidate Mode List as string | (Required) Specifies a mode for colour convertion. | -| BlueChannelWeight | A number from value range of BlueChannelWeight | (Optional) Sets the Argument [BlueChannelWeight](#bluechannelweight). | -| GreenChannelWeight | A number from value range of GreenChannelWeight | (Optional) Sets the Argument [GreenChannelWeight](#greenchannelweight). | -| RedChannelWeight | A number from value range of RedChannelWeight | (Optional) Sets the Argument [RedChannelWeight](#redchannelweight). | -| ReferChannel | A string from value range of ReferChannel | (Optional) Sets the Argument [ReferChannel](#referchannel). | - -**Default Value** - -```json -{ - "ColourConversionModes":[ - { - "Mode": "CICM_GENERAL", - "BlueChannelWeight": -1, - "GreenChannelWeight": -1, - "RedChannelWeight": -1 - } - ] -} -``` - -**JSON Parameter Example** - -```json -{ - "ColourConversionModes": [ - { - "Mode": "CICM_GENERAL", - "BlueChannelWeight": 1000, - "GreenChannelWeight": 0, - "RedChannelWeight": 0 - }, - { - "Mode": "CICM_GENERAL", - "BlueChannelWeight": 0, - "GreenChannelWeight": 500, - "RedChannelWeight": 500 - } - ] -} -``` - -## Candidate Argument List - -- [BlueChannelWeight](#bluechannelweight) -- [GreenChannelWeight](#greenchannelweight) -- [RedChannelWeight](#redchannelweight) -- [ReferChannel](#referchannel) - -### BlueChannelWeight - -Sets the weight value of Blue Colour Channel used for converting a colour image to a grayscale image. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *int* | [-1, 1000] | -1 | CICM_GENERAL | - -**Remarks** - -- -1: The weight value will be set automatically by the SDK. -- -1 will be used if the sum of BlueChannelWeight, GreenChannelWeight and RedChannelWeight is not 1000. - -### GreenChannelWeight - -Sets the weight value of Green Colour Channel used for converting a colour image to a grayscale image. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *int* | [-1, 1000] | -1 | CICM_GENERAL | - -**Remarks** - -- -1: The weight value will be set automatically by the SDK. -- -1 will be used if the sum of BlueChannelWeight, GreenChannelWeight and RedChannelWeight is not 1000. - -### RedChannelWeight - -Sets the weight value of Red Colour Channel used for converting a colour image to a grayscale image. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *int* | [-1, 1000] | -1 | CICM_GENERAL | - -**Remarks** - -- -1: The weight value will be set automatically by the SDK. -- -1 will be used if the sum of BlueChannelWeight, GreenChannelWeight and RedChannelWeight is not 1000. - -### ReferChannel - -Sets reference channel used for converting a colour image to a grayscale image by HSV algorithm. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *string* | "H_CHANNEL"
    "S_CHANNEL"
    "V_CHANNEL" | "H_CHANNEL" | CICM_HSV | diff --git a/parameters/reference/colour-mode.md b/parameters/reference/colour-mode.md deleted file mode 100644 index 01ac991..0000000 --- a/parameters/reference/colour-mode.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: default-layout -title: ColourMode -keywords: ColourMode, parameters, reference, documentation -description: Dynamsoft Document Normalizer Parameter Reference - ColourMode ---- - -# ColourMode - -`ColourMode` specifies the colour mode (pixel type) of the normalized image. By default, the SDK produces normalized binary images, but you can choose to produce grayscale or colour normalized images. - -## Setting Methods - -### As Json Parameter - -`ColourMode` as a JSON parameter is a string value defined as below. - -| Parent Json Object | Key Name | Key Value Type | Key Value Range | Key Default Value | -| ------------------ | -------- | -------------- | ----------- | ------------- | -| NormalizerParameter | ColourMode | *string* | "ICM_BINARY"
    "ICM_GRAYSCALE"
    "ICM_COLOUR" | "ICM_BINARY" | - -**Example** - -```json -{ - "ColourMode": "ICM_COLOUR", -} -``` diff --git a/parameters/reference/content-type.md b/parameters/reference/content-type.md deleted file mode 100644 index e855f52..0000000 --- a/parameters/reference/content-type.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: default-layout -title: ContentType -keywords: ContentType, parameters, reference, documentation -description: Dynamsoft Document Normalizer Parameter Reference - ContentType ---- - -# ContentType - -`ContentType` specifies the target content type to be normalized. Currently, DDN supports normalizing documents or table structures. - -## Setting Methods - -### As Json Parameter - -`ContentType` as a JSON parameter is a string value defined as below. - -| Parent Json Object | Key Name | Key Value Type | Key Value Range | Key Default Value | -| ------------------ | -------- | -------------- | ----------- | ------------- | -| NormalizerParameter | ContentType | *string* | "CT_DOCUMENT"
    "CT_TABLE"
    "CT_UNKNOWN" | "CT_DOCUMENT" | - -**Example** - -```json -{ - "ContentType": "CT_TABLE", -} -``` diff --git a/parameters/reference/contrast.md b/parameters/reference/contrast.md deleted file mode 100644 index 6a0c2bc..0000000 --- a/parameters/reference/contrast.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: default-layout -title: Contrast -keywords: Contrast, parameters, reference, documentation -description: Dynamsoft Document Normalizer Parameter Reference - Contrast ---- - -# Contrast - -`Contrast` specifies the contrast of the normalized image. - -## Setting Methods - -### As Json Parameter - -`Contrast` as a JSON parameter is a number value defined as below. - -| Parent Json Object | Key Name | Key Value Type | Key Value Range | Key Default Value | -| ------------------ | -------- | -------------- | ----------- | ------------- | -| NormalizerParameter | Contrast | *int* | [-100, 100] | 0 | - -**Example** - -```json -{ - "Contrast": 50, -} -``` diff --git a/parameters/reference/deskew-mode.md b/parameters/reference/deskew-mode.md deleted file mode 100644 index f1f6df9..0000000 --- a/parameters/reference/deskew-mode.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -layout: default-layout -title: DeskewMode -keywords: DeskewMode, parameters, reference, documentation -description: Dynamsoft Document Normalizer Parameter Reference - DeskewMode ---- - -# DeskewMode - -`DeskewMode` specifies the method in which the deskew process way used to apply the deskew process on the target normalized image. It consisits one of one following candidate modes, each mode represents an implement. - -## Candidate Mode List - -- DM_PERSPECTIVE_CORRECTION - -### DM_PERSPECTIVE_CORRECTION - -Deskew the document by applying perspective correction process. This mode has the following arguments for further customizing. - -- [ContentDirection](#contentdirection) - -## Setting Methods - -### As JSON Parameter - -`DeskewMode` as a JSON parameter is a JSON Object defined as below. - -| Parent Json Object | Key Name | Key Value | -| ------------------ | ------------------- | ---------- | -| ImageParameter | DeskewMode | A JSON Object defined as below | - -| Key Name | Key Value | Description | -| -------- | --------- | ----------- | -| Mode | Any one in Candidate Mode List as string | (Required) Specifies a mode for deskewing. | -| ContentDirection | A number from value range of ContentDirection | (Optional) Sets the Argument [ContentDirection](#contentdirection). | - -**JSON Parameter Example** - -```json -{ - "DeskewMode": { - "Mode": "DM_PERSPECTIVE_CORRECTION", - "ContentDirection": 0 - } -} -``` - -## Candidate Argument List - -- [ContentDirection](#contentdirection) - -### ContentDirection - -Sets the direction of the document to be normalized. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *int* | [0, 2] | 0 | DM_PERSPECTIVE_CORRECTION | - -**Remarks** - -- 0: Direction unknown. -- 1: Vertical direction. -- 2: Horizontal direction. diff --git a/parameters/reference/grayscale-enhancement-modes.md b/parameters/reference/grayscale-enhancement-modes.md deleted file mode 100644 index afa8dbf..0000000 --- a/parameters/reference/grayscale-enhancement-modes.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -layout: default-layout -title: GrayscaleEnhancementModes -keywords: GrayscaleEnhancementModes, parameters, reference, documentation -description: Dynamsoft Document Normalizer Parameter Reference - GrayscaleEnhancementModes ---- - -# GrayscaleEnhancementModes - -This parameter provides some image processing methods to enhance the quality of the grayscale image. By default, the library does no image preprocessing. Assume your image has distorted features that can be solved by common image processing methods, this parameter can help you get a higher quality grayscale image by shifting the order of the preprocessing algorithms used (if at all). - -It consists of one or more of the following modes, each mode representing a different preprocessing algorithm. - -## Candidate Mode List - -- GEM_GENERAL -- GEM_GRAY_EQUALIZE -- GEM_GRAY_SMOOTH -- GEM_SHARPEN_SMOOTH - -### GEM_GENERAL - -Takes the un-preprocessed grayscale image for the next stage of operations. - -### GEM_GRAY_EQUALIZE - -Preprocesses the grayscale image using the gray equalization algorithm. This mode can be used for images with low contrast between content and background colour. This mode has the following arguments for further customization. - -- [Sensitivity](#sensitivity) - -### GEM_GRAY_SMOOTH - -Preprocesses the grayscale image using the gray smoothing algorithm. This mode can be used for for images with noise or texture. This mode has the following arguments for further customization. - -- [SmoothBlockSizeX](#smoothblocksizex) -- [SmoothBlockSizeY](#smoothblocksizey) - -### GEM_SHARPEN_SMOOTH - -Preprocesses the grayscale image using the sharpening and smoothing algorithm. This mode can be used for blurry images. This mode has the following arguments for further customizing. - -- [SmoothBlockSizeX](#smoothblocksizex) -- [SmoothBlockSizeY](#smoothblocksizey) -- [SharpenBlockSizeX](#sharpenblocksizex) -- [SharpenBlockSizeY](#sharpenblocksizey) - -## Setting Methods - -### As JSON Parameter - -`GrayscaleEnhancementModes` as a JSON parameter is a JSON Object array defined as below. - -| Parent Json Object | Key Name | Key Value | -| ------------------ | ------------------- | ---------- | -| ImageParameter | GrayscaleEnhancementModes | A JSON Object array while each Object is defined as below | - -| Key Name | Key Value | Description | -| -------- | --------- | ----------- | -| Mode | Any one in Candidate Mode List as string | (Required) Sets a preprocessing mode. | -| Sensitivity | A number from value range of Sensitivity | (Optional) Sets the Argument [Sensitivity](#sensitivity). | -| SmoothBlockSizeX | A number from value range of SmoothBlockSizeX | (Optional) Sets the Argument [SmoothBlockSizeX](#smoothblocksizex). | -| SmoothBlockSizeY | A number from value range of SmoothBlockSizeY | (Optional) Sets the Argument [SmoothBlockSizeY](#smoothblocksizey). | -| SharpenBlockSizeX | A number from value range of SharpenBlockSizeX | (Optional) Sets the Argument [SmoothBlockSizeX](#sharpenblocksizex). | -| SharpenBlockSizeY | A number from value range of SharpenBlockSizeY | (Optional) Sets the Argument [SmoothBlockSizeY](#sharpenblocksizey). | - -**Default Value** - -```json -{ - "GrayscaleEnhancementModes": [ - { - "Mode": "GEM_GENERAL" - } - ] -} -``` - -**JSON Parameter Example** - -```json -{ - "GrayscaleEnhancementModes": [ - { - "Mode": "GEM_GRAY_SMOOTH", - "SmoothBlockSizeX": 5, - "SmoothBlockSizeY": 5 - }, - { - "Mode": "GEM_GRAY_EQUALIZE", - "Sensitivity": 1 - } - ] -} -``` - -## Candidate Argument List - -- [Sensitivity](#sensitivity) -- [SmoothBlockSizeX](#smoothblocksizex) -- [SmoothBlockSizeY](#smoothblocksizey) -- [SharpenBlockSizeX](#sharpenblocksizex) -- [SharpenBlockSizeY](#sharpenblocksizey) - -### Sensitivity - -Sets the sensitivity to perform the equalization process. A larger value means a higher possibility that gray equalization will be activated. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *int* | [1, 9] | 5 | GEM_GRAY_EQUALIZE | - -### SmoothBlockSizeX - -Sets the horizontal block size(neighborhood pixel counts) for the smoothing process. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *int* | [3, 1000] | 3 | GEM_GRAY_SMOOTH
    GEM_SHARPEN_SMOOTH | - -### SmoothBlockSizeY - -Sets the vertical block size(neighborhood pixel counts) for the smoothing process. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *int* | [3, 1000] | 3 | GEM_GRAY_SMOOTH
    GEM_SHARPEN_SMOOT | - -### SharpenBlockSizeX - -Sets the horizontal block size(neighborhood pixel counts) for the sharpening process. - -| Value Type | Value Range | Default Value | -| ---------- | ----------- | ------------- | -| *int* | [3, 1000] | 3 | GEM_SHARPEN_SMOOTH | - -### SharpenBlockSizeY - -Sets the vertical block size(neighborhood pixel counts) for the sharpening process. - -| Value Type | Value Range | Default Value | Valid For | -| ---------- | ----------- | ------------- | --------- | -| *int* | [3, 1000] | 3 | GEM_SHARPEN_SMOOTH | diff --git a/parameters/reference/grayscale-transformation-modes.md b/parameters/reference/grayscale-transformation-modes.md deleted file mode 100644 index 0d59731..0000000 --- a/parameters/reference/grayscale-transformation-modes.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: default-layout -title: GrayscaleTransformationModes -keywords: GrayscaleTransformationModes, parameters, reference, documentation -description: Dynamsoft Document Normalizer Parameter Reference - GrayscaleTransformationModes ---- - -# GrayscaleTransformationModes - -`GrayscaleTransformationModes` helps control the colour mode of the grayscale image. - -It consists of one or more of the following modes, each mode representing a way to transform the grayscale image. - -## Candidate Mode List - -- GTM_ORIGINAL -- GTM_INVERTED -- GTM_AUTO - -### GTM_ORIGINAL - -Keeps the original grayscale. - -### GTM_INVERTED - -Transforms the image to inverted grayscale. - -### GTM_AUTO - -Let the library choose an algorithm automatically for grayscale transformation. - -## Setting Methods - -### As JSON Parameter - -`GrayscaleTransformationModes` as a JSON parameter is a JSON Object array defined as below. - -| Parent Json Object | Key Name | Key Value | -| ------------------ | ------------------- | ---------- | -| ImageParameter | GrayscaleTransformationModes | A JSON Object array while each Object is defined as below | - -| Key Name | Key Value | Description | -| -------- | --------- | ----------- | -| Mode | Any one in Candidate Mode List as string | (Required) Specifies a mode for grayscale transformation. | - -**Default Value** - -```json -{ - "GrayscaleTransformationModes":[ - { - "Mode": "GTM_ORIGINAL" - } - ] -} -``` - -**JSON Parameter Example** - -```json -{ - "GrayscaleTransformationModes": [ - { - "Mode": "GTM_ORIGINAL" - }, - { - "Mode": "GTM_INVERTED" - } - ] -} -``` diff --git a/parameters/reference/index-v1.0.20.md b/parameters/reference/index-v1.0.20.md deleted file mode 100644 index fd5c239..0000000 --- a/parameters/reference/index-v1.0.20.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Dynamsoft Document Normalizer - Parameter Reference -keywords: parameters, reference, documentation -description: Dynamsoft Document Normalizer - Parameter Reference ---- - -# Parameter Reference - -- [`BinarizationModes`](binarization-modes.md) -- [`Brightness`](brightness.md) -- [`ColourChannelUsageType`](colour-channel-usage-type.md) -- [`ColourConversionModes`](colour-conversion-modes.md) -- [`ColourMode`](colour-mode.md) -- [`ContentType`](content-type.md) -- [`Contrast`](contrast.md) -- [`DeskewMode`](deskew-mode.md) -- [`GrayscaleEnhancementModes`](grayscale-enhancement-modes.md) -- [`GrayscaleTransformationModes`](grayscale-transformation-modes.md) -- [`InteriorAngleRangeArray`](interior-angle-range-array.md) -- [`LineExtractionModes`](line-extraction-modes.md) -- [`MaxThreadCount`](max-thread-count.md) -- [`PageSize`](page-size.md) -- [`QuadrilateralDetectionModes`](quadrilateral-detection-modes.md) -- [`RegionPredetectionModes`](region-predetection-modes.md) -- [`ScaleDownThreshold`](scale-down-threshold.md) -- [`TextFilterModes`](text-filter-modes.md) -- [`TextureDetectionModes`](texture-detection-modes.md) -- [`Timeout`](timeout.md) diff --git a/parameters/reference/interior-angle-range-array.md b/parameters/reference/interior-angle-range-array.md deleted file mode 100644 index 8012e1a..0000000 --- a/parameters/reference/interior-angle-range-array.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: default-layout -title: InteriorAngleRangeArray -keywords: InteriorAngleRangeArray, parameters, reference, documentation -description: Dynamsoft Document Normalizer Parameter Reference - InteriorAngleRangeArray ---- - -# InteriorAngleRangeArray - -`InteriorAngleRangeArray` specifies the range of angles (in degrees) of the extracted corners. The corners refer to the corners of the quad or document. - -## Setting Methods - -### As JSON Parameter - -`InteriorAngleRangeArray` as a JSON parameter is a JSON Object array defined as below. - -| Parent Json Object | Key Name | Key Value | -| ------------------ | ------------------- | ---------- | -| NormalizerParameter | InteriorAngleRangeArray | A JSON Object array while each Object is defined as below | - -| Key Name | Key Value | Description | Key Default Value | -| -------- | --------- | ----------- | ----------------- | -| MinValue | A number from [0, 180] | Sets the minimum interior angle. | 70 | -| MaxValue | A number from [0, 180] | Sets the maximum interior angle. | 110 | - -**JSON Example** - -```json -{ - "InteriorAngleRangeArray": [ - { - "MinValue": 70, - "MaxValue": 110 - } - ] -} -``` diff --git a/parameters/reference/line-extraction-modes.md b/parameters/reference/line-extraction-modes.md deleted file mode 100644 index 1a8d5fb..0000000 --- a/parameters/reference/line-extraction-modes.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: default-layout -title: LineExtractionModes -keywords: LineExtractionModes, parameters, reference, documentation -description: Dynamsoft Document Normalizer Parameter Reference - LineExtractionModes ---- - -# LineExtractionModes - -`LineExtractionModes` specifies the algorithm used to extract lines. - -It consists of one or both of the following modes, with each mode representing a different way to extract lines. - -## Candidate Mode List - -- LEM_GENERAL -- LEM_MARGIN_BASED - -### LEM_GENERAL - -Extracts lines using the general algorithm. - -### LEM_MARGIN_BASED - -Extracts lines based on the margin between the document content and the document border. Once the margin is found, the location of the document border is then calculated. - -