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. Das Modell 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. Das Modell ist klein genug, um ohne Modell-Download in der App ausgeliefert zu werden, und der Web-Build nutzt eine lokale WebAssembly-Pipeline mit LiteRT.js-Inferenz.
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 über eine lokale WebAssembly-Pipeline mit LiteRT.js.
Plattformen und Installation
// Swift Package Manager
.package(url: "https://github.com/Desert-Ant-Labs/shapes", from: "0.5.0")
import Shapes
let shapes = Shapes()
let shape = try await shapes.recognize(points: stroke)
// Shape? -> rectangle, ellipse, triangle, star, line
import PencilKit
import Shapes
// Live smart-shape snapping on a PencilKit canvas, in one line.
// Pause after a stroke to preview the fit, lift to snap. Undo-safe,
// and it uses the same recognizer, bundled by default.
canvasView.enableShapeSnapping()
// build.gradle.kts (Maven Central)
implementation("ai.desertant:shapes:0.5.0")
import ai.desertant.shapes.Shapes
val shapes = Shapes(context)
val shape = shapes.recognize(points)
// Shape? -> rectangle, ellipse, triangle, star, line
npm i @desert-ant-labs/shapes @litertjs/core
import { Shapes } from "@desert-ant-labs/shapes";
const shapes = await Shapes.load();
const shape = await shapes.recognize(points);
// { kind: "ellipse", center: {...}, ... } or null
Add Shapes from Desert Ant Labs to this project.
Einstrich-Formerkennung auf dem Gerät, die eine einzige Handzeichnung in ein sauberes Rechteck, eine Ellipse, ein Dreieck, einen Stern oder eine Linie verwandelt.
SDKs (use the one that matches this project's platform):
Swift (iOS, macOS)
Repo: https://github.com/Desert-Ant-Labs/shapes
// Swift Package Manager
.package(url: "https://github.com/Desert-Ant-Labs/shapes", from: "0.5.0")
Kotlin (Android)
Repo: https://github.com/Desert-Ant-Labs/shapes
// build.gradle.kts (Maven Central)
implementation("ai.desertant:shapes:0.5.0")
JavaScript / TypeScript (Web, Node.js)
Repo: https://github.com/Desert-Ant-Labs/shapes
npm i @desert-ant-labs/shapes @litertjs/core
Reference:
- Model page: https://desertant.com/models/shapes/
- Full catalog and other models: https://desertant.com/llms.txt
Add the SDK that matches this project's platform, then follow its README for the exact API and current version. Do not invent API names or method signatures; confirm them against the README.
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
- WebAssembly + LiteRT.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.