Shapes: on-device vormherkenning met één streek
On-device vormherkenning die je handgetekende streek in één keer omzet in een strakke rechthoek, ellips, driehoek, ster of lijn.
Shapes neemt één handgetekende streek, een lijst van [x, y]-punten, en geeft strakke geometrie terug: rechthoek, ellips, driehoek, ster of lijn. Het past precieze vectorvormen in, klikt vast op assen, cirkels, vierkanten en rotaties van 15 graden, en verwerpt krabbels die geen vorm zijn.
Op Apple voegt het slim vastklikken van vormen zoals in Notities toe aan PencilKit met één aanroep, met behoud van live preview. Apple's eigen “Snap to Shape” is private API die apps van derden niet kunnen aanroepen, dus Shapes vult dat gat. Het is klein genoeg om mee te leveren in de app zonder model-download, en de web-build draait pure-JS-inferentie zonder ONNX- of WASM-runtime.
Demo
Prestaties
Minder dan 10 ms per streek, uit een model van 0,2 MB zonder inferentie-runtime op het web.
Interne metingen. Pure-JS-inferentie op het web, Core ML op Apple.
Toepassingen
Slimme vormen zoals in Notities
Voeg snap-to-shape toe aan een PencilKit-canvas met canvasView.enableShapeSnapping(). Live preview, undo en redo blijven behouden, en het vult het gat dat Apple's private Snap to Shape-API achterlaat.
Diagram- en whiteboard-tools
Zet vrije-handstreken om in precieze geometrie. Werkt met streekdata van tldraw en Excalidraw.
Cross-platform tekenen
Dezelfde herkenner draait op iOS, Android en web, zodat een tekenfunctie zich overal identiek gedraagt.
Geen model-download
Met ongeveer 0,2 MB wordt het meegeleverd in de app. Anders dan Google ML Kit Digital Ink is er geen model van ~20 MB dat tijdens runtime moet worden opgehaald.
Wat het doet
- Herkent rechthoek, ellips, driehoek, ster en lijn, en verwerpt niet-vormen.
- Klikt vast op assen, cirkels, vierkanten en rotaties van 15 graden.
- Live vastklikken in PencilKit via één aanroep:
canvasView.enableShapeSnapping(). - Pure-JS-inferentie op het web: geen ONNX- of WASM-runtime.
Platforms en installatie
// Swift Package Manager .package(url: "https://github.com/Desert-Ant-Labs/shapes-swift", from: "0.1.0")
import Shapes let shape = try ShapeRecognizer().recognize(points: stroke) // Shape? -> rectangle, ellipse, triangle, star, line
// build.gradle.kts (via JitPack)
implementation("com.github.Desert-Ant-Labs:shapes-kotlin:0.1.0")
import ai.desertant.shapes.Shapes val shape = Shapes.recognize(points) // Shape? -> rectangle, ellipse, triangle, star, line
npm i @desert-ant-labs/shapes
import { recognize } from "@desert-ant-labs/shapes";
const shape = await recognize(points);
// { type: "ellipse", center: [120, 90], ... } or null
Specs
- Vormen
- Rechthoek, ellips, driehoek, ster, lijn
- Grootte op het apparaat
- 0,2 MB (4-bit Core ML op Apple)
- Latency
- <10 ms
- Web-runtime
- Geen; pure-JS-inferentie
FAQ
Wat is Shapes?
On-device vormherkenning die je handgetekende streek in één keer omzet in een strakke rechthoek, ellips, driehoek, ster of lijn.
Draait Shapes op het apparaat?
Ja. Shapes draait volledig op het apparaat: inferentie gebeurt lokaal, zonder serveraanroep, dus data verlaat nooit het apparaat.
Welke platforms ondersteunt Shapes?
Shapes wordt geleverd als native on-device SDK's voor Swift, Kotlin, JavaScript / TypeScript.
Hoeveel kost Shapes?
Elk model is gratis voor maximaal 100k maandelijks actieve apparaten per SDK. Onbeperkte inferentie per gebruiker. Neem contact op voor aangepaste licenties.
Hoe nauwkeurig of snel is Shapes?
Minder dan 10 ms per streek, uit een model van 0,2 MB zonder inferentie-runtime op het web.