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.

Built With

Share this project:

Updates