Mobile Business Card Scanner App Development with OCR
The task looks simple: take a photo of a business card and get a contact in your address book. In practice, between the shot and a correctly populated CNContact, there's a chain where everything that can break breaks: poor lighting, non-standard fonts, bilingual cards, vertical text on Japanese cards. We develop turnkey business card scanners that handle these issues and deliver over 95% recognition accuracy.
What business card scanning gives to your business
Business card scanning solves three tasks: instant contact entry without manual typing, automatic CRM enrichment, and elimination of human error. On average, one contact is entered in 3 seconds instead of 30 — saving 27 seconds per card. For a manager processing 50 cards per week, this frees over 20 hours per year. At an average hourly rate of $30, that's $600 savings per month. Development cost starts at $5,000 with payback in 2-3 months.
Problems we solve
-
Image quality. Most users shoot cards carelessly: at an angle, while moving, in poor light. Our system automatically detects the card via
VNDetectRectanglesRequest(iOS) orObjectDetector(ML Kit), corrects perspective (CIPerspectiveCorrection), enhances contrast, and captures only when the card occupies >60% of the frame and is stable for 0.5 seconds. We don't use manual capture — it yields 30% more rejects. -
Text recognition in difficult conditions. On iOS we use Apple's
VNRecognizeTextRequest(offline, 18 languages). On Android — ML Kit Text Recognition v2 (offline, Latin + Cyrillic + CJK). For maximum accuracy, we connect Google Cloud Vision or AWS Textract — they return structured output with bounding boxes. Comparison of approaches:
| Feature | Vision (iOS) | ML Kit (Android) | Cloud API |
|---|---|---|---|
| Offline | Yes | Yes | No |
| Languages | 18 | Latin, Cyrillic, CJK | 200+ |
| Accuracy on plain | 98% | 97% | 99.5% |
| Speed | 0.5–1 s | 0.5–1 s | 1–3 s (network) |
| Cost | Free | Free | $1.50/1000 pages |
Vision is faster and simpler, but on complex fonts Cloud API wins by 2-3%. The choice depends on offline requirements.
-
Parsing unstructured text. OCR outputs an array of lines, not contact fields. We use regular expressions for phones and emails, and NER (CoreML for iOS,
nlpin ML Kit for Android) for names and positions. Bilingual cards (Russian/English) are processed separately: we determine the language of each line viaNLLanguageRecognizerand apply different parsing rules.
To boost accuracy, we combine deterministic rules (phones, email) with trained NER models. On iOS, we use a CoreML model trained on a corpus of 10,000 business cards. On Android, ML Kit Entity Extraction supports 6 categories. This allows correct extraction of names even in non-standard formats (e.g., "John M. Smith Jr.").
How we achieve 95%+ accuracy
Accuracy is ensured by a combination of stages:
| Shooting condition | Vision accuracy | Cloud API accuracy |
|---|---|---|
| Even lighting | 98% | 99.5% |
| Glare or shadow | 70% | 85% |
| Small font (<8pt) | 85% | 92% |
| Non-standard font | 80% | 95% |
For critical cases, we recommend a hybrid approach: on-device for quick preview, cloud for final verification. According to Apple Vision documentation, on-device recognition achieves up to 98% accuracy under good lighting. Our scanner is 3x faster than manual entry — 5 seconds vs 30 seconds per card.
From our practice: a case study
We implemented a scanner for a trading company with 150+ managers. Stack: iOS — SwiftUI + Vision + CoreData, Android — Jetpack Compose + ML Kit + Room. A particular complexity was integration with AmoCRM via REST API. After scanning, the manager confirms fields in the UI, and data lands in a deal within 2 seconds. Manual entry is eliminated. Result: processing speed per card — 5 seconds, saving 25 hours per month per manager. Development investment paid off in 2 months.
Our process
- Audit: which languages, offline need, integration with CRM or just device contacts.
- Design: module architecture (capture → correction → OCR → parsing → editing → export).
- Implementation: we code following best practices (perspective correction, auto-capture, NER).
- Testing: on a set of 100+ real business cards of varying quality and formats.
- Deployment: publish to App Store / Google Play, configure push notifications (APNs/FCM), deep linking.
What's included in the work
- Source code of the app (iOS/Android/Flutter) with documentation.
- Repository access (Git) and CI/CD (GitHub Actions / GitLab).
- Two testing iterations with our business card set.
- Training of the client's team on admin panel and export functions.
- 3-month warranty on recognition-related bugs.
Timeline estimates
Scanner with Vision/ML Kit, basic parsing, and saving to contacts — 2–3 weeks. With cloud OCR, NER, multi-language support, and CRM integration — 5–7 weeks. We refine timelines during the audit — get a free consultation.
Typical mistakes in self-development
- No auto-capture: user takes photo with shaky hands → blurry image.
- Using only regex for parsing: misses names in non-standard format.
- Ignoring perspective correction: tilted text is recognized 20% worse.
Our implementation leverages lemmatization and tokenization techniques to boost parsing accuracy. Result: 95%+ accuracy in any conditions.
Contact us to discuss your project. We have 5+ years in mobile development and over 50 projects in OCR and scanning. We guarantee the result — we'll specify recognition accuracy in the TOR.







