Shapes: Einstrich-Formerkennung auf dem Gerät
Einstrich-Formerkennung auf dem Gerät, die eine einzige Handzeichnung in ein sauberes Rechteck, eine Ellipse, ein Dreieck, einen Stern oder eine Linie verwandelt.
Shapes nimmt einen handgezeichneten Strich, eine Liste von [x, y]-Punkten, und gibt saubere Geometrie zurück: Rechteck, Ellipse, Dreieck, Stern oder Linie. Es passt präzise Vektorformen an, rastet an Achsen, Kreisen, Quadraten und 15-Grad-Drehungen ein und verwirft Gekritzel, das keine Form ist.
Auf Apple ergänzt es PencilKit mit einem einzigen Aufruf um Smart-Shape-Einrasten im Stil von Notizen, bei erhaltener Live-Vorschau. Apples eigenes „Snap to Shape“ ist eine private API, die Drittanbieter-Apps nicht aufrufen können, und Shapes schließt diese Lücke. Es ist klein genug, um ohne Modell-Download in der App ausgeliefert zu werden, und der Web-Build führt die Inferenz in reinem JS aus, ohne ONNX- oder WASM-Laufzeit.
Demo
Leistung
Unter 10 ms pro Strich, aus einem Modell von 0,2 MB, ohne Inferenz-Laufzeit im Web.
Interne Messungen. Inferenz in reinem JS im Web, Core ML auf Apple.
Anwendungsfälle
Smart Shapes im Stil von Notizen
Fügen Sie einer PencilKit-Zeichenfläche mit canvasView.enableShapeSnapping() Einrasten auf Formen hinzu. Live-Vorschau, Rückgängig und Wiederholen bleiben erhalten und schließen die Lücke, die Apples private Snap-to-Shape-API hinterlässt.
Diagramm- und Whiteboard-Tools
Bereinigen Sie Freihandstriche zu präziser Geometrie. Funktioniert mit Strichdaten von tldraw und Excalidraw.
Plattformübergreifendes Zeichnen
Derselbe Erkenner läuft auf iOS, Android und im Web, sodass sich eine Zeichenfunktion überall identisch verhält.
Kein Modell-Download
Mit etwa 0,2 MB wird es in der App ausgeliefert. Anders als bei Google ML Kit Digital Ink muss kein ~20 MB großes Modell zur Laufzeit geladen werden.
Was es macht
- Erkennt Rechteck, Ellipse, Dreieck, Stern und Linie und verwirft Nicht-Formen.
- Rastet an Achsen, Kreisen, Quadraten und 15-Grad-Drehungen ein.
- PencilKit-Live-Einrasten über einen Aufruf:
canvasView.enableShapeSnapping(). - Web-Inferenz in reinem JS: keine ONNX- oder WASM-Laufzeit.
Plattformen und Installation
// 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
Technische Daten
- Formen
- Rechteck, Ellipse, Dreieck, Stern, Linie
- Größe auf dem Gerät
- 0,2 MB (4-Bit Core ML auf Apple)
- Latenz
- < 10 ms
- Web-Laufzeit
- Keine; Inferenz in reinem JS
FAQ
Was ist Shapes?
Einstrich-Formerkennung auf dem Gerät, die eine einzige Handzeichnung in ein sauberes Rechteck, eine Ellipse, ein Dreieck, einen Stern oder eine Linie verwandelt.
Läuft Shapes auf dem Gerät?
Ja. Shapes läuft vollständig auf dem Gerät: Die Inferenz erfolgt lokal ohne Serveraufruf, sodass keine Daten das Gerät verlassen.
Welche Plattformen unterstützt Shapes?
Shapes wird als native On-Device-SDKs für Swift, Kotlin, JavaScript / TypeScript ausgeliefert.
Was kostet Shapes?
Jedes Modell ist für bis zu 100k monatlich aktive Geräte pro SDK kostenlos. Unbegrenzte Inferenz pro Nutzer. Kontaktieren Sie uns für individuelle Lizenzen.
Wie genau oder schnell ist Shapes?
Unter 10 ms pro Strich, aus einem Modell von 0,2 MB, ohne Inferenz-Laufzeit im Web.