From 5278dd55f102f94ff0ae7b61864fc36fcdd7bf08 Mon Sep 17 00:00:00 2001
From: DMGithubPublisher
diff --git a/guides/mrz-scanner-customization.md b/guides/mrz-scanner-customization.md index 5041f88..5359a61 100644 --- a/guides/mrz-scanner-customization.md +++ b/guides/mrz-scanner-customization.md @@ -15,6 +15,17 @@ permalink: /guides/mrz-scanner-customization.html > >Before going into the ways that you can customize the MRZ Scanner, please read the [MRZ Scanner JavaScript Edition User Guide]({{ site.guides }}mrz-scanner.html). +## Quick Links + +- [Setting Available MRTD formats](#setting-available-mrtd-formats) +- [Hiding the Result View](#hiding-the-result-view) +- [Changing the Scan Guide Frame](#changing-the-scan-guide-frame) +- [Reading Static Images and PDFs using the MRZ Scanner](#reading-static-images-and-pdfs-using-the-mrz-scanner) +- [Configuring the `onDone` Callback](#configuring-the-ondone-callback) +- [Enable Result Editing](#enable-result-editing) + +## Introduction + This guide expands on the User Guide that explored the MRZ Scanner Hello World sample project. Here we explore ways to customize the UI as well as the performance of the MRZ Scanner. We will walk through the three main configuration interfaces - [**`MRZScannerConfig`**]({{ site.api }}mrz-scanner.html#mrzscannerconfig), [**`MRZScannerViewConfig`**]({{ site.api }}mrz-scanner.html#mrzscannerviewconfig), and [**`MRZResultViewConfig`**]({{ site.api }}mrz-scanner.html#mrzresultviewconfig). These configuration interfaces make customizing the MRZ Scanner as easy as adding or changing a few properties in the instance constructor. Every sample is a variation on the previous Hello World sample with a few additional properties defined in the configuration interfaces, and so we only show the differing portion rather than all the code. ## `MRZScannerConfig` Overview @@ -146,9 +157,9 @@ The `MRZScannerView` provides a guide frame for each of the three MRTD formats. Please contact the [Dynamsoft Support Team](https://www.dynamsoft.com/company/contact/) for any further inquiries, or to customize the frame guide selection logic. -### Reading Static Images using the MRZ Scanner +### Reading Static Images and PDFs using the MRZ Scanner -Starting from v2.1 of the MRZ Scanner, the library is now able to read MRZs **directly** from static images and PDFs. To support this, the MRZScannerViewConfig will need to be configured to support that, especially for PDFs. +Starting from **v2.1** of the MRZ Scanner, the library is now able to read MRZs **directly** from static images and PDFs. To support this, the MRZScannerViewConfig will need to be configured to support that, especially for PDFs. To learn more on how to create a web application that supports static image/PDF reading using the MRZ Scanner, please refer to this [guide]({{ site.guides }}mrz-scanner-static-image.html). Furthermore, please refer to the full File Input Sample that the previously linked guide walks you through. diff --git a/guides/mrz-scanner-static-image.md b/guides/mrz-scanner-static-image.md index 77d2950..9e0e84e 100644 --- a/guides/mrz-scanner-static-image.md +++ b/guides/mrz-scanner-static-image.md @@ -35,7 +35,7 @@ The first step in making the sample is to define the script references and the H
- + diff --git a/guides/mrz-scanner.md b/guides/mrz-scanner.md index 98211b2..bb479e3 100644 --- a/guides/mrz-scanner.md +++ b/guides/mrz-scanner.md @@ -91,7 +91,7 @@ Below is the complete Hello World sample page that uses the precompiled script s }); (async () => { // Launch the scanner and wait for the result - const result = await mrzScanner.launch({}); + const result = await mrzScanner.launch(); })(); @@ -100,8 +100,8 @@ Below is the complete Hello World sample page that uses the precompiled script s > [!NOTE] > -> This code is identical to the Hello World file mentioned in *Build from Source*, except for the script source. -> +> This code is a more simplified version of the Hello World file that is hosted on [Github](https://github.com/Dynamsoft/mrz-scanner-javascript/blob/main/samples/hello-world.html). +> The file hosted on Github contains more code for a better final UI, but that extra code is not necessary to successfully launching the MRZ Scanner. All you need is the code shown above. > Please do not forget to replace `YOUR_LICENSE_KEY_HERE` with your own license key, whether it is trial or full. To run the sample, create a new file called `hello-world.html`, then copy and paste the code above into the file. Next, serve the page directly by deploying it to a server. @@ -176,30 +176,40 @@ The first step in setting up the HTML in the Hello World project is to include t MRZ Scanner comes with a **Ready-to-Use UI**. When the MRZ Scanner launches, it creates a container which it populates with the **Ready-to-Use UI**. - - ### Step 2: Initializing the MRZ Scanner -```js -// Initialize the Dynamsoft MRZ Scanner -const mrzscanner = new Dynamsoft.MRZScanner({ - license: "YOUR_LICENSE_KEY_HERE", -}); +```html +
``` Above is the **simplest** way to initialize the [**`MRZScanner`**]({{ site.api }}mrz-scanner.html#mrzscanner). Note the configuration object used to set the behaviour of the MRZ Scanner instance. The single property that is **required** to be defined in this configuration object is the **license key**. Without a valid license, the MRZ Scanner view fails to launch, and the user will be met with a license key error message. Please refer to the [licensing](#license) section of the guide for instructions on acquiring a license key. ### Step 3: Launching the MRZ Scanner -```js -(async () => { - // Launch the scanner and wait for the result - const result = await mrzscanner.launch({}); - console.log(result); -})(); +```html + ``` -Now that the [**`MRZScanner`**]({{ site.api }}mrz-scanner.html#mrzscanner) has been initialized and configured, it is ready to be launched! Upon launch, the MRZ Scanner presents the main **`MRZScannerView`** UI in its container on the page, and is ready to start scanning. Upon scanning an MRZ (via video or static image), the MRZ Scanner then switches to the **`MRZResultView`** , which displays a cropped image of the MRZ document as well as the parsed fields of the MRZ text. Let's break down these two Views: +Now that the [**`MRZScanner`**]({{ site.api }}mrz-scanner.html#mrzscanner) has been initialized and configured, it is ready to be launched! Upon launch, the MRZ Scanner presents the main **`MRZScannerView`** UI in its container on the page, and is ready to start scanning. Upon scanning an MRZ (via video or static image), the MRZ Scanner then switches to the **`MRZResultView`**, which displays a cropped image of the MRZ document as well as the parsed fields of the MRZ text. Let's break down these two Views: #### `MRZScannerView` From 848a1a466084b086053115f45f29c8740f44009d Mon Sep 17 00:00:00 2001 From: dynamsoft-h <172081603+dynamsoft-h@users.noreply.github.com> Date: Wed, 11 Jun 2025 16:53:40 -0700 Subject: [PATCH 2/6] chore: fix .gitignore --- .gitignore | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/.gitignore b/.gitignore index 056ca9e..8ac9b07 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,19 @@ .DS_Store /.vs -Gemfile -Hide_Tree_Page.md -sitemap.xml -_includes/productNav/* + +# Layout templates +_layouts/ + +# Assets +assets/font-face/ +assets/img-icon/ +assets/js/** +!assets/js/setLatestVersion.js +assets/scripts/ +assets/css/ + +# Includes +_includes/productNav/ _includes/auto-version-list.html _includes/head.html _includes/liquid_autoGenerateHistoryList.html @@ -18,12 +28,14 @@ _includes/productNav_OLD.html _includes/productNav.html _includes/search-input.html _includes/trialLicense.html -_layouts/* -_plugins/* -assets/css/* -assets/font-face/* -assets/img-icon/* -assets/js/* -assets/scripts/* -_site/* + +# Plugins +_plugins/ + +# Site resources +_site/ + +sitemap.xml +Hide_Tree_Page.md Gemfile.lock +Gemfile From 607b326dd1c68dccee489b6b7a2f0d33fbb90dba Mon Sep 17 00:00:00 2001 From: dynamsoft-h <172081603+dynamsoft-h@users.noreply.github.com> Date: Thu, 12 Jun 2025 10:22:08 -0700 Subject: [PATCH 3/6] feat: GitHub preview CI workflow --- .github/workflows/main.yml | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a944516..481c59f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -4,18 +4,18 @@ name: CI # Controls when the workflow will run on: - # Triggers the workflow on push events but only for the main branch + # Triggers the workflow on push events to the main and preview branches push: - branches: - - main - #- preview + branches: + - main + - preview # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: - # This workflow contains jobs called "Build-Master" + # This workflow contains jobs called "Build-Main" and "Build-Preview" Build-Main: if: ${{ github.ref == 'refs/heads/main' }} uses: dynamsoft-docs/Docs-Template-Repo/.github/workflows/called-workflow-build-sync-production.yml@main @@ -23,3 +23,11 @@ jobs: doc-repo: mrz-scanner-docs-js doc-url: mrz-scanner/docs/web secrets: inherit + + Build-Preview: + if: ${{ github.ref == 'refs/heads/preview' }} + uses: dynamsoft-docs/Docs-Template-Repo/.github/workflows/called-workflow-build-sync-testing.yml@main + with: + doc-repo: mrz-scanner-docs-js + doc-url: mrz-scanner/docs/web + secrets: inherit From 3a8f9b8d053cb52f946b796b51d308d47001896f Mon Sep 17 00:00:00 2001 From: dynamsoft-h <172081603+dynamsoft-h@users.noreply.github.com> Date: Thu, 12 Jun 2025 10:47:56 -0700 Subject: [PATCH 4/6] chore: fix whitespace, EOF newline, and styling --- api/enums-mrz-scanner.md | 2 +- api/index.md | 10 +-- api/mrz-scanner.md | 6 +- codegallery/demo/index.md | 2 +- codegallery/helloworld/index.md | 2 +- codegallery/index.md | 2 +- gettingstarted/add_dependency.md | 102 ++++++++++++++++++------------ gettingstarted/license.md | 2 +- gettingstarted/sys_requirement.md | 6 +- index.md | 14 ++-- introduction/index.md | 8 +-- releasenotes/index.md | 13 ++-- 12 files changed, 94 insertions(+), 75 deletions(-) diff --git a/api/enums-mrz-scanner.md b/api/enums-mrz-scanner.md index 8364be0..2048ce7 100644 --- a/api/enums-mrz-scanner.md +++ b/api/enums-mrz-scanner.md @@ -56,4 +56,4 @@ enum EnumMRZData { DateOfBirth = "dateOfBirth", DateOfExpiry = "dateOfExpiry", } -``` \ No newline at end of file +``` diff --git a/api/index.md b/api/index.md index 3861291..2099a51 100644 --- a/api/index.md +++ b/api/index.md @@ -20,7 +20,7 @@ Please read through the [**full API reference**](mrz-scanner.md), but you can fi 2. MRZScannerView - Represents the main view of the MRZ Scanner where the scanning operation occurs. -3. MRZResultView - Displays the parsed MRZ result in human readable fields, along with a cropped image of the MRZ document. +3. MRZResultView - Displays the parsed MRZ result in human readable fields, along with a cropped image of the MRZ document. ## Interfaces @@ -32,11 +32,11 @@ Please read through the [**full API reference**](mrz-scanner.md), but you can fi 4. [MRZResultViewToolbarButtonsConfig](mrz-scanner.md#mrzresultviewtoolbarbuttonsconfig) - Configures the toolbar buttons of the **MRZResultView**. -4. [MRZResult](mrz-scanner.md#mrzresult) - Represents a typical MRZ result along with all of the parsed fields that come with it. +5. [MRZResult](mrz-scanner.md#mrzresult) - Represents a typical MRZ result along with all of the parsed fields that come with it. -5. [MRZData](mrz-scanner.md#mrzdata) - Represents the parsed MRZ data that is part of the `MRZResult`. +6. [MRZData](mrz-scanner.md#mrzdata) - Represents the parsed MRZ data that is part of the `MRZResult`. -6. [MRZDate](mrz-scanner.md#mrzdate) - Represents a date in the MRZ fields - which is usually used for date of birth and the date of expiry. +7. [MRZDate](mrz-scanner.md#mrzdate) - Represents a date in the MRZ fields - which is usually used for date of birth and the date of expiry. ## Enumerations @@ -46,4 +46,4 @@ All of the enumerations can be found [**here**](enums-mrz-scanner.md). Here is a 2. [EnumResultStatus](enums-mrz-scanner.md#enumresultstatus) - An enumeration to represent the status of a MRZ result. -3. [EnumMRZData](enums-mrz-scanner.md) - An enumeration to represent the different fields of the `MRZData` interface. \ No newline at end of file +3. [EnumMRZData](enums-mrz-scanner.md) - An enumeration to represent the different fields of the `MRZData` interface. diff --git a/api/mrz-scanner.md b/api/mrz-scanner.md index 0132831..0242798 100644 --- a/api/mrz-scanner.md +++ b/api/mrz-scanner.md @@ -115,7 +115,7 @@ To get the full picture on how to use *MRZScannerConfig*, please visit the [Cust ```ts interface MRZScannerConfig { license?: string; // license is absolutely required to be set at initialization - container?: HTMLElement | string; // + container?: HTMLElement | string; // // Resource/Template specific configuration templateFilePath?: string; @@ -152,7 +152,7 @@ const mrzConfig = { license: "YOUR_LICENSE_KEY_HERE", mrzFormatType: ["passport", "td1"], // set the MRTD formats to just passport and ID (TD1) showResultView: false, // hide the final MRZResultView and go back to landing page once the MRZ result is in - // engineResourcePaths typically is only assigned when using a framework like React/Angular/Vue where the resources are not in the same location as the script reference + // engineResourcePaths typically is only assigned when using a framework like React/Angular/Vue where the resources are not in the same location as the script reference engineResourcePaths: { std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std/dist/", dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing/dist/", @@ -504,4 +504,4 @@ type ResultStatus = { #### Example -Please see the [example of MRZResult](#example-8). \ No newline at end of file +Please see the [example of MRZResult](#example-8). diff --git a/codegallery/demo/index.md b/codegallery/demo/index.md index 9656ec9..a44f884 100644 --- a/codegallery/demo/index.md +++ b/codegallery/demo/index.md @@ -38,4 +38,4 @@ For the best demonstration of the full capabilities of the MRZ Scanner JavaScrip If you do not wish to build the library from the source files, you can change the script reference at the `
` of the code to the CDN link. To learn more about the ways you can include the library, please visit [User Guide - Quick Start]({{ site.guides }}mrz-scanner.html#quick-start---hello-world).
-To learn how you can further customize the MRZ Scanner in your code, please visit [Customizing the MRZ Scanner]({{ site.guides }}mrz-scanner-customization.html).
\ No newline at end of file
+To learn how you can further customize the MRZ Scanner in your code, please visit [Customizing the MRZ Scanner]({{ site.guides }}mrz-scanner-customization.html).
diff --git a/codegallery/helloworld/index.md b/codegallery/helloworld/index.md
index 4d662d3..94d4ef3 100644
--- a/codegallery/helloworld/index.md
+++ b/codegallery/helloworld/index.md
@@ -55,4 +55,4 @@ The simplest implementation means that the MRZ Scanner is initialized with the d
For a further breakdown of the Hello World code, please visit the [User Guide]({{ site.guides }}mrz-scanner.html).
-To learn how to customize the scanner to fit your needs, please visit [Customizing the MRZ Scanner]({{ site.guides }}mrz-scanner-customization.html).
\ No newline at end of file
+To learn how to customize the scanner to fit your needs, please visit [Customizing the MRZ Scanner]({{ site.guides }}mrz-scanner-customization.html).
diff --git a/codegallery/index.md b/codegallery/index.md
index 9b0896f..3fe6e68 100644
--- a/codegallery/index.md
+++ b/codegallery/index.md
@@ -50,4 +50,4 @@ The demo implementation adds a bit more colour and character to the Hello World
The full code of the Demo can be found [**here**](demo/index.md).
-For the best demonstration of the full capabilities of the MRZ Scanner JavaScript Edition, please visit the [official Dynamsoft MRZ Scanner JavaScript demo](https://demo.dynamsoft.com/mrz-scanner/).
\ No newline at end of file
+For the best demonstration of the full capabilities of the MRZ Scanner JavaScript Edition, please visit the [official Dynamsoft MRZ Scanner JavaScript demo](https://demo.dynamsoft.com/mrz-scanner/).
diff --git a/gettingstarted/add_dependency.md b/gettingstarted/add_dependency.md
index 91cedcb..a03e687 100644
--- a/gettingstarted/add_dependency.md
+++ b/gettingstarted/add_dependency.md
@@ -53,6 +53,7 @@ Besides using the CDN, you can also download the SDKs and host related files on
**Step 1** - Download the SDKs:
{% comment %}
+
- From the website
[Download the JavaScript ZIP package](https://www.dynamsoft.com/mobile-web-capture/downloads/)
@@ -69,7 +70,8 @@ Besides using the CDN, you can also download the SDKs and host related files on
yarn add dynamsoft-image-processing@2.2.10
yarn add dynamsoft-camera-enhancer@4.0.2
```
-{% endcomment %}
+
+ {% endcomment %}
- npm
@@ -84,31 +86,31 @@ Besides using the CDN, you can also download the SDKs and host related files on
npm install dynamsoft-camera-enhancer@4.0.2
```
-
-
**Step 2** - Include the SDKs
Depending on where you put them, you can typically include them like this:
{% comment %}
- ```html
-
-
-
-
-
-
- ```
+
+```html
+
+
+
+
+
+
+```
or
{% endcomment %}
- ```html
-
-
-
-
-
-
- ```
+
+```html
+
+
+
+
+
+
+```
**Step 3** Specify the location of the engine files(optinal)
@@ -116,31 +118,47 @@ If you would like to use the SDKs completely offline, please refer to [Use your
## Specify the location of the engine files
-This is usually only required with frameworks like Angular or React, etc. where the referenced JavaScript files such as cvr.js, ddn.js are compiled into another file, or hosting the engine files and using the SDKs completely offline. The purpose is to tell the SDK where to find the engine files (*.worker.js, *.wasm.js and *.wasm, etc.).
+This is usually only required with frameworks like Angular or React, etc. where the referenced JavaScript files such as cvr.js, ddn.js are compiled into another file, or hosting the engine files and using the SDKs completely offline. The purpose is to tell the SDK where to find the engine files (_.worker.js, _.wasm.js and \*.wasm, etc.).
### Use the jsDelivr CDN with frameworks like Angular or React, etc.
- ```typescript
- Dynamsoft.DDV.Core.engineResourcePath = "https://cdn.jsdelivr.net/npm/dynamsoft-document-viewer@2.0.0/dist/engine";
- Dynamsoft.Core.CoreModule.engineResourcePaths.core = "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.10/dist/";
- Dynamsoft.Core.CoreModule.engineResourcePaths.license = "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.10/dist/";
- Dynamsoft.Core.CoreModule.engineResourcePaths.ddn = "https://cdn.jsdelivr.net/npm/dynamsoft-document-normalizer@2.2.10/dist/";
- Dynamsoft.Core.CoreModule.engineResourcePaths.cvr = "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.10/dist/";
- Dynamsoft.Core.CoreModule.engineResourcePaths.std = "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.0/dist/";
- Dynamsoft.Core.CoreModule.engineResourcePaths.dip = "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.10/dist/";
- Dynamsoft.Core.CoreModule.engineResourcePaths.dce = "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.2/dist/";
- ```
+
+```typescript
+Dynamsoft.DDV.Core.engineResourcePath =
+ "https://cdn.jsdelivr.net/npm/dynamsoft-document-viewer@2.0.0/dist/engine";
+Dynamsoft.Core.CoreModule.engineResourcePaths.core =
+ "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.10/dist/";
+Dynamsoft.Core.CoreModule.engineResourcePaths.license =
+ "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.10/dist/";
+Dynamsoft.Core.CoreModule.engineResourcePaths.ddn =
+ "https://cdn.jsdelivr.net/npm/dynamsoft-document-normalizer@2.2.10/dist/";
+Dynamsoft.Core.CoreModule.engineResourcePaths.cvr =
+ "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.10/dist/";
+Dynamsoft.Core.CoreModule.engineResourcePaths.std =
+ "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.0/dist/";
+Dynamsoft.Core.CoreModule.engineResourcePaths.dip =
+ "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.10/dist/";
+Dynamsoft.Core.CoreModule.engineResourcePaths.dce =
+ "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.2/dist/";
+```
### Use your own hosted engine files
- ```typescript
- //Feel free to change it to your own location of these files
- Dynamsoft.DDV.Core.engineResourcePath = "./node_modules/dynamsoft-document-viewer/dist/engine";
- Dynamsoft.Core.CoreModule.engineResourcePaths.core = "./node_modules/dynamsoft-core/dist/";
- Dynamsoft.Core.CoreModule.engineResourcePaths.license = "./node_modules/dynamsoft-license/dist/";
- Dynamsoft.Core.CoreModule.engineResourcePaths.ddn = "./node_modules/dynamsoft-document-normalizer/dist/";
- Dynamsoft.Core.CoreModule.engineResourcePaths.cvr = "./node_modules/dynamsoft-capture-vision-router/dist/";
- Dynamsoft.Core.CoreModule.engineResourcePaths.std = "./node_modules/dynamsoft-capture-vision-std/dist/";
- Dynamsoft.Core.CoreModule.engineResourcePaths.dip = "./node_modules/dynamsoft-image-processing/dist/";
- Dynamsoft.Core.CoreModule.engineResourcePaths.dce = "./node_modules/dynamsoft-camera-enhancer/dist/";
- ```
-
\ No newline at end of file
+```typescript
+//Feel free to change it to your own location of these files
+Dynamsoft.DDV.Core.engineResourcePath =
+ "./node_modules/dynamsoft-document-viewer/dist/engine";
+Dynamsoft.Core.CoreModule.engineResourcePaths.core =
+ "./node_modules/dynamsoft-core/dist/";
+Dynamsoft.Core.CoreModule.engineResourcePaths.license =
+ "./node_modules/dynamsoft-license/dist/";
+Dynamsoft.Core.CoreModule.engineResourcePaths.ddn =
+ "./node_modules/dynamsoft-document-normalizer/dist/";
+Dynamsoft.Core.CoreModule.engineResourcePaths.cvr =
+ "./node_modules/dynamsoft-capture-vision-router/dist/";
+Dynamsoft.Core.CoreModule.engineResourcePaths.std =
+ "./node_modules/dynamsoft-capture-vision-std/dist/";
+Dynamsoft.Core.CoreModule.engineResourcePaths.dip =
+ "./node_modules/dynamsoft-image-processing/dist/";
+Dynamsoft.Core.CoreModule.engineResourcePaths.dce =
+ "./node_modules/dynamsoft-camera-enhancer/dist/";
+```
diff --git a/gettingstarted/license.md b/gettingstarted/license.md
index fe79929..96230f1 100644
--- a/gettingstarted/license.md
+++ b/gettingstarted/license.md
@@ -29,4 +29,4 @@ The following code snippet is using the public trial license to initialize the l
const mrzScanner = new Dynamsoft.MRZScanner({
license: "YOUR_LICENSE_KEY_HERE",
});
-```
\ No newline at end of file
+```
diff --git a/gettingstarted/sys_requirement.md b/gettingstarted/sys_requirement.md
index 2f63797..2c0c2d0 100644
--- a/gettingstarted/sys_requirement.md
+++ b/gettingstarted/sys_requirement.md
@@ -17,10 +17,10 @@ The MRZ Scanner JavaScript Edition solution is built upon the JavaScript edition
1. **Secure context (HTTPS deployment)**
When deploying your application / website for production, make sure to serve it via a secure HTTPS connection. This is required for two reasons
-
+
- Access to the camera video stream is only granted in a security context. Most browsers impose this restriction.
> Some browsers like Chrome may grant the access for `http://127.0.0.1` and `http://localhost` or even for pages opened directly from the local disk (`file:///...`). This can be helpful for temporary development and testing.
-
+
- Dynamsoft licenses require a secure context to work, unless a special offline license is used.
2. **`WebAssembly`, `Blob`, `URL`/`createObjectURL`, `Web Workers`**
@@ -47,4 +47,4 @@ Apart from the browsers, the operating systems may impose some limitations of th
## References
- [Dynamsoft Label Recognizer - System Requirements](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/user-guide/mrz-scanner.html#system-requirements)
-- [Dynamsoft Code Parser - System Requirements](https://www.dynamsoft.com/code-parser/docs/web/programming/javascript/user-guide/#system-requirements)
\ No newline at end of file
+- [Dynamsoft Code Parser - System Requirements](https://www.dynamsoft.com/code-parser/docs/web/programming/javascript/user-guide/#system-requirements)
diff --git a/index.md b/index.md
index 1215a3d..faab994 100644
--- a/index.md
+++ b/index.md
@@ -9,13 +9,13 @@ description: MRZ Scanner JavaScript Edition Documentation Homepage
- [Introduction]({{ site.introduction }}index.html)
- Developer Guides
- - [MRZ Scanner User Guide]({{ site.guides }}mrz-scanner.html)
- - [MRZ Scanner Customization Guide]({{ site.guides }}mrz-scanner-customization.html)
- - [MRZ Scanner - Reading from Static Images and PDFs]({{ site.guides }}mrz-scanner-static-image.html)
+ - [MRZ Scanner User Guide]({{ site.guides }}mrz-scanner.html)
+ - [MRZ Scanner Customization Guide]({{ site.guides }}mrz-scanner-customization.html)
+ - [MRZ Scanner - Reading from Static Images and PDFs]({{ site.guides }}mrz-scanner-static-image.html)
- Getting Started
- - [System Requirements]({{ site.gettingstarted }}sys_requirement.html)
- - [Dependencies]({{ site.gettingstarted }}add_dependency.html)
-
+ - [System Requirements]({{ site.gettingstarted }}sys_requirement.html)
+ - [Dependencies]({{ site.gettingstarted }}add_dependency.html)
+
- [Code Gallery]({{ site.codegallery }}index.html)
- [API Reference]({{ site.api }}index.html)
-- [Release Notes]({{ site.releasenotes }}index.html)
\ No newline at end of file
+- [Release Notes]({{ site.releasenotes }}index.html)
diff --git a/introduction/index.md b/introduction/index.md
index a26ec07..40ec9d3 100644
--- a/introduction/index.md
+++ b/introduction/index.md
@@ -66,7 +66,7 @@ In some more rare cases, an ID card can have a MRZ that conforms to the **TD2**
We designed the **MRZ Scanner JavaScript Edition** with three core principles in mind:
-1. **Minimal Code** - High-level API provide full recognition and parsing functionality with **just a few lines of code**, significantly reducing development and maintenance costs.
+1. **Minimal Code** - High-level API provide full recognition and parsing functionality with **just a few lines of code**, significantly reducing development and maintenance costs.
2. **Ready-To-Use UI** - Pre-integrated components and a pre-designed UI simplify the process even more for any developer, enabling a **quick setup and saving any time and effort needed for the UI design**.
3. **Effortless Customization** - Tailored configuration interfaces allow for **quick and simple customization** of the scanner settings and performance.
@@ -78,7 +78,7 @@ The **MRZ Scanner JavaScript Edition** is reliant on two core views, the **`MRZS
#### `MRZScannerView`
-The **`MRZScannerView`** is the main view of the solution which displays the camera view, along with some UI elements that control the scanner and camera settings, along with icons to allow the user to load in a photo from the photo library as well as close the scanner. This view comes with a scan guide frame in the center to better guide the user on where to place the MRZ document for best results.
+The **`MRZScannerView`** is the main view of the solution which displays the camera view, along with some UI elements that control the scanner and camera settings, along with icons to allow the user to load in a photo from the photo library as well as close the scanner. This view comes with a scan guide frame in the center to better guide the user on where to place the MRZ document for best results.
Here is a quick screenshot at default look of the **`MRZScannerView`**:
@@ -88,7 +88,7 @@ Here is a quick screenshot at default look of the **`MRZScannerView`**:
#### `MRZResultView`
-The **`MRZResultView`** is responsible for displaying the final parsed results of the MRZ recognition process. The final parsed results, along with their corresponding field names, appear as a scrollable form view underneath the original image of the MRZ document.
+The **`MRZResultView`** is responsible for displaying the final parsed results of the MRZ recognition process. The final parsed results, along with their corresponding field names, appear as a scrollable form view underneath the original image of the MRZ document.
Included with those two things are two buttons, one that allows the user to scan again if needed, and the other to wrap up the scanning process and proceed to the next step (like navigating to another page).
@@ -137,4 +137,4 @@ For the best demonstration of the full capabilities of the MRZ Scanner JavaScrip
## Next Steps
-If you are looking to create your own MRZ scanning application for browsers, then the **MRZ Scanner JavaScript Edition** is the solution for you! To get started with the development, please refer to the [**User Guide**]({{ site.guides }}mrz-scanner.html) that will walk you through the steps to get a *Hello World* implementation going as well as the different ways you can customize the **MRZ Scanner**.
\ No newline at end of file
+If you are looking to create your own MRZ scanning application for browsers, then the **MRZ Scanner JavaScript Edition** is the solution for you! To get started with the development, please refer to the [**User Guide**]({{ site.guides }}mrz-scanner.html) that will walk you through the steps to get a *Hello World* implementation going as well as the different ways you can customize the **MRZ Scanner**.
diff --git a/releasenotes/index.md b/releasenotes/index.md
index 9e43cc8..9430155 100644
--- a/releasenotes/index.md
+++ b/releasenotes/index.md
@@ -16,14 +16,14 @@ permalink: /releasenotes/index.html
## Highlighted Features
-- **[UI]** Redesigned the *MRZScannerView* (the main camera view) to have updated icons and better alignment and spacing.
+- **[UI]** Redesigned the **`MRZScannerView`** (the main camera view) to have updated icons and better alignment and spacing.
- Changed the default camera resolution when the camera is opened from **1080p** to **2K** (if the camera supports it).
-- Added a new property to the *MRZScannerViewConfig* interface, **showPoweredByDynamsoft**, which controls the visibility of the `Powered By Dynamsoft` message that is part of the *MRZScannerView* UI.
-- Introduced the ability for the MRZ Scanner to read MRZs from static images and PDFs without the need to use the *MRZScannerView* UI and the Load Image button.
-- Added two new properties to the *MRZScannerViewConfig* interface, **uploadAcceptedTypes** and **uploadFileConverter**, which convert static images and PDFs to blobs which can then be read by the MRZ Scanner.
+- Added a new property to the **`MRZScannerViewConfig`** interface, **`showPoweredByDynamsoft`**, which controls the visibility of the `Powered By Dynamsoft` message that is part of the **`MRZScannerView`** UI.
+- Introduced the ability for the MRZ Scanner to read MRZs from static images and PDFs without the need to use the **`MRZScannerView`** UI and the Load Image button.
+- Added two new properties to the **`MRZScannerViewConfig`** interface, **`uploadAcceptedTypes`** and **`uploadFileConverter`**, which convert static images and PDFs to blobs which can then be read by the MRZ Scanner.
- Redeveloped the `launch()` method so that it can take a static image or file as input. To learn how to use that, please refer to [Setting up the MRZ Reader for Static Images]({{ site.guides }}mrz-scanner-static-image.html)
- Integrated Dynamsoft's [Mobile Web Capture](https://www.dynamsoft.com/mobile-web-capture/docs/introduction/) with the MRZ Scanner (JavaScript Edition) to allow the user to edit the scanned MRZ image like a document.
-- Added `NationalityRaw` and `IssuingStateRaw` to the `MRZData` interface that represent the raw values of these fields
+- Added `NationalityRaw` and `IssuingStateRaw` to the `MRZData` interface that represent the raw values of these fields
## Fixes
@@ -47,6 +47,7 @@ The **MRZ Scanner JavaScript Edition** has been redesigned and redeveloped to no
MRZ Scanner JavaScript Edition is organized into configurable UI views. Below is a quick overview of the two main views:
+[!TIP]
> Learn more about these views and how to configure them in the [User Guide]({{ site.guides }}mrz-scanner.html) and the [Customization Guide]({{ site.guides }}mrz-scanner-customization.html).
### MRZ Scanner View
@@ -63,4 +64,4 @@ MRZ Scanner JavaScript Edition is organized into configurable UI views. Below is
- Scrollable field view to display the parsed MRZ info
- Displays the original image of the MRZ document
- Allows the user to edit almost all of the parsed fields
-- Two buttons to allow the user to re-scan or move on
\ No newline at end of file
+- Two buttons to allow the user to re-scan or move on
From f712849930a7639af1950a7dce297c09a82a3f3a Mon Sep 17 00:00:00 2001
From: dynamsoft-h <172081603+dynamsoft-h@users.noreply.github.com>
Date: Thu, 12 Jun 2025 11:16:36 -0700
Subject: [PATCH 5/6] fix: formatting
---
releasenotes/index.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/releasenotes/index.md b/releasenotes/index.md
index 9430155..3d30ccb 100644
--- a/releasenotes/index.md
+++ b/releasenotes/index.md
@@ -47,7 +47,7 @@ The **MRZ Scanner JavaScript Edition** has been redesigned and redeveloped to no
MRZ Scanner JavaScript Edition is organized into configurable UI views. Below is a quick overview of the two main views:
-[!TIP]
+> [!TIP]
> Learn more about these views and how to configure them in the [User Guide]({{ site.guides }}mrz-scanner.html) and the [Customization Guide]({{ site.guides }}mrz-scanner-customization.html).
### MRZ Scanner View
From 10ababee562518b4d34515e306fc1af15b6e2513 Mon Sep 17 00:00:00 2001
From: Amro Anwer Dynamsoft MRZ Scanner
+
+
+
+
+```
+
+> [!NOTE]
+>
+> This code is a more simplified version of the Hello World file that is hosted on [Github](https://github.com/Dynamsoft/mrz-scanner-javascript/blob/main/samples/hello-world.html).
+> The file hosted on Github contains more code for a better final UI, but that extra code is not necessary to successfully launching the MRZ Scanner. All you need is the code shown above.
+> Please do not forget to replace `YOUR_LICENSE_KEY_HERE` with your own license key, whether it is trial or full.
+
+To run the sample, create a new file called `hello-world.html`, then copy and paste the code above into the file. Next, serve the page directly by deploying it to a server.
+
+If you are using VS Code, a quick and easy way to serve the project is using the [Five Server VSCode extension](https://marketplace.visualstudio.com/items?itemName=yandeu.five-server). Simply install the extension, open the `hello-world.html` file in the editor, and click "Go Live" in the bottom right corner of the editor. This will serve the application at `http://127.0.0.1:5500/hello-world.html`.
+
+Alternatively, you can use other methods like `IIS` or `Apache` to serve the project, though we will omit those methods here for brevity.
+
+
+
+
+Dynamsoft MRZ Scanner
+
+
+
+```
+
+The first step in setting up the HTML in the Hello World project is to include the SDK. (We discussed the two available methods to include the SDK resources in the earlier [Quick Start](#quick-start---hello-world) section) In this example, we include the precompiled MRZ Scanner SDK script via CDN in the header:
+
+MRZ Scanner comes with a **Ready-to-Use UI**. When the MRZ Scanner launches, it creates a container which it populates with the **Ready-to-Use UI**.
+
+### Step 2: Initializing the MRZ Scanner
+
+```html
+
+ Dynamsoft MRZ Scanner
+
+
+
+```
+
+Above is the **simplest** way to initialize the [**`MRZScanner`**]({{ site.api }}mrz-scanner.html#mrzscanner). Note the configuration object used to set the behaviour of the MRZ Scanner instance. The single property that is **required** to be defined in this configuration object is the **license key**. Without a valid license, the MRZ Scanner view fails to launch, and the user will be met with a license key error message. Please refer to the [licensing](#license) section of the guide for instructions on acquiring a license key.
+
+### Step 3: Launching the MRZ Scanner
+
+```html
+
+```
+
+Now that the [**`MRZScanner`**]({{ site.api }}mrz-scanner.html#mrzscanner) has been initialized and configured, it is ready to be launched! Upon launch, the MRZ Scanner presents the main **`MRZScannerView`** UI in its container on the page, and is ready to start scanning. Upon scanning an MRZ (via video or static image), the MRZ Scanner then switches to the **`MRZResultView`**, which displays a cropped image of the MRZ document as well as the parsed fields of the MRZ text. Let's break down these two Views:
+
+#### `MRZScannerView`
+
+The `MRZScannerView` is configured using [**`MRZScannerViewConfig`**]({{ site.api }}mrz-scanner.html#mrzscannerviewconfig), which is composed of the following UI elements:
+
+1. **Camera View**: The Camera View is the camera viewfinder UI component within the `MRZScannerView`. This viewfinder occupies the majority of the space within the MRZScannerView to give the user a clear view and precise control of the image being scanned.
+
+2. **Scan Guide Frame**: The Scan Guide Frame is an overlay placed on top of the Camera View that guides the user to place the MRZ document in the middle of the Camera View, in order to achieve a fast and accurate scan. The guide frame is enabled **by default**, but may be hidden via the [**`MRZScannerViewConfig`**]({{ site.api }}mrz-scanner.html#mrzscannerviewconfig) interface. Note that if scan guide frame is enabled, the scanner also crops out the region outside the guide frame.
+
+
+
+
+3. **Format Selector**: Below the scan guide frame, you will also notice a selector box that allows the user to choose which formats the MRZ Scanner should recognize. The formats that show up in the format selector are configurable via the [**`MRZScannerConfig`**]({{ site.api }}mrz-scanner.html#mrzscannerconfig) interface, while the visibility of the format selector itself is configurable via the [**`MRZScannerViewConfig`**]({{ site.api }}mrz-scanner.html#mrzscannerviewconfig) interface. To learn about MRZ formats, please refer to the [Introduction]({{ site.introduction }}index.html#supported-mrz-formats) page.
+
+
+
+
+4. **Resolution/Camera Select Dropdown**: This dropdown allows the user to switch cameras (should they have more than one available on the device), or select a different resolution for the camera that is currently selected.
+
+5. **Load Image Button**: This button allows the user to scan a file of an image that contains a MRZ from the device's local storage.
+
+6. **Sound Button**: When toggled on, the MRZ Scanner plays a *beep* sound to signal when the scanner recognizes an MRZ.
+
+7. **Flash Button**: This button is responsible for toggling the flash of the camera (when one is available). The flash button does not appear if the device does not have a camera flash, or the browser does not support camera flash.
+
+8. **Close Scanner Button**: This button closes the MRZ Scanner and takes the user back to the landing page.
+
+> [!NOTE]
+> To learn more on how to customize the MRZScannerView and its corresponding UI elements, we recommend reading the [Customizaton Guide]({{ site.guides }}mrz-scanner-customization.html) as that will shed a lot more light on how to customize the scanner UI to fit your needs.
+
+#### `MRZResultView`
+
+Here is a quick breakdown of the constituent UI elements of the result view, controlled by [**`MRZResultViewConfig`**]({{ site.api }}mrz-scanner.html#mrzresultviewconfig):
+
+1. **Original Image**: A cropped image of the scanned MRZ document - this gets displayed at the top of the `MRZResultView` by default.
+
+2. **Parsed Results**: The data parsed from the MRZ code, displayed with their corresponding field names (e.g. Given Name, Nationality, etc.) are placed below the cropped image of the MRZ corresponding field names. In addition to displaying these parsed results, the MRZ Scanner allows the user to edit the values of the fields in case of any errors by cross referencing from the cropped MRZ document displayed directly above.
+
+3. **Re-take Button**: This button discards the previous scan and parsed data, then takes the user back to the **`MRZScannerView`** to scan another MRZ document.
+
+4. **Done Button**: This button closes the scanner and destroys the **`MRZScanner`** instance, and returns the result object containing the MRZ scan. At that point, the application goes back to the landing page. You can additionally dictate further actions upon the button click, such as allowing the user to perform some extra actions with the MRZ result, navigating to another page, passing the result object for further processing, and more.
+
+ > [!NOTE]
+ > In the Hello World sample, no action is taken once the Done button is clicked. The scanner closes and the user is met with an empty page. In order to open the scanner again, the user must refresh the page. You may choose to implement a more user-friendly behavior in a production environment, such as presenting the user with an option to re-open the MRZ Scanner upon closing it.
+
+## Next Steps
+
+Now that you got the most basic functionality of the MRZ Scanner up and running, it's time to explore the many ways in which the MRZ Scanner can be used, including customization and the ability to read directly from static images and PDFs. To learn more about those two topics, please visit the following articles
+
+- [Customizing the MRZ Scanner]({{ site.guides }}mrz-scanner-customization.html)
+- [Setting up the MRZ Scanner for Static Images and PDFs]({{ site.guides }}mrz-scanner-static-image.html)
\ No newline at end of file
diff --git a/guides/mrz-scanner-v2.1.md b/guides/mrz-scanner-v2.1.md
new file mode 100644
index 0000000..637a5ac
--- /dev/null
+++ b/guides/mrz-scanner-v2.1.md
@@ -0,0 +1,265 @@
+---
+layout: default-layout
+needAutoGenerateSidebar: true
+needGenerateH3Content: true
+noTitleIndex: false
+title: Dynamsoft MRZ Scanner JavaScript Edition
+keywords: Documentation, MRZ Scanner, Dynamsoft MRZ Scanner JavaScript Edition,
+description: Dynamsoft MRZ Scanner User Guide
+permalink: /guides/mrz-scanner.html
+---
+
+# User Guide for the MRZ Scanner JavaScript Edition
+
+This user guide will walk you through a Hello World sample web application that scans MRZ documents using the MRZ Scanner JavaScript Edition SDK. We recommend using this sample as a reference when creating your own application.
+
+> [!TIP]
+> Please visit the [Introduction]({{ site.introduction }}index.html) page to learn about the MRZ document formats, the architecture of the MRZ Scanner with respect to other Dynamsoft products, and the system requirements of the MRZ Scanner JavaScript Edition.
+
+## License
+
+### Trial License
+
+When getting started with MRZ Scanner, we recommend getting your own 30-day trial license through the following modal:
+
+{% include trialLicense.html %}
+
+The trial license can be renewed via the [customer portal](https://www.dynamsoft.com/customer/license/trialLicense/?product=mrz&utm_source=guide&package=js) twice, each time for another 15 days, giving you a total of 60 days to develop your own application using the solution. Please contact the [Dynamsoft Support Team](https://www.dynamsoft.com/company/contact/) if you need more time for a full evaluation or have any questions.
+
+> [!NOTE]
+> The **MRZ Scanner** license contains a license for the **Dynamsoft Label Recognizer**, **Dynamsoft Code Parser**, and the **Dynamsoft Camera Enhancer** since the MRZ Scanner builds on top of those three products.
+
+### Full License
+
+If you are fully satisfied with the solution and would like to move forward with a full license, please contact the [Dynamsoft Sales Team](https://www.dynamsoft.com/company/contact/).
+
+## Quick Start - Hello World
+
+As mentioned previously, the purpose of this guide is to help you implement a Hello World application using the MRZ Scanner solution. To showcase this, we will be using vanilla JS. You can find the full code in the [samples Github repo](https://github.com/Dynamsoft/mrz-scanner-javascript).
+
+The first step before writing the code is to include the SDK in your application. You can simply include the SDK by using the precompiled script, but you can also build the SDK from source yourself.
+
+
+
+
+Dynamsoft MRZ Scanner
+
+
+
+
+```
+
+> [!NOTE]
+>
+> This code is a more simplified version of the Hello World file that is hosted on [Github](https://github.com/Dynamsoft/mrz-scanner-javascript/blob/main/samples/hello-world.html).
+> The file hosted on Github contains more code for a better final UI, but that extra code is not necessary to successfully launching the MRZ Scanner. All you need is the code shown above.
+> Please do not forget to replace `YOUR_LICENSE_KEY_HERE` with your own license key, whether it is trial or full.
+
+To run the sample, create a new file called `hello-world.html`, then copy and paste the code above into the file. Next, serve the page directly by deploying it to a server.
+
+If you are using VS Code, a quick and easy way to serve the project is using the [Five Server VSCode extension](https://marketplace.visualstudio.com/items?itemName=yandeu.five-server). Simply install the extension, open the `hello-world.html` file in the editor, and click "Go Live" in the bottom right corner of the editor. This will serve the application at `http://127.0.0.1:5500/hello-world.html`.
+
+Alternatively, you can use other methods like `IIS` or `Apache` to serve the project, though we will omit those methods here for brevity.
+
+
+
+
+Dynamsoft MRZ Scanner
+
+
+
+```
+
+The first step in setting up the HTML in the Hello World project is to include the SDK. (We discussed the two available methods to include the SDK resources in the earlier [Quick Start](#quick-start---hello-world) section) In this example, we include the precompiled MRZ Scanner SDK script via CDN in the header:
+
+MRZ Scanner comes with a **Ready-to-Use UI**. When the MRZ Scanner launches, it creates a container which it populates with the **Ready-to-Use UI**.
+
+### Step 2: Initializing the MRZ Scanner
+
+```html
+
+ Dynamsoft MRZ Scanner
+
+
+
+```
+
+Above is the **simplest** way to initialize the [**`MRZScanner`**]({{ site.api }}mrz-scanner.html#mrzscanner). Note the configuration object used to set the behaviour of the MRZ Scanner instance. The single property that is **required** to be defined in this configuration object is the **license key**. Without a valid license, the MRZ Scanner view fails to launch, and the user will be met with a license key error message. Please refer to the [licensing](#license) section of the guide for instructions on acquiring a license key.
+
+### Step 3: Launching the MRZ Scanner
+
+```html
+
+```
+
+Now that the [**`MRZScanner`**]({{ site.api }}mrz-scanner.html#mrzscanner) has been initialized and configured, it is ready to be launched! Upon launch, the MRZ Scanner presents the main **`MRZScannerView`** UI in its container on the page, and is ready to start scanning. Upon scanning an MRZ (via video or static image), the MRZ Scanner then switches to the **`MRZResultView`**, which displays a cropped image of the MRZ document as well as the parsed fields of the MRZ text. Let's break down these two Views:
+
+#### `MRZScannerView`
+
+The `MRZScannerView` is configured using [**`MRZScannerViewConfig`**]({{ site.api }}mrz-scanner.html#mrzscannerviewconfig), which is composed of the following UI elements:
+
+1. **Camera View**: The Camera View is the camera viewfinder UI component within the `MRZScannerView`. This viewfinder occupies the majority of the space within the MRZScannerView to give the user a clear view and precise control of the image being scanned.
+
+2. **Scan Guide Frame**: The Scan Guide Frame is an overlay placed on top of the Camera View that guides the user to place the MRZ document in the middle of the Camera View, in order to achieve a fast and accurate scan. The guide frame is enabled **by default**, but may be hidden via the [**`MRZScannerViewConfig`**]({{ site.api }}mrz-scanner.html#mrzscannerviewconfig) interface. Note that if scan guide frame is enabled, the scanner also crops out the region outside the guide frame.
+
+
+
+
+3. **Format Selector**: Below the scan guide frame, you will also notice a selector box that allows the user to choose which formats the MRZ Scanner should recognize. The formats that show up in the format selector are configurable via the [**`MRZScannerConfig`**]({{ site.api }}mrz-scanner.html#mrzscannerconfig) interface, while the visibility of the format selector itself is configurable via the [**`MRZScannerViewConfig`**]({{ site.api }}mrz-scanner.html#mrzscannerviewconfig) interface. To learn about MRZ formats, please refer to the [Introduction]({{ site.introduction }}index.html#supported-mrz-formats) page.
+
+
+
+
+4. **Resolution/Camera Select Dropdown**: This dropdown allows the user to switch cameras (should they have more than one available on the device), or select a different resolution for the camera that is currently selected.
+
+5. **Load Image Button**: This button allows the user to scan a file of an image that contains a MRZ from the device's local storage.
+
+6. **Sound Button**: When toggled on, the MRZ Scanner plays a *beep* sound to signal when the scanner recognizes an MRZ.
+
+7. **Flash Button**: This button is responsible for toggling the flash of the camera (when one is available). The flash button does not appear if the device does not have a camera flash, or the browser does not support camera flash.
+
+8. **Close Scanner Button**: This button closes the MRZ Scanner and takes the user back to the landing page.
+
+> [!NOTE]
+> To learn more on how to customize the MRZScannerView and its corresponding UI elements, we recommend reading the [Customizaton Guide]({{ site.guides }}mrz-scanner-customization.html) as that will shed a lot more light on how to customize the scanner UI to fit your needs.
+
+#### `MRZResultView`
+
+Here is a quick breakdown of the constituent UI elements of the result view, controlled by [**`MRZResultViewConfig`**]({{ site.api }}mrz-scanner.html#mrzresultviewconfig):
+
+1. **Original Image**: A cropped image of the scanned MRZ document - this gets displayed at the top of the `MRZResultView` by default.
+
+2. **Parsed Results**: The data parsed from the MRZ code, displayed with their corresponding field names (e.g. Given Name, Nationality, etc.) are placed below the cropped image of the MRZ corresponding field names. In addition to displaying these parsed results, the MRZ Scanner allows the user to edit the values of the fields in case of any errors by cross referencing from the cropped MRZ document displayed directly above.
+
+3. **Re-take Button**: This button discards the previous scan and parsed data, then takes the user back to the **`MRZScannerView`** to scan another MRZ document.
+
+4. **Done Button**: This button closes the scanner and destroys the **`MRZScanner`** instance, and returns the result object containing the MRZ scan. At that point, the application goes back to the landing page. You can additionally dictate further actions upon the button click, such as allowing the user to perform some extra actions with the MRZ result, navigating to another page, passing the result object for further processing, and more.
+
+ > [!NOTE]
+ > In the Hello World sample, no action is taken once the Done button is clicked. The scanner closes and the user is met with an empty page. In order to open the scanner again, the user must refresh the page. You may choose to implement a more user-friendly behavior in a production environment, such as presenting the user with an option to re-open the MRZ Scanner upon closing it.
+
+## Next Steps
+
+Now that you got the most basic functionality of the MRZ Scanner up and running, it's time to explore the many ways in which the MRZ Scanner can be used, including customization and the ability to read directly from static images and PDFs. To learn more about those two topics, please visit the following articles
+
+- [Customizing the MRZ Scanner]({{ site.guides }}mrz-scanner-customization.html)
+- [Setting up the MRZ Scanner for Static Images and PDFs]({{ site.guides }}mrz-scanner-static-image.html)
\ No newline at end of file
diff --git a/guides/mrz-scanner.md b/guides/mrz-scanner.md
index bb479e3..7633f40 100644
--- a/guides/mrz-scanner.md
+++ b/guides/mrz-scanner.md
@@ -33,7 +33,7 @@ The trial license can be renewed via the [customer portal](https://www.dynamsoft
If you are fully satisfied with the solution and would like to move forward with a full license, please contact the [Dynamsoft Sales Team](https://www.dynamsoft.com/company/contact/).
-## Quick Start - Hello World
+## Quick Start - Including the Library
As mentioned previously, the purpose of this guide is to help you implement a Hello World application using the MRZ Scanner solution. To showcase this, we will be using vanilla JS. You can find the full code in the [samples Github repo](https://github.com/Dynamsoft/mrz-scanner-javascript).
@@ -49,21 +49,21 @@ The simplest way to include the SDK is to use either the [**jsDelivr**](https://
- jsDelivr
```html
-
+
```
- UNPKG
```html
-
+
```
When using a framework such as **React**, **Vue** or **Angular**, we recommend adding the package as a dependency using a package manager such as **npm** or **yarn**:
```sh
- npm i dynamsoft-mrz-scanner@2.1.0 -E
+ npm i dynamsoft-mrz-scanner@3.0.0 -E
# or
- yarn add dynamsoft-mrz-scanner@2.1.0 -E
+ yarn add dynamsoft-mrz-scanner@3.0.0 -E
```
> [!WARNING]
@@ -78,7 +78,7 @@ Below is the complete Hello World sample page that uses the precompiled script s