{"adoption": {"forks": 71, "observed_at": "2026-08-28T04:03:28.116349+00:00", "stars": 1071}, "canonical_url": "https://ross.abutalabs.com/products/openfind", "card": {"archived": false, "artifact_type": "application", "description": "An app to find text in real life.", "domain": ["computer-vision", "image-processing", "developer-tools", "accessibility", "privacy"], "enriched": true, "function": ["ocr", "search-engine", "image-processing", "gui"], "health_score": 20, "homepage": "https://open.getfind.app", "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["aheze/OpenFind"], "name": "aheze/OpenFind", "platform": [], "pushed_at": "2023-02-10T01:10:12+00:00", "repo": "aheze/OpenFind", "stars": 1071, "tags": ["swiftui", "uikit", "vision-framework", "realm", "offline-first", "photo-search", "app-clip", "voiceover", "ios", "swift", "mobile"], "topics": ["app", "camera", "find", "ios", "ocr", "photos", "realm", "swift", "swiftui", "uikit", "vision", "hacktoberfest"], "urls": [], "use_cases": ["find text in real life with the camera", "scan nutrition labels for unwanted ingredients", "search my entire photo library for text", "search for multiple keywords at once", "find text in books and forms offline", "organize photos with stars", "use an accessible OCR app with VoiceOver"], "what_it_is": "OpenFind is an open-source iOS app that finds text in real life using OCR, letting users search in real time via the camera or across their entire photo library. It supports multiple simultaneous search terms, custom lists (e.g., allergy ingredients), and runs 100% offline with full VoiceOver support.", "when_to_avoid": ["you need OCR on Android, Windows, or macOS", "you need a programmatic OCR library or CLI rather than a consumer app", "you need cloud-scale document processing or batch OCR pipelines", "you need actively developed features, as the latest release is from early 2023"], "when_to_choose": ["you need an offline, privacy-respecting OCR search app on iOS", "you want to check ingredient labels against allergy lists instantly", "you want to search text across your photo library quickly", "you want a real-world example of SwiftUI, UIKit, Vision, and Realm in a full app"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/openfind", "repo": "aheze/OpenFind", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:28.116349+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:53:48.063973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6cf88f4b2fd461c908214e10b4914247f09fdc5d234e635c86d660662ef49688", "fetched_at": "2026-08-28T04:03:28.116349+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aheze/OpenFind"}, {"content_hash": "2ae81c2f75ecf564ffece216fe9bae630d988f279fb5ad265571701bc5e78e0f", "fetched_at": "2026-08-29T12:55:47.137572+00:00", "kind": "homepage", "missing": false, "url": "https://open.getfind.app"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:28.116349+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:53:48.063973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6cf88f4b2fd461c908214e10b4914247f09fdc5d234e635c86d660662ef49688", "fetched_at": "2026-08-28T04:03:28.116349+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aheze/OpenFind"}, {"content_hash": "2ae81c2f75ecf564ffece216fe9bae630d988f279fb5ad265571701bc5e78e0f", "fetched_at": "2026-08-29T12:55:47.137572+00:00", "kind": "homepage", "missing": false, "url": "https://open.getfind.app"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:53:48.063973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6cf88f4b2fd461c908214e10b4914247f09fdc5d234e635c86d660662ef49688", "fetched_at": "2026-08-28T04:03:28.116349+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aheze/OpenFind"}, {"content_hash": "2ae81c2f75ecf564ffece216fe9bae630d988f279fb5ad265571701bc5e78e0f", "fetched_at": "2026-08-29T12:55:47.137572+00:00", "kind": "homepage", "missing": false, "url": "https://open.getfind.app"}], "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:28.116349+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:28.116349+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:28.116349+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:53:48.063973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6cf88f4b2fd461c908214e10b4914247f09fdc5d234e635c86d660662ef49688", "fetched_at": "2026-08-28T04:03:28.116349+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aheze/OpenFind"}, {"content_hash": "2ae81c2f75ecf564ffece216fe9bae630d988f279fb5ad265571701bc5e78e0f", "fetched_at": "2026-08-29T12:55:47.137572+00:00", "kind": "homepage", "missing": false, "url": "https://open.getfind.app"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:28.116349+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:28.116349+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:53:48.063973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6cf88f4b2fd461c908214e10b4914247f09fdc5d234e635c86d660662ef49688", "fetched_at": "2026-08-28T04:03:28.116349+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aheze/OpenFind"}, {"content_hash": "2ae81c2f75ecf564ffece216fe9bae630d988f279fb5ad265571701bc5e78e0f", "fetched_at": "2026-08-29T12:55:47.137572+00:00", "kind": "homepage", "missing": false, "url": "https://open.getfind.app"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:28.116349+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:28.116349+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:28.116349+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:53:48.063973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6cf88f4b2fd461c908214e10b4914247f09fdc5d234e635c86d660662ef49688", "fetched_at": "2026-08-28T04:03:28.116349+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aheze/OpenFind"}, {"content_hash": "2ae81c2f75ecf564ffece216fe9bae630d988f279fb5ad265571701bc5e78e0f", "fetched_at": "2026-08-29T12:55:47.137572+00:00", "kind": "homepage", "missing": false, "url": "https://open.getfind.app"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:28.116349+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:28.116349+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:53:48.063973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6cf88f4b2fd461c908214e10b4914247f09fdc5d234e635c86d660662ef49688", "fetched_at": "2026-08-28T04:03:28.116349+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aheze/OpenFind"}, {"content_hash": "2ae81c2f75ecf564ffece216fe9bae630d988f279fb5ad265571701bc5e78e0f", "fetched_at": "2026-08-29T12:55:47.137572+00:00", "kind": "homepage", "missing": false, "url": "https://open.getfind.app"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:53:48.063973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6cf88f4b2fd461c908214e10b4914247f09fdc5d234e635c86d660662ef49688", "fetched_at": "2026-08-28T04:03:28.116349+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aheze/OpenFind"}, {"content_hash": "2ae81c2f75ecf564ffece216fe9bae630d988f279fb5ad265571701bc5e78e0f", "fetched_at": "2026-08-29T12:55:47.137572+00:00", "kind": "homepage", "missing": false, "url": "https://open.getfind.app"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:53:48.063973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6cf88f4b2fd461c908214e10b4914247f09fdc5d234e635c86d660662ef49688", "fetched_at": "2026-08-28T04:03:28.116349+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aheze/OpenFind"}, {"content_hash": "2ae81c2f75ecf564ffece216fe9bae630d988f279fb5ad265571701bc5e78e0f", "fetched_at": "2026-08-29T12:55:47.137572+00:00", "kind": "homepage", "missing": false, "url": "https://open.getfind.app"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:53:48.063973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6cf88f4b2fd461c908214e10b4914247f09fdc5d234e635c86d660662ef49688", "fetched_at": "2026-08-28T04:03:28.116349+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aheze/OpenFind"}, {"content_hash": "2ae81c2f75ecf564ffece216fe9bae630d988f279fb5ad265571701bc5e78e0f", "fetched_at": "2026-08-29T12:55:47.137572+00:00", "kind": "homepage", "missing": false, "url": "https://open.getfind.app"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2516, "days_push": 1301, "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}}