{"adoption": {"forks": 371, "observed_at": "2026-08-28T04:04:49.440017+00:00", "stars": 1472}, "canonical_url": "https://ross.abutalabs.com/products/scanner", "card": {"archived": false, "artifact_type": "library", "description": "二维码/条码识别、身份证识别、银行卡识别、车牌识别、图片文字识别、黄图识别、驾驶证（驾照）识别", "domain": ["computer-vision", "android-tools", "image-processing"], "enriched": true, "function": ["computer-vision", "ocr", "image-processing", "sdk"], "health_score": 20, "homepage": null, "language": "Java", "license": null, "license_family": "other", "maturity": "maintenance", "member_repos": ["shouzhong/Scanner"], "name": "shouzhong/Scanner", "platform": ["jvm"], "pushed_at": "2022-04-07T09:09:19+00:00", "repo": "shouzhong/Scanner", "stars": 1472, "tags": ["barcode-scanning", "qr-code", "id-card-recognition", "bank-card-recognition", "license-plate-recognition", "nsfw-detection", "camera-scanning", "zxing", "zbar", "opencv", "android"], "topics": ["idcard", "bankcard", "licenseplate", "zbar", "zxing", "camera", "opencv", "ocr", "nsfw", "android"], "urls": [], "use_cases": ["scan qr codes and barcodes in an android app", "recognize chinese id cards from camera", "read bank card numbers with the camera", "detect vehicle license plates", "extract text from images via ocr", "detect nsfw images", "recognize driving licenses"], "what_it_is": "An Android scanning library that recognizes QR codes, barcodes, ID cards, bank cards, license plates, text, driving licenses, and NSFW images using pluggable recognizers like ZXing, ZBar, and OpenCV. It only processes the image inside a customizable scan box, improving speed and allowing fully custom preview and viewfinder layouts.", "when_to_avoid": ["you need an iOS or cross-platform scanner", "you need actively maintained software with a clear license", "you need server-side or offline image recognition outside android camera scanning"], "when_to_choose": ["you need an android camera scanner with customizable scan box and preview", "you need multiple recognition types (qr, id card, bank card, plate) in one library", "you want faster scanning by limiting recognition to the scan frame area"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/scanner", "repo": "shouzhong/Scanner", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:49.440017+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:34:43.660201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ecf958b971cee6246a69ca3c3ac6cb0e9cff9e59f8d7c3ef48d8a1bef341aec", "fetched_at": "2026-08-28T04:04:49.440017+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shouzhong/Scanner"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:49.440017+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:34:43.660201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ecf958b971cee6246a69ca3c3ac6cb0e9cff9e59f8d7c3ef48d8a1bef341aec", "fetched_at": "2026-08-28T04:04:49.440017+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shouzhong/Scanner"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:34:43.660201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ecf958b971cee6246a69ca3c3ac6cb0e9cff9e59f8d7c3ef48d8a1bef341aec", "fetched_at": "2026-08-28T04:04:49.440017+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shouzhong/Scanner"}], "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:04:49.440017+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:49.440017+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:49.440017+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:34:43.660201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ecf958b971cee6246a69ca3c3ac6cb0e9cff9e59f8d7c3ef48d8a1bef341aec", "fetched_at": "2026-08-28T04:04:49.440017+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shouzhong/Scanner"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:49.440017+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:49.440017+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:34:43.660201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ecf958b971cee6246a69ca3c3ac6cb0e9cff9e59f8d7c3ef48d8a1bef341aec", "fetched_at": "2026-08-28T04:04:49.440017+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shouzhong/Scanner"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:49.440017+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:49.440017+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:49.440017+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:34:43.660201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ecf958b971cee6246a69ca3c3ac6cb0e9cff9e59f8d7c3ef48d8a1bef341aec", "fetched_at": "2026-08-28T04:04:49.440017+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shouzhong/Scanner"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:49.440017+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:49.440017+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:34:43.660201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ecf958b971cee6246a69ca3c3ac6cb0e9cff9e59f8d7c3ef48d8a1bef341aec", "fetched_at": "2026-08-28T04:04:49.440017+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shouzhong/Scanner"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:34:43.660201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ecf958b971cee6246a69ca3c3ac6cb0e9cff9e59f8d7c3ef48d8a1bef341aec", "fetched_at": "2026-08-28T04:04:49.440017+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shouzhong/Scanner"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:34:43.660201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ecf958b971cee6246a69ca3c3ac6cb0e9cff9e59f8d7c3ef48d8a1bef341aec", "fetched_at": "2026-08-28T04:04:49.440017+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shouzhong/Scanner"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:34:43.660201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ecf958b971cee6246a69ca3c3ac6cb0e9cff9e59f8d7c3ef48d8a1bef341aec", "fetched_at": "2026-08-28T04:04:49.440017+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shouzhong/Scanner"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2529, "days_push": 1609, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}