When to Use
Use when the user wants to scan a document from a photo, crop the page automatically, fix perspective, or make an image look like it came from a flatbed scanner.
Load this skill when the request sounds like:
- "scan this document"
- "crop the page edges"
- "make this photo look scanned"
- "deskew this paper"
- "clean up this receipt or sheet"
Default Engine
Default to jscanify.
Why this is the default:
- Open source and MIT licensed
- Mature enough to trust for general use
- Works in browser, CDN, npm, and Node-oriented workflows
- Uses OpenCV.js without forcing a native OpenCV install
- Lower friction than mobile-native or commercial SDKs
Do not default to commercial SDKs unless the user explicitly asks for a production mobile SDK or already uses one in their app.
Quick Workflow
- Start with
jscanify, not custom image math. - Detect the page boundary first.
- Extract with perspective correction.
- Review the output visually.
- If edges are wrong, stop and retry with a cleaner input or a manual-corner flow instead of stacking random filters.
Basic Commands
1. Project install
npm install jscanify
2. Zero-global-install local preview
Use CDN scripts in a tiny HTML page and serve it locally:
npx serve .
Load:
<script src="https://docs.opencv.org/4.7.0/opencv.js" async></script>
<script src="https://cdn.jsdelivr.net/gh/ColonelParrot/jscanify@master/src/jscanify.min.js"></script>
3. Core extraction
const scanner = new jscanify();
const resultCanvas = scanner.extractPaper(image, 1600, 2200);
4. Edge preview before crop
const scanner = new jscanify();
const highlightedCanvas = scanner.highlightPaper(image);
Core Rules
1. Browser-first wins
- Prefer the browser or browser-like path first because
jscanifyis strongest there. - Prefer CDN or local project dependency over native OpenCV builds.
- If the user only needs one scan, choose the lowest-friction path.
2. Detect before you "enhance"
- First run boundary detection on the original image.
- Only add grayscale, contrast, or thresholding after edge detection fails.
- Do not overprocess before trying the default extraction path.
3. Expect flat, visible borders
- Best results come from one document on a contrasting background.
- Top-down or near-top-down photos are safer than steep angles.
- Hard shadows, fingers over corners, or white paper on white tables reduce reliability.
4. Preserve the original
- Never overwrite the only copy of the input image.
- Save the corrected export separately.
- If the scan is for legal, accounting, or archive use, keep the original photo too.
5. Manual correction beats fake certainty
- If auto-detection is clearly wrong, do not pretend it succeeded.
- Ask for a better photo or switch to a manual-corner workflow.
- Wrong corners produce worse output than no crop.
Common Traps
- Busy backgrounds can confuse edge detection.
- Low contrast document-on-table shots fail more often than users expect.
- Glare can hide one full edge and make the crop collapse.
- Very curved paper is not a normal document-scan case.
- Receipts with torn edges or shadows often need one retry with a better photo.
- OCR and document scanning are different jobs; scan first, OCR second.
Scope
This skill ONLY:
- Chooses and applies a document-scanning workflow
- Prioritizes
jscanifyby default - Produces cropped, perspective-corrected scan-style images
This skill NEVER:
- Claims OCR accuracy improvements by itself
- Recommends paid SDKs by default
- Reimplements document detection from scratch unless the user explicitly wants that
External Endpoints
| Endpoint | Purpose |
|---|---|
https://docs.opencv.org/ | Load OpenCV.js in browser-first workflows |
https://cdn.jsdelivr.net/ | Load jscanify without global install |
Related Skills
Install with clawhub install <slug> if user confirms:
documents- General document handling after the scan is cleaned.image- Extra image cleanup when the user needs post-processing beyond edge detection.files- File organization, renaming, and export handling after scans are generated.
Feedback
- If useful:
clawhub star scanner - Stay updated:
clawhub sync