Open-source pure Javascript implemented mobile document scanner. Powered with opencv.js

Available on npm or via cdn

**Features**: - paper detection & highlighting - paper scanning with distortion correction | Image Highlighting | Scanned Result | | ------------------------------------------------- | ----------------------------------------------- | | | | | | | ## Quickstart ### Import npm: ```js $ npm i jscanify import jscanify from 'jscanify' ``` cdn: ```html ``` ### Highlight Paper in Image ```html ``` ```js const scanner = new jscanify(); image.onload = function () { const highlightedCanvas = scanner.highlightPaper(image); document.body.appendChild(highlightedCanvas); }; ``` ### Extract Paper ```js const scanner = new jscanify(); const paperWidth = 500; const paperHeight = 1000; image.onload = function () { scanner.extractPaper(image, paperWidth, paperHeight, (resultCanvas) => { document.body.appendChild(resultCanvas); }); }; ``` ### Highlighting Paper in User Camera The following code continuously reads from the user's camera and highlights the paper: ```html ``` ```js const scanner = new jscanify(); const canvasCtx = canvas.getContext("2d"); const resultCtx = result.getContext("2d"); navigator.mediaDevices.getUserMedia({ video: true }).then((stream) => { video.srcObject = stream; video.onloadedmetadata = () => { video.play(); setInterval(() => { canvasCtx.drawImage(video, 0, 0); const resultCanvas = scanner.highlightPaper(canvas); resultCtx.drawImage(resultCanvas, 0, 0); }, 10); }; }); ``` ### Notes - for optimal paper detection, the paper should be placed on a flat surface with a solid background color - we recommend wrapping your code using `jscanify` in a window `load` event listener to ensure OpenCV is loaded