Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
d9a5345
Fix broken links, mismatched H1s, and orphaned phrasing across FAQ docs
lyzhang0113 Aug 3, 2026
62abbd9
Fix stray double-space in Python barcode-format sample
lyzhang0113 Aug 3, 2026
1046cdb
Fix stale enableMultiFrameCrossFilter default in MRZ performance FAQ
lyzhang0113 Aug 3, 2026
483ff5a
Fix npm version-check commands and package names in check-current-ver…
lyzhang0113 Aug 3, 2026
805a4c6
Link getVersion API reference in v11 check-current-version section
lyzhang0113 Aug 3, 2026
b7f9a84
Fix Java sample missing 'new' in check-current-version FAQ
lyzhang0113 Aug 3, 2026
7605815
Remove Aztec-code archive duplicate; unlink onFrameRead archive page
lyzhang0113 Aug 4, 2026
89d53d0
Exclude archived FAQ directories from the Jekyll build
lyzhang0113 Aug 4, 2026
76e386c
Merge pull request #55 from dynamsoft-docs/archive-cleanup
lyzhang0113 Aug 4, 2026
002c23d
Turn README.md into a plain repo-contributor README, exclude from build
lyzhang0113 Aug 4, 2026
18d1366
Correct README scope: this is the all-Dynamsoft-products FAQ site
lyzhang0113 Aug 4, 2026
5fd1726
Split FAQ-authoring conventions out of README.md into AGENTS.md
lyzhang0113 Aug 4, 2026
cfa3e7d
Remove stray '<< Back to FAQ index' links missed by a prior cleanup
lyzhang0113 Aug 4, 2026
c8c07e0
Align H1, frontmatter title, and index link text for domain-binding FAQ
lyzhang0113 Aug 4, 2026
f6753b3
Fix HTTPs -> HTTPS capitalization in frontmatter title/description
lyzhang0113 Aug 4, 2026
6dbb07e
Fix check-camera.md index link text to match its actual content
lyzhang0113 Aug 4, 2026
4cde0dd
Merge remote-tracking branch 'origin/preview' into faq-docs-quality-pass
lyzhang0113 Aug 18, 2026
1cc8e9a
Fix code-fence and frontmatter/H1 mismatches from PR review
lyzhang0113 Aug 18, 2026
2780f7a
Merge pull request #30 from dynamsoft-docs/faq-docs-quality-pass
lyzhang0113 Aug 18, 2026
ee621d8
Exclude bare license/ path from sitemap
lyzhang0113 Aug 18, 2026
85c59c3
Merge pull request #60 from dynamsoft-docs/fix-license-sitemap-orphan
lyzhang0113 Aug 18, 2026
629a967
Apply suggestions from code review
claire-chan Aug 25, 2026
4a4e1cc
Consolidate avoid-incorrect-barcode-results FAQs into one canonical a…
lyzhang0113 Sep 2, 2026
4701d49
Merge pull request #61 from dynamsoft-docs/worktree-merge-avoid-incor…
lyzhang0113 Sep 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Agent guide: writing and wiring FAQ articles

This file is for AI agents (and anyone else) authoring or editing FAQ content in this repo. See `README.md` for what this repo is and how it's built.

## Adding a new article

Create a Markdown file in the right product/topic directory (see "Directory map" below) with this frontmatter and structure:

```markdown
---
layout: default-layout
title: <SEO-facing page title>
keywords: <comma-separated keywords>
description: <SEO-facing description, often the question itself>
needAutoGenerateSidebar: false
---

# <The actual question, phrased as a question>

Answer content...
```

Rules:

- **Always include the H1.** It must be the real question the article answers — not a changelog-style heading, not omitted. If you're not sure how to phrase it, check the link text used for this article in its directory's `index.md`; that's the canonical phrasing.
- **Link it from `index.md`.** Every subdirectory (`barcode-reader/general/`, `barcode-reader/web/configuration/`, `mrz-scanner/general/`, etc.) has an `index.md` that lists every article in that section. A new article with no entry there is orphaned — it exists but no one can navigate to it. Add a bullet there when you add the file, and remove the bullet if you remove the file.
- **Internal links use `.html`, not `.md`.** Link to sibling/other articles as `some-page.html` (Jekyll serves the built output), and to a parent-directory archive as `../archive/some-page.html`, etc. A link ending in `.md` will not resolve on the live site.
- **Don't add "back to index" links inside articles.** They were deliberately removed repo-wide; the sidebar/index already provides navigation.
- **Images** go through a site variable per product/edition — `{{site.dbr_web_assets}}`, `{{site.dbr_mobile_assets}}`, `{{site.dbr_server_assets}}` (defined in `_config.yml`), pointing at that edition's `assets/` directory. Before referencing an image, confirm the file actually exists at that path — a stale or placeholder filename (e.g. a literal `undefined.png`) will silently 404.
- **Write the answer as a direct statement, not a raw Q&A fragment.** Don't leave phrasing like "Yes — ..." or "This can be expanded ..." floating with no visible question or antecedent above it — the H1 is the question; the body should read as its answer, not as a leftover snippet.
- **Don't duplicate a section under a second heading.** If a "what's new"/changelog-style heading and a "how to" heading right below it cover the same ground, merge them.

## Directory map

- `barcode-reader/general/` — cross-edition Barcode Reader FAQs
- `barcode-reader/mobile/`, `barcode-reader/server/`, `barcode-reader/web/` — edition-specific Barcode Reader FAQs, each split into topic subdirectories (`configuration/`, `capabilities/`, `debug/`, `scan-setting/`, etc.)
- `mrz-scanner/general/` — MRZ Scanner FAQs
- `license/` — licensing FAQs shared across products

## Archived content (`*/archive/*`)

Directories named `archive` under `barcode-reader/{mobile,server,web}/` hold historical, version-pinned content (e.g. `-v9.6.40`, `-v10.4.2000` snapshots). They are:

- Excluded from the Jekyll build via `_config.yml`'s `exclude:` list — not hosted, not in `sitemap.xml`.
- Not linked from any live index or sidebar, and shouldn't be. Don't add new links into an `archive/` directory from a live page.
- Not to be "modernized" — if you're editing a file in `archive/`, fix only structural issues (a truly broken build, a factual error introduced by your own change), not stale APIs or old terminology; that staleness is the point.

If you find yourself wanting to *add* content to an archive directory, it almost certainly belongs in the live directory instead.

## Before finishing

Run the link checker from the repo root and fix anything it flags in files you touched:

```bash
python check_links.py
```
87 changes: 11 additions & 76 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,84 +1,19 @@
---
layout: default-layout
title: Dynamsoft Capture Vision FAQ
keywords: faq, capture vision, dcv, dynamsoft, barcode reader, mrz scanner
description: Dynamsoft Capture Vision FAQ Documentation
needAutoGenerateSidebar: false
noTitleIndex: true
---
# Dynamsoft FAQ

# Dynamsoft Capture Vision FAQ
Source for the FAQ site covering Dynamsoft's products, published at [dynamsoft.com/faq](https://www.dynamsoft.com/faq). This repo holds the Barcode Reader, MRZ Scanner, and licensing FAQs; Dynamic Web TWAIN (a separate product line, not part of Capture Vision) has its own FAQ section linked from the homepage (`index.md`) but sourced from a different repo.

Select a product below to browse its FAQs.
## Writing or editing an article

<!-- Responsive 2x2-style grid (wraps to 1xN on small screens) -->
<style>
.faq-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
gap: 20px;
margin: 24px 0 8px 0;
}
.faq-tile {
display: block;
text-decoration: none;
padding: 28px 24px;
border-radius: 16px;
border: 1px solid rgba(0,0,0,0.06);
box-shadow: 0 6px 16px rgba(0,0,0,0.06);
transition: transform 0.08s ease, box-shadow 0.12s ease, border-color 0.12s ease;
background: #fff;
}
.faq-tile:hover,
.faq-tile:focus {
transform: translateY(-2px);
box-shadow: 0 10px 22px rgba(0,0,0,0.10);
border-color: rgba(0,0,0,0.12);
outline: none;
}
.faq-tile h2 {
margin: 0 0 8px 0;
font-size: 1.25rem;
line-height: 1.2;
}
.faq-tile p {
margin: 0;
color: #444;
}
.faq-tile .eyebrow {
display: inline-block;
font-size: 0.8rem;
letter-spacing: .06em;
text-transform: uppercase;
color: #666;
margin-bottom: 6px;
}
.faq-tile .emoji {
font-size: 1.35rem;
margin-right: .35rem;
}
See [`AGENTS.md`](AGENTS.md) for the FAQ article structure, frontmatter, linking, and archive-directory conventions.

@media (min-width: 720px) {
.faq-grid {
grid-template-columns: repeat(2, 1fr);
}
}
</style>
## Building and deploying

<div class="faq-grid">
The site is built with Jekyll using a shared theme/layout maintained in [dynamsoft-docs/Docs-Template-Repo](https://github.com/dynamsoft-docs/Docs-Template-Repo), which this repo doesn't include locally. Pushes to `main` and `preview` trigger the CI workflows in `.github/workflows/main.yml`, which build and sync to production and the preview/testing environment respectively.

<!-- Barcode Reader -->
<a class="faq-tile" href="/faq/barcode-reader/index.html" aria-label="Barcode Reader FAQs">
<div class="eyebrow"><span class="emoji">📲</span>Barcode Reader</div>
<h2>Barcode Reader</h2>
<p>General usage, requirements, configuration, and troubleshooting guides.</p>
</a>
## Checking links

<!-- MRZ Scanner -->
<a class="faq-tile" href="/faq/mrz-scanner/index.html" aria-label="MRZ Scanner FAQs">
<div class="eyebrow"><span class="emoji">🛂</span>MRZ Scanner</div>
<h2>MRZ Scanner</h2>
<p>Setup, supported formats, UI customization, and integration examples.</p>
</a>
`check_links.py` crawls the repo's Markdown files and reports broken links. Run it before submitting a change that touches links:

</div>
```bash
python check_links.py
```
18 changes: 18 additions & 0 deletions _config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,15 @@ sad_icon: /faq/assets/img-icon/icon-sad.png
plugins:
- jekyll-sitemap

# Archived, version-pinned FAQ content. Kept in the repo for reference,
# but not built/hosted on the live site and not listed in sitemap.xml.
exclude:
- barcode-reader/mobile/archive
- barcode-reader/server/archive
- barcode-reader/web/archive
# Plain repo-contributor README, not a site page.
- README.md

defaults:
- scope:
path: ""
Expand All @@ -46,6 +55,15 @@ defaults:
path: "Hide_Tree_Page.html"
values:
sitemap: false
- scope:
# license/ is shared content, duplicated at build time under
# /faq/barcode-reader/license/ and /faq/mrz-scanner/license/. Those
# product-scoped URLs are the ones linked from the site and correctly
# highlighted in the sidebar; this bare path has no product context
# for the sidebar to highlight, so keep it out of the sitemap.
path: "license"
values:
sitemap: false
- scope:
path: "barcode-reader/mobile/capabilities"
values:
Expand Down
53 changes: 12 additions & 41 deletions barcode-reader/general/avoid-incorrect-barcode-results.md
Original file line number Diff line number Diff line change
@@ -1,51 +1,22 @@
---
layout: default-layout
title: How to Avoid Incorrect Barcode Scan Results – FAQ
keywords: Dynamsoft Barcode Reader, FAQ, Troubleshooting / User Cases, avoid incorrect barcode results
description: Improve barcode decoding accuracy in Dynamsoft Barcode Reader by configuring minResultConfidence and minBarcodeTextLength.
title: How to Avoid Incorrect Barcode Results?
keywords: Dynamsoft Barcode Reader, FAQ, Troubleshooting / User Cases, avoid incorrect barcode results, minResultConfidence, minBarcodeTextLength
description: Improve barcode decoding accuracy in Dynamsoft Barcode Reader by configuring minResultConfidence and minBarcodeTextLength on SimplifiedBarcodeReaderSettings.
needAutoGenerateSidebar: false
---

# How to avoid incorrect barcode results?

- One method is to raise the value of [minResultConfidence](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/api-reference/interfaces/simplified-barcode-reader-settings.html#minresultconfidence) of the `SimplifiedBarcodeReaderSettings` to a value of 50 or higher. It is set to 30 by default.
- If the issue has to do with the length of the text result, you can try setting a minimum length for the barcode text(s) that are returned by the SDK. By setting the [minBarcodeTextLength](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/api-reference/interfaces/simplified-barcode-reader-settings.html#minbarcodetextlength) property of the `SimplifiedBarcodeReaderSettings`, the SDK can ignore results that are consistently coming out shorter than expected.
`SimplifiedBarcodeReaderSettings` — a sub-parameter of `SimplifiedCaptureVisionSettings` — exposes the same two filtering properties across every edition of Dynamsoft Barcode Reader (Server, Web, and Mobile), under each platform's own API reference, e.g. [C++](https://www.dynamsoft.com/barcode-reader/docs/server/programming/cplusplus/api-reference/simplified-barcode-reader-settings.html) and [JavaScript](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/api-reference/interfaces/simplified-barcode-reader-settings.html):

---

> **Notice (Temporary Issue)**
> This is a known issue in versions 11.0.0 - 11.0.6000 and has been fixed in version 11.2.
>
> As a temporary solution, please set `IncludeTrailingCheckDigit` to `0` in the `BarcodeFormatSpecification` for Code128.
> This will prevent the SDK from returning the trailing check digit.

### CODE_128 decoding returns an extra byte?

When using DBR v11, you may notice that decoding a **CODE_128** barcode returns one extra byte at the end if you call `item.get_bytes()`.

**Cause**
By default, DBR includes the trailing check digit for CODE_128 in the decoded byte results.

**Solution**
Set `IncludeTrailingCheckDigit` to `0` in the `BarcodeFormatSpecification` for Code128.

**Example JSON Configuration**
- **minResultConfidence** – raise this value (default `30`) to require a higher confidence before a result is returned. 50 or higher is a good starting point if you're seeing unreliable reads.
- **minBarcodeTextLength** – set this to the minimum length your barcode text should be; results shorter than this are discarded. For example, if your barcode text should always be at least 10 characters long, set it to `10` so the SDK ignores shorter, likely-incorrect results.

```json
{
"BarcodeFormatSpecificationOptions": [
{
"Name": "bfs1",
"BarcodeFormatIds": [
"BF_CODE_128"
],
"MinResultConfidence": 30,
"RequireStartStopChars": 1,
"ReturnPartialBarcodeValue": 1,
"VerifyCheckDigit": 0,
"IncludeTrailingCheckDigit": 0
}
],
#...Other Settings
}
**Example (JavaScript):**
```javascript
let settings = await router.getSimplifiedSettings('ReadSingleBarcode');
settings.barcodeSettings.minResultConfidence = 40; //setting confidence
settings.barcodeSettings.minBarcodeTextLength = 5; //setting barcodeTextLength
await router.updateSettings('ReadSingleBarcode', settings);
```
11 changes: 0 additions & 11 deletions barcode-reader/general/avoid-incorrect-results.md

This file was deleted.

11 changes: 5 additions & 6 deletions barcode-reader/general/check-current-version.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,10 @@ needAutoGenerateSidebar: false
There are multiple ways to check the version currently being used -

- The first way is to use the [version API](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/api-reference/barcode-reader-module-class.html#getversion). Using this API in the browser console should print out the version of the library being used by the web app.
- If you are using the library via npm or yarn, then you can check the version of the package via

```bash
npm –v dynamsoft-javascript-barcode
```
- If you are using the library via npm or yarn, then you can check the installed version of the package via `npm list`. Note that the npm package has been renamed across major versions:
- Version 11 and above: `npm list dynamsoft-barcode-reader-bundle`
- Version 10: `npm list dynamsoft-barcode-reader`
- Version 9: `npm list dynamsoft-javascript-barcode`

- If you are including the library via the CDN link, then the version number should be mentioned in that reference link.

Expand Down Expand Up @@ -45,7 +44,7 @@ print("Dynamsoft Barcode Reader Version: \(version)")
```
>
```java
BarcodeReaderModule reader = BarcodeReaderModule();
BarcodeReaderModule reader = new BarcodeReaderModule();
String versionInfo = reader.getVersion();
```
>
Expand Down
38 changes: 38 additions & 0 deletions barcode-reader/general/code-128-extra-trailing-byte.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
layout: default-layout
title: CODE_128 Decoding Returns an Extra Byte? – FAQ
keywords: Dynamsoft Barcode Reader, FAQ, Troubleshooting / User Cases, CODE_128, IncludeTrailingCheckDigit
description: Fix Dynamsoft Barcode Reader v11 CODE_128 decoding returning an extra trailing check digit byte by setting IncludeTrailingCheckDigit to 0.
needAutoGenerateSidebar: false
---

# CODE_128 decoding returns an extra byte?

When using DBR v11, you may notice that decoding a **CODE_128** barcode returns one extra byte at the end if you call `item.get_bytes()`.

**Cause**
By default, DBR includes the trailing check digit for CODE_128 in the decoded byte results. This is a known issue in versions 11.0.0 - 11.0.6000 and has been fixed in version 11.2.

**Solution**
Set `IncludeTrailingCheckDigit` to `0` in the `BarcodeFormatSpecification` for Code128. This will prevent the SDK from returning the trailing check digit.

**Example JSON Configuration**

```json
{
"BarcodeFormatSpecificationOptions": [
{
"Name": "bfs1",
"BarcodeFormatIds": [
"BF_CODE_128"
],
"MinResultConfidence": 30,
"RequireStartStopChars": 1,
"ReturnPartialBarcodeValue": 1,
"VerifyCheckDigit": 0,
"IncludeTrailingCheckDigit": 0
}
],
#...Other Settings
}
```
2 changes: 1 addition & 1 deletion barcode-reader/general/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Please use the links below to find answers to common questions and configuration

- [Does Dynamsoft Barcode Reader (DBR) support PDF?](dbr-supports-pdf.html)
- [How to avoid incorrect barcode results?](avoid-incorrect-barcode-results.html)
- [How to filter incorrect results with the barcode result length?](avoid-incorrect-results.html)
- [CODE_128 decoding returns an extra byte?](code-128-extra-trailing-byte.html)
- [Check Current Version](check-current-version.html)
- [Different Editions of DBR](different-editions-of-dbr.html)
- [How to scan US driver's license?](scan-us-drivers-license.html)
Expand Down
2 changes: 0 additions & 2 deletions barcode-reader/mobile/archive/android/debug-mode.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ needAutoGenerateSidebar: true

# How to use Debug Mode in Barcode Scanner X?

## Debug Mode in BarcodeScannerX(Android)

If you are experiencing app crashes in your own application or you’ve come across some barcode(s) that you can’t read and you have exhausted all of the other troubleshooting methods, Debug Mode of the [BarcodeScannerX](https://www.dynamsoft.com/barcode-reader/sdk-mobile/#appDemo) demo app can help offer one last effort to resolve these issues.

This next section will explain how to toggle on debug mode on the demo app, and will then dive into how to collect crash logs and/or image samples.
Expand Down
2 changes: 1 addition & 1 deletion barcode-reader/mobile/archive/android/index-v10.4.2000.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ noTitleIndex: true

10. [Can I reduce the size of the final Android app?](reduce-final-size.md)

11. [How to use Debug Mode in Barcode Scanner X?](debug-mode-barcodescannerx.md)
11. [How to use Debug Mode in Barcode Scanner X?](debug-mode.md)

12. [How to prevent project build failure after shrinking code?](proguard.md)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@ needAutoGenerateSidebar: true

# How can I use CameraX or third-party camera modules with Dynamsoft Barcode Reader?

You can read this [article](../samples/no-camera-enhancer.md) on how to use the video stream via CameraX such that the output frames from `CameraX` are converted into `imageData` which can be used as input for the barcode reader. If you would like to see a quick code snippet on how to convert these frames from `CameraX` into `ImageData`, please see it <a href="https://www.dynamsoft.com/barcode-reader/docs/mobile/programming/android/api-reference/primary-decode.html?ver=latest#get-imagedata-from-android-camera2" target="_blank">here</a>.
You can read this [article](../../configuration/no-camera-enhancer.md) on how to use the video stream via CameraX such that the output frames from `CameraX` are converted into `imageData` which can be used as input for the barcode reader. If you would like to see a quick code snippet on how to convert these frames from `CameraX` into `ImageData`, please see it <a href="https://www.dynamsoft.com/barcode-reader/docs/mobile/programming/android/api-reference/primary-decode.html?ver=latest#get-imagedata-from-android-camera2" target="_blank">here</a>.

> **_NOTE:_** The Barcode Reader decodes barcodes from an `ImageData` object. The `ImageData` object stores the pixel buffer, width, height, stride and pixel format of the image. *However, it is always recommended to use DBR in conjunction with DCE for the best results and performance*.
Loading