How it works
From camera to training data
1
Scan
Point your iPhone camera at playing cards. DeckVision detects each card in real time using an on-device Core ML model and captures automatically when the scene is stable.
2
Annotate
Review the captured image with bounding box overlays. Drag to reposition, pinch handles to resize, and correct any mislabelled cards using the label picker. Add boxes the model missed.
3
Export
Export your dataset as a zip archive containing annotated images and a Create ML‑compatible annotations.json. Drop it straight into a Create ML object detection project.
Features
Built for the annotation loop
- On-device detection — Core ML and Vision run entirely on your iPhone. No server round-trips, no latency, no camera data leaving your device.
- Gesture-based annotation editing — Tap to select, drag to move, drag corners to resize. Pinch to zoom in for precision work on small or overlapping cards.
- Label correction sheet — Pick rank and suit from a grid with a cropped card preview alongside. Corrections are tracked separately from model predictions.
-
Create ML export format — Exports
annotations.jsonwith center-based pixel coordinates compatible with Create ML object detection tasks, plus ametadata.jsontracking correction provenance. -
Companion Python tools —
merge_exports.pymerges new exports into an existing training set with sequential renaming.verify_annotations.pydraws bounding boxes on exported images for visual QA.
Export format
Drops straight into Create ML
The exported archive contains your images and an annotations.json in Create ML object detection format — ready to drag into a new training source without any conversion.
// annotations.json — Create ML object detection format
[
{
"imagefilename": "images/<uuid>.jpg",
"annotation": [
{
"label": "AS",
// Ace of Spades
"coordinates": { "x": 245.6, "y": 594.7, "width": 67.4, "height": 146.3 }
},
{
"label": "TH",
// 10 of Hearts
"coordinates": { "x": 388.1, "y": 601.2, "width": 68.0, "height": 148.5 }
}
]
}
]
Screenshots