{"adoption": {"forks": 465, "observed_at": "2026-08-28T04:03:32.618969+00:00", "stars": 1089}, "canonical_url": "https://ross.abutalabs.com/products/androidscannerdemo", "card": {"archived": false, "artifact_type": "library", "description": "ScanLibrary is an android document scanning library built on top of OpenCV, using the app you will be able to select the exact edges and crop the document accordingly from the selected 4 edges and change the perspective transformation of the cropped image.", "domain": ["mobile-development", "computer-vision", "image-processing"], "enriched": true, "function": ["image-processing", "computer-vision", "ocr"], "health_score": 20, "homepage": null, "language": "C++", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["jhansireddy/AndroidScannerDemo"], "name": "jhansireddy/AndroidScannerDemo", "platform": ["cpp"], "pushed_at": "2021-04-23T19:51:29+00:00", "repo": "jhansireddy/AndroidScannerDemo", "stars": 1089, "tags": ["document-scanning", "opencv", "perspective-correction", "edge-detection", "camera", "android", "mobile"], "topics": [], "urls": [], "use_cases": ["scan documents with an android camera", "crop a document by selecting its four edges", "apply perspective correction to a photographed page", "convert scanned pages to black and white", "add document scanning to my android app", "pick an image from gallery and straighten it"], "what_it_is": "ScanLibrary is an Android document scanning library built on top of OpenCV that lets users select document edges, crop the document, and apply perspective transformation. It ships with a demo app and can be imported as a module into Android projects.", "when_to_avoid": ["you target iOS or cross-platform frameworks", "you need actively maintained code with recent updates", "you need OCR text extraction rather than image scanning", "you need multi-page PDF scanning workflows out of the box"], "when_to_choose": ["you need a free, self-contained document scanner inside an Android app", "you want OpenCV-based edge detection and perspective cropping without building it yourself", "you need both camera capture and gallery image scanning"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/androidscannerdemo", "repo": "jhansireddy/AndroidScannerDemo", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:32.618969+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:49:18.148606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c016f9607fd87149c24ba49a4d8f8f000d9bed07cbe19caf3720c63ed47bb1b4", "fetched_at": "2026-08-28T04:03:32.618969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhansireddy/AndroidScannerDemo"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:32.618969+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:49:18.148606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c016f9607fd87149c24ba49a4d8f8f000d9bed07cbe19caf3720c63ed47bb1b4", "fetched_at": "2026-08-28T04:03:32.618969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhansireddy/AndroidScannerDemo"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:49:18.148606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c016f9607fd87149c24ba49a4d8f8f000d9bed07cbe19caf3720c63ed47bb1b4", "fetched_at": "2026-08-28T04:03:32.618969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhansireddy/AndroidScannerDemo"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:32.618969+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:32.618969+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:32.618969+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:49:18.148606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c016f9607fd87149c24ba49a4d8f8f000d9bed07cbe19caf3720c63ed47bb1b4", "fetched_at": "2026-08-28T04:03:32.618969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhansireddy/AndroidScannerDemo"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:32.618969+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:32.618969+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:49:18.148606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c016f9607fd87149c24ba49a4d8f8f000d9bed07cbe19caf3720c63ed47bb1b4", "fetched_at": "2026-08-28T04:03:32.618969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhansireddy/AndroidScannerDemo"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:32.618969+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:32.618969+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:32.618969+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:49:18.148606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c016f9607fd87149c24ba49a4d8f8f000d9bed07cbe19caf3720c63ed47bb1b4", "fetched_at": "2026-08-28T04:03:32.618969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhansireddy/AndroidScannerDemo"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:32.618969+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:32.618969+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:49:18.148606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c016f9607fd87149c24ba49a4d8f8f000d9bed07cbe19caf3720c63ed47bb1b4", "fetched_at": "2026-08-28T04:03:32.618969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhansireddy/AndroidScannerDemo"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:49:18.148606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c016f9607fd87149c24ba49a4d8f8f000d9bed07cbe19caf3720c63ed47bb1b4", "fetched_at": "2026-08-28T04:03:32.618969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhansireddy/AndroidScannerDemo"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:49:18.148606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c016f9607fd87149c24ba49a4d8f8f000d9bed07cbe19caf3720c63ed47bb1b4", "fetched_at": "2026-08-28T04:03:32.618969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhansireddy/AndroidScannerDemo"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:49:18.148606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c016f9607fd87149c24ba49a4d8f8f000d9bed07cbe19caf3720c63ed47bb1b4", "fetched_at": "2026-08-28T04:03:32.618969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhansireddy/AndroidScannerDemo"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4168, "days_push": 1958, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}