SplitSnap - Smart Receipt Splitting with OCR + Spatial Analysis
🧠 Inspiration
Every time we eat out or split groceries, someone gets stuck with the awkward job of manually dividing a long receipt. Most existing apps require manual entry or fail to understand complex receipts with weight-based pricing or taxes. We wanted to eliminate that friction and create a fast, intuitive solution. SplitSnap was born from the idea that receipt splitting should be as easy as taking a photo.
📸 What it does
SplitSnap is an iOS app that uses on-device OCR and smart spatial analysis to:
- Scan a receipt in real time
- Automatically extract items and their prices
- Handle complex receipt formats: weight-based items (e.g., "1.22 kg @ $1.30/kg"), quantity-based pricing, and tax codes
- Let users assign items to people for effortless bill splitting
By using the camera feed, we even guide users to hold the receipt at the optimal distance for accurate capture.
🛠 How we built it
- Apple Vision Framework: Used for real-time text recognition and bounding box detection.
- Line Spacing Normalization: Dynamically analyzes line spacing to guide camera distance and standardize spatial input.
- Custom Spatial Algorithm: Groups prices and items using vertical/horizontal positioning, scoring systems, and context-aware parsing.
- Regex Parsing: Detects weight/quantity expressions and extracts per-unit pricing details.
- Tax Code Handling: Flags taxed items using codes like HMRJ/MRJ.
- Filtering Engine: Removes non-product terms like “subtotal”, “payment”, “visa”, etc., using a blacklist.
All coordinates and text are processed using a normalized 0–1 coordinate system for consistency across devices.
🚧 Challenges we ran into
- OCR limitations: Some receipts had faded text or unusual fonts that the Apple Vision framework struggled with.
- Parsing complexity: Weight- and quantity-based items added a layer of difficulty in matching item names and pricing logic.
- Visual spacing variation: Differences in font size, spacing, and alignment across receipts made consistent detection challenging.
- Filtering edge cases: We had to tune our blacklist and scoring systems to prevent false positives and ensure accuracy.
🏆 Accomplishments that we're proud of
- Accurately parsed real-world receipts, including messy ones with taxes, quantities, and multi-line items.
- Built a robust item extraction algorithm that adapts to diverse receipt formats.
- Implemented real-time distance guidance to improve user capture quality dynamically.
- Handled both regular and weight-based items
📚 What we learned
- OCR is just the beginning—making sense of real-world receipts is a much harder problem than it seems.
- Real-time user feedback improves both the user experience and the quality of OCR results.
- Context matters—combining spatial layout with text patterns leads to much better parsing results than using text alone.
🚀 What's next for SplitSnap
- ✏️ Manual editing: Let users correct OCR results directly in-app to fix any misread items or prices.
- 📊 Spending history & analytics: Save receipts to track purchases over time, categorize items (e.g., groceries, snacks, household), and generate spending insights.
- 🏪 Broader receipt compatibility: Expand support to more store formats by generalizing the item-price detection algorithm.
- 📤 Export & share: Let users export splits via Venmo/PayPal links, share receipt summaries, or generate PDF reports.
- 🧠 LLM-assisted correction: Add a chatbot to suggest fixes or help interpret unclear items intelligently.
Log in or sign up for Devpost to join the conversation.