Lihang Xu
Lihang Xu is a technical author at Dynamsoft, writing developer tutorials, sample code, and SDK benchmarks on barcode scanning, document capture, and imaging technologies.
-
The article shares how to scan documents in an Oracle APEX application using Dynamic Web TWAIN.
-
Learn how to access a local USB scanner from WSL2 on Windows, run the SANE backend in Linux, and build a browser-based document scanning page with Dynamic Web TWAIN — no Windows TWAIN drivers required.
-
Learn how to embed PDF in HTML using native iframe, embed, and object tags, or JavaScript libraries like Dynamsoft Document Viewer. Compare all methods for cross-browser, mobile-responsive, and annotation-capable PDF embedding.
-
Build a command-line document scanner script on Windows, macOS, and Linux using TWAIN, WIA, SANE, ICA, and eSCL with Python and Swift — plus Dynamic Web TWAIN's cross-platform RESTful API.
-
Learn how to integrate a barcode scanner in .NET MAUI HybridWebView using Dynamsoft Barcode Reader's JavaScript SDK. Runs on Windows, Android, and iOS from a single codebase.
-
Learn how to build a mobile web app that uses Dynamsoft Document Viewer and Document Normalizer to scan, resize, and wirelessly print documents from a phone camera using JavaScript.
-
Learn how to scan and parse vCard QR codes in JavaScript using Dynamsoft Barcode Reader. This tutorial covers vCard QR code generation from a contact form and live camera scanning with full source code.
-
Learn how to implement adaptive thresholding in JavaScript using HTML5 Canvas. Covers local mean thresholding, O(N) Integral Image optimization, and production-quality binarization with Dynamsoft Barcode Reader for barcode scanning on shadowed or uneven images.
-
Step-by-step Android tutorial: scan passport and ID card MRZ using a USB camera with Dynamsoft Label Recognizer. Covers UVCCamera integration, preview capture, and MRZ parsing for Android kiosk and tablet setups.
-
Learn how to build a cross-platform Electron desktop app that scans passport MRZ data using Dynamsoft Label Recognizer — complete with camera capture, IPC messaging, and parsed field extraction.
-
Learn how to integrate Dynamsoft Barcode Reader into a Salesforce Lightning Web Component (LWC) using JavaScript, iframe, and postMessage for QR code and barcode scanning in CRM workflows.
-
Build a QR code scanner shared between Android and iOS with Kotlin Compose Multiplatform and Dynamsoft Barcode Reader v11: CaptureVisionRouter with CameraX on Android, AVFoundation with a Dynamsoft CocoaPods pod and Kotlin/Native cinterop on iOS, including a bounding-box overlay.
-
Learn how to integrate a client-side document scanner in a Nuxt.js app using Dynamic Web TWAIN. Covers SSR setup with ClientOnly, TWAIN/WIA/ESCL scanning, and PDF export.
-
Learn how to create a custom document scanning dataset using Python and OpenCV — capture real photos, save quadrilateral annotations, and synthesize training images for edge detection and deep learning.
-
Learn how to read DotCode barcodes in a browser using Dynamsoft Barcode Reader's JavaScript SDK — covering live camera scanning, image file decoding, and the custom template needed for tobacco-industry DotCode marks.
-
Learn how to flatten (burn) PDF annotations in JavaScript using Dynamsoft Document Viewer — with code examples for flattening all annotations or selectively flattening individual ones.
-
Learn how to encrypt, decrypt, and password protect PDF files entirely client-side in JavaScript using Dynamsoft Document Viewer — with code examples for loading, unlocking, and saving secured PDFs.
-
Step-by-step tutorial to implement a QR code reader and barcode scanner in Nuxt.js using Dynamsoft Barcode Reader with live webcam access.
-
Step-by-step Vue.js tutorial: access the device camera, detect document borders in real time, crop and enhance scanned pages, and export a multi-page PDF — all in the browser with Dynamsoft Mobile Web Capture.
-
Learn how to compress images in the browser with JavaScript by adjusting resolution, color depth, JPEG quality, and converting to WebP or PDF formats using Dynamsoft Document Viewer.
-
Step-by-step React tutorial: capture documents via the browser camera, detect borders automatically, crop and enhance, then export to PDF using Dynamsoft Mobile Web Capture SDK.
-
Learn how to drag and drop to reorder scanned document pages in JavaScript using Dynamsoft Document Viewer and the HTML5 Drag and Drop API, with touch-device support and full source code.
-
Step-by-step tutorial to build a Next.js client-side ID card scanner component that reads MRZ and PDF417 barcodes from passports, driver's licenses, and ID cards via camera using Dynamsoft Capture Vision SDK.
-
The article talks about how to control camera focus with JavaScript using getUserMedia in a web application. It can adjust the focus mode, the focus distance and support tap to focus.
-
Step-by-step Android tutorial: stream an IP camera via RTSP with ExoPlayer and scan barcodes in real time using Dynamsoft Barcode Reader.
-
Learn how to remove noise from scanned documents, apply black-and-white image filters, and repair punch holes using JavaScript inpainting with the Dynamsoft Document Viewer SDK.
-
Step-by-step guide to building a JavaScript barcode scanner for EAN-13, UPC-A, EAN-8, UPC-E, and their 2-digit and 5-digit add-on codes using Dynamsoft Barcode Reader SDK.
-
Step-by-step tutorial to build a Vue 3 PDF viewer with annotation support using Dynamsoft Document Viewer. Create, view, and annotate PDFs in the browser.
-
Step-by-step tutorial to build a React PDF viewer and annotator with TypeScript using Dynamsoft Document Viewer. Create, view, and annotate PDFs in a web app.
-
Step-by-step tutorial to build a shipping label generator in JavaScript using Dynamsoft Document Viewer and bwip-js. Generate 4×6 labels with QR codes, export to PDF, and print directly from the browser.
-
Learn how to add PDF annotations — rectangles, text, stamps, ink, and redaction — to scanned documents using JavaScript and Dynamsoft Document Viewer. Includes code for programmatic annotation, saving, and loading annotated PDFs.
-
Step-by-step tutorial to build a vanilla JavaScript pan and zoom image viewer. Covers mouse-wheel zoom, touch pinch-to-zoom, and drag-to-pan using DOM scroll or Dynamsoft Document Viewer SDK.
-
Learn how to read the Exif orientation tag and programmatically rotate images on Android (Java) and iOS (Swift) so photos display correctly in your document scanning app.
-
Learn how to preview and select multiple images in a JavaScript document viewer using Ctrl+click and Shift+click selection modes, with Dynamsoft Document Viewer SDK and a from-scratch implementation.
-
Learn how to scan documents in batch and auto-split them into separate PDFs using barcode separator sheets with Dynamic Web TWAIN and Dynamsoft Barcode Reader in JavaScript.
-
Step-by-step guide to building an Oracle APEX MRZ scanner plugin using Dynamsoft Label Recognizer — read passports and ID cards from a camera in your low-code APEX app.
-
Build a Salesforce Lightning Web Component that merges image attachments into a single PDF using Dynamsoft Document Viewer and an iframe-based WASM approach.
-
Learn how to convert and merge multiple images into one PDF entirely client-side using JavaScript and the Dynamsoft Document Viewer SDK — no server upload required.
-
Learn how to auto-correct scanned document orientation in JavaScript. Use the scanner's TWAIN ICAP_AUTOMATICROTATE capability or detect and rotate misoriented pages with OCR (Dynamic Web TWAIN OCR add-on or Tesseract.js).
-
Step-by-step tutorial to merge multiple UIImages into a single PDF on iOS using Swift. Covers photo gallery picking, auto document cropping, color mode selection, and PDF export with Dynamsoft Document Normalizer.
-
Step-by-step LWC tutorial: build a document scanner Lightning Web Component in Salesforce using Dynamic Web TWAIN SDK. Scan, rotate, edit, and save as PDF.
-
Step-by-step guide to building a Salesforce Lightning Web Component (LWC) that accesses the device camera, captures a document image, crops it server-side, and stores the result on a Lead record.
-
How to automatically zoom the camera to scan tiny or distant QR codes in a web app, using dynamsoft-barcode-reader-bundle v11 and Dynamsoft Camera Enhancer's EF_AUTO_ZOOM or manual getUserMedia zoom control.
-
Step-by-step tutorial on controlling camera zoom in a JavaScript web app using the getUserMedia API and Dynamsoft Camera Enhancer, with cross-browser fallback via CSS and WebGL.
-
Detect duplicate scanned document images in JavaScript using Tesseract.js OCR and Levenshtein distance. Includes TypeScript code, online demo, and full source code.
-
Step-by-step tutorial to generate QR codes dynamically in the browser using JavaScript, Pyodide, and the Python segno library. Supports byte mode, structured append, custom error correction levels, and text encoding selection.
-
Build a TypeScript library to extract raw byte arrays from QR codes and barcodes in JavaScript using Dynamsoft Barcode Reader — supports numeric, alphanumeric, byte, Kanji and structured append modes.
-
Step-by-step guide to generating QR codes in Python using the segno library. Covers all five encoding modes — numeric, alphanumeric, byte, kanji, and structured append — with working code examples.
-
Step-by-step tutorial to build a Zapier barcode scanner integration using Dynamsoft Barcode Reader, a Flask polling server, and JavaScript — scan ISBN barcodes and trigger automated workflows to Notion, Google Sheets, and more.
-
Step-by-step tutorial to build a reusable JavaScript image filter library using the Canvas API. Covers grayscale, sepia, invert, and black-and-white filters with OTSU thresholding, plus integration with Dynamsoft Document Viewer.
-
The article talks about how to build an ID card scanner with React Native, Vision Camera and Dynamsoft Label Recognizer.
-
Learn how to use a JSON-based Domain-Specific Language (DSL) to configure document scanning, barcode reading, and text recognition tasks in Dynamsoft Capture Vision — with cross-platform template reuse.
-
Learn how to automatically assess scanned document image quality — detect blur, skew, overexposure, and aspect ratio issues using OpenCV.js, Tesseract.js, and Dynamic Web TWAIN in a JavaScript web app.
-
Learn how to binarize an image using the JavaScript Canvas API with manual and OTSU automatic thresholding, plus a Dynamic Web TWAIN approach for enterprise-scale document processing.
-
Learn three ways to convert an image to grayscale in JavaScript — CSS filters, HTML5 Canvas pixel manipulation, and the Dynamic Web TWAIN SDK — with full source code and online demo.
-
Learn three ways to flip or mirror an image horizontally and vertically in JavaScript using CSS transforms, HTML5 Canvas 2D context, and Dynamic Web TWAIN for batch document processing.
-
Learn two ways to resize images client-side with JavaScript before uploading — using the HTML5 Canvas API for quick resizing and Dynamic Web TWAIN for batch document processing without quality loss.
-
Learn three ways to rotate and deskew images in JavaScript — CSS transform, HTML5 Canvas, and Dynamic Web TWAIN SDK — with full source code and edge-case handling.
-
Learn how to detect document boundaries and correct perspective distortion in the browser using OpenCV.js. Includes live camera scanning, auto-capture, and polygon editing with Dynamsoft Document Viewer.
-
Learn how to capture high-resolution photos in the browser using JavaScript getUserMedia, the Image Capture API, and HTML Media Capture — up to 4K resolution for document scanning and barcode reading.
-
Step-by-step guide to convert PDF pages to JPG images in the browser using HTML5 and JavaScript with Dynamic Web TWAIN. Covers PDF rasterization, configurable DPI, annotation rendering, and encrypted PDF support.
-
Build an Android MRZ text scanner in Jetpack Compose with CameraX and Dynamsoft MRZ Scanner (mrzscannerbundle 3.4.1300): feed camera frames and picked images into the Capture Vision Router's video pipeline, draw the detected MRZ lines as an overlay, and read MRZ from both live camera and static images.
-
Step-by-step Java tutorial: use OCR to add an invisible text overlay to scanned images and generate searchable PDFs with PDFBox.
-
Step-by-step JavaScript tutorial for building a web barcode scanner with OpenCV.js — covers QR code detection, EAN-13 decoding, and live camera scanning.
-
Step-by-step tutorial to build a reusable document scanner web component using LitElement and Dynamic Web TWAIN SDK — scan, view, and save documents as PDF from any browser.
-
Learn how to reduce scanned document file size programmatically by adjusting DPI, bit depth, color mode, and image compression format using JavaScript and Dynamic Web TWAIN.
-
Learn how to auto-deskew scanned document images using OpenCV and Python. This step-by-step tutorial covers skew angle detection via contour analysis, affine rotation, and a browser-based alternative with Dynamic Web TWAIN.
-
Step-by-step JavaScript tutorial to capture and record video from a browser webcam using the WebRTC getUserMedia API and the RecordRTC library, with camera selection and resolution control.
-
Generate synthetic MRZ passport images for OCR training using Python. Create mock passport images for OCR testing with inpainting, random MRZ generation, and text rendering.
-
Build an Android document scanner in Jetpack Compose that acquires images from document scanners (Dynamic Web TWAIN Service REST API) and cameras, then runs document boundary detection and perspective correction with Dynamsoft Document Normalizer (capturevisionbundle 3.6.2000).
-
Learn how to scan documents in Java using the REST APIs of Dynamic Web TWAIN Service. This step-by-step tutorial builds a cross-platform JavaFX desktop scanner app supporting TWAIN, WIA, eSCL, SANE, and ICA protocols with PDF export.
-
Step-by-step guide to deploying Dynamsoft Barcode Reader on AWS Lambda with Python. Create a serverless REST API that decodes barcodes and QR codes from images via API Gateway.
-
Build a WinUI 3 barcode scanner in C# with the Dynamsoft.DotNet.BarcodeReader.Bundle NuGet package. Decode barcodes from image files, PDF documents, and the webcam using the CaptureVisionRouter API.
-
Build a browser-based GS1 barcode scanner that reads GS1 DataBar, DataBar Expanded, GS1 DataMatrix, GS1 QR Code, GS1-128 and ITF-14 symbols, splits the element string with the application identifier table, verifies the GTIN check digit, and reports each data element — GTIN, expiry date, batch/lot, serial — as structured data....
-
Step-by-step tutorial to build a client-side online image converter in JavaScript using Dynamic Web TWAIN. Convert between BMP, JPEG, PNG, TIFF, and PDF with no server required.
-
Learn how to render and display multi-page TIFF images in the browser using JavaScript and Dynamic Web TWAIN with WebAssembly-powered libTIFF.
-
Build a browser-based document scanner that uploads scanned PDFs to a WebDAV server like Nextcloud using Dynamic Web TWAIN JavaScript SDK and a Python Flask backend.
-
Learn how to build an Android QR code scanner in Jetpack Compose with Dynamsoft Barcode Reader and Camera Enhancer (barcodereaderbundle 11.6.2000) - live CameraView preview, real-time decoding with the Capture Vision Router, and results shown directly in the Compose UI.
-
Step-by-step guide to building a reusable image cropper web component with Stencil.js. Supports rectangular and polygonal selections, perspective transformation, and document border detection using Dynamsoft Document Normalizer.
-
Step-by-step tutorial to add barcode scanning to a Glide no-code app using Dynamsoft Barcode Reader JavaScript SDK, with computed columns for ISBN price lookup.
-
Step-by-step JavaScript tutorial: scan documents with Dynamic Web TWAIN, run OCR with Tesseract.js, and add full-text search using FlexSearch with IndexedDB persistence.
-
Build an offline-capable document scanning web app using Dynamic Web TWAIN and IndexedDB. Scan documents, store images client-side with localForage, and export to PDF.
-
Step-by-step JavaScript tutorial: scan documents with Dynamic Web TWAIN, extract text via OCR, and query scanned content using the ChatGPT API and LangChain vector store.
-
Step-by-step JavaScript tutorial: scan paper documents in the browser with Dynamic Web TWAIN, then extract text using Tesseract.js OCR — includes batch processing and downloadable results.
-
Step-by-step tutorial to build a reusable PDF viewer web component using Stencil.js and Dynamic Web TWAIN. Includes zoom controls, page navigation, thumbnail viewer, fullscreen mode, and document scanning.
-
Step-by-step tutorial to build a document scanning web app in Next.js using Dynamic Web TWAIN SDK. Scan documents from a physical scanner, preview in a viewer, and save as PDF.
-
The article shares how to scan barcodes in an Oracle APEX application using Dynamsoft Barcode Reader.
-
The article shares how to scan documents in an Oracle APEX application using Dynamic Web TWAIN.
-
Build a barcode and QR code scanner in Next.js with the Dynamsoft Barcode Reader bundle, server-side license injection, and a client-only camera component.
-
Build a web app that scans NFC tags and barcodes in the browser, then uses the value read from an NFC tag as the AES key to decrypt the content stored in a barcode.
-
Step-by-step tutorial to integrate TWAIN document scanning into a Claris FileMaker Pro 19 custom app using Dynamic Web TWAIN and JavaScript in the web viewer.
-
Step-by-step tutorial to build a Manifest V3 Chrome extension that adds document scanning to any web page using Dynamic Web TWAIN and JavaScript.
-
Step-by-step tutorial to integrate document scanning into a Quasar Vue.js Electron desktop app using Dynamic Web TWAIN — scan, edit, OCR, and save documents as PDF.
-
Build an HTML5 IMEI scanner with Dynamsoft Capture Vision: scan Code 128 barcodes or recognize printed digits with OCR, then validate the Luhn check digit in JavaScript.
-
Learn how to scan documents and save them as PDF files directly from a web browser using JavaScript and Dynamic Web TWAIN, with page size, compression, and metadata controls.
-
Step-by-step Swift tutorial: build an iOS document scanner app using AVFoundation for camera capture and Dynamsoft Document Normalizer for real-time edge detection, perspective correction, and document normalization.
-
Step-by-step guide to building an Angular document scanning desktop app with PWA offline support using Dynamic Web TWAIN — scan, edit, rotate, and save documents as PDF.
-
Learn how to scan documents and save them as multi-page TIFF files from a browser using Dynamic Web TWAIN in JavaScript. Covers TIFF compression types, custom tags, and JPEG quality settings.
-
Step-by-step guide to building a cross-platform desktop document scanning app with Tauri and JavaScript using Dynamic Web TWAIN SDK for scanner integration, viewing, and PDF export.
-
Build a Python Flask server that automates web-based document scanning using Selenium WebDriver in headless Chrome mode with Dynamic Web TWAIN, exposing HTTP API endpoints for scanner control from any device.
-
Record videos with CameraX in Kotlin and read barcodes and QR codes from video files on Android with Dynamsoft Barcode Reader (barcodereaderbundle 11.6.2000): decode while playing with PixelCopy or grab every frame with FFmpeg/JavaCV.
-
Step-by-step tutorial: host Blazor in a WinForms desktop app using BlazorWebView and Dynamic Web TWAIN to scan, view, and save documents as PDF.
-
Java WebView document scanning tutorial: integrate TWAIN scanners in a JavaFX desktop app using Dynamic Web TWAIN, Embedded Jetty, and the Webview library.
-
PDF417 barcode scanner SDK performance benchmark — Dynamsoft Barcode Reader achieves 95.45% accuracy vs ML Kit (61%), ZXingCPP (52%), and Apple Vision (31%) on 88 real-world PDF417 images.
-
Step-by-step tutorial to build an Android barcode scanner using an external USB camera with the UVCCamera library and Dynamsoft Barcode Reader SDK.
-
A 2026 Data Matrix reading benchmark on a public dataset of 112 codes. Dynamsoft Barcode Reader reaches 100% with its scenario templates — the only engine to decode every code — and leads out-of-the-box at 83.04%, ahead of libdmtx (72.32%) and zxing-cpp (65.18%).
-
Learn how to transfer files between devices with animated QR codes. Build a pure-JavaScript animated QR code generator and a Dynamsoft Barcode Reader v11 CaptureVisionRouter scanner that reassembles the data from a live camera stream.
-
Independent accuracy benchmark comparing commercial vs. open-source barcode scanners (Dynamsoft, Scandit, ZXing, ZBar) on 3,484 EAN-13 images — with reading rate, precision, and blur-tolerance results.
-
Open-source vs commercial QR code reader benchmark comparing Dynamsoft, ZXing, ZBar, BoofCV, and OpenCV WeChat across 536 images in 16 categories. Includes Python QR code reader performance data, reading rates, and decode speed.
-
Learn how to detect and decode EAN-13 barcodes in images using Python and OpenCV with thresholding, contour detection, and checksum verification.
-
Learn how to use the JavaScript Clipboard API with Dynamic Web TWAIN to copy scanned documents to the clipboard and paste images from the clipboard into a web scanning application.
-
Learn how to implement web-based document scanning over a shared network. Compare SANE, eSCL, WSD, and Dynamic Web TWAIN Remote Scan for browser-based LAN scanning.
-
Step-by-step tutorial to build a JavaScript scan-to-email web app using Dynamic Web TWAIN for browser document scanning, Python Flask for SMTP email delivery, and Dropbox for large file sharing.
-
Learn how to scan documents in the browser with Dynamic Web TWAIN and automatically upload them to OneDrive or Dropbox using OAuth and cloud storage APIs in JavaScript.
-
Learn how to access a USB document camera from an HTML5 web page and capture documents with edge detection using Dynamic Web TWAIN's JavaScript camera add-on.
-
Learn why QR codes and barcodes fail to scan at a distance and how higher resolution helps: using the camera's highest video resolution, taking photos instead of live scanning, scale-up, and super resolution - with measured scanning distances from the Faraway_Scan experiment.
-
Learn why QR codes and barcodes fail to scan at a distance and how camera zoom (manual and auto) improves the read rate: digital zoom, refocusing, zoom factors, and the auto-zoom feature of Dynamsoft Camera Enhancer, with the Faraway_Scan demo app.
-
Create an Android barcode scanner with CameraX: preview and image-analysis use cases, decoding the NV21 frame buffer with Dynamsoft Barcode Reader (barcodereaderbundle 11.6.2000), and camera controls such as zoom, torch, and focus.
-
Dynamsoft offers a lightweight QR code reader for web browsers through Dynamsoft Barcode Reader v11. Learn how to scan QR codes in JavaScript and HTML5 with single-scan, continuous multi-barcode scanning, QR-code-only filtering, and camera UI customization - no app install required.
-
Step-by-step HTML5 mobile document scanning tutorial using Dynamic Web TWAIN SDK — capture, edit, and save documents from mobile cameras with JavaScript.