Shapes: riconoscimento di forme a tratto singolo on-device
Riconoscimento di forme a tratto singolo on-device che trasforma un gesto disegnato a mano in una forma pulita: rettangolo, ellisse, triangolo, stella o linea.
Shapes prende un tratto disegnato a mano, un elenco di punti [x, y], e restituisce una geometria pulita: rettangolo, ellisse, triangolo, stella o linea. Adatta forme vettoriali precise, si aggancia ad assi, cerchi, quadrati e rotazioni di 15 gradi, e scarta gli scarabocchi che non sono forme.
Su Apple aggiunge a PencilKit l'aggancio alle forme intelligenti in stile Note con una sola chiamata, mantenendo intatta l'anteprima in tempo reale. La funzione «Snap to Shape» di Apple è un'API privata che le app di terze parti non possono richiamare, quindi Shapes colma questa lacuna. È abbastanza piccolo da essere incluso nell'app senza scaricare alcun modello, e la build web esegue l'inferenza in puro JS senza runtime ONNX o WASM.
Demo
Prestazioni
Meno di 10 ms per tratto, da un modello da 0,2 MB senza runtime di inferenza sul web.
Misurazioni interne. Inferenza in puro JS sul web, Core ML su Apple.
Casi d'uso
Forme intelligenti in stile Note
Aggiungi l'aggancio alle forme a un canvas PencilKit con canvasView.enableShapeSnapping(). Anteprima in tempo reale, annulla e ripeti preservati, colmando la lacuna lasciata dall'API privata Snap to Shape di Apple.
Strumenti per diagrammi e lavagne
Trasforma i tratti a mano libera in geometrie precise. Funziona con i dati dei tratti di tldraw ed Excalidraw.
Disegno multipiattaforma
Lo stesso riconoscitore funziona su iOS, Android e il web, così una funzione di disegno si comporta in modo identico ovunque.
Nessun download del modello
Con circa 0,2 MB è incluso nell'app. A differenza di Google ML Kit Digital Ink, non c'è alcun modello da ~20 MB da scaricare a runtime.
Cosa fa
- Riconosce rettangolo, ellisse, triangolo, stella e linea, e scarta ciò che non è una forma.
- Si aggancia ad assi, cerchi, quadrati e rotazioni di 15 gradi.
- Aggancio in tempo reale su PencilKit con una sola chiamata:
canvasView.enableShapeSnapping(). - Inferenza web in puro JS: nessun runtime ONNX o WASM.
Piattaforme e installazione
// 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
Specifiche
- Forme
- Rettangolo, ellisse, triangolo, stella, linea
- Dimensione on-device
- 0,2 MB (Core ML a 4 bit su Apple)
- Latenza
- <10 ms
- Runtime web
- Nessuno; inferenza in puro JS
FAQ
Cos'è Shapes?
Riconoscimento di forme a tratto singolo on-device che trasforma un gesto disegnato a mano in una forma pulita: rettangolo, ellisse, triangolo, stella o linea.
Shapes funziona sul dispositivo?
Sì. Shapes funziona interamente sul dispositivo: l'inferenza avviene in locale senza alcuna chiamata a un server, quindi i dati non lasciano mai il dispositivo.
Quali piattaforme supporta Shapes?
Shapes è distribuito come SDK nativi on-device per Swift, Kotlin, JavaScript / TypeScript.
Quanto costa Shapes?
Ogni modello è gratuito fino a 100k dispositivi attivi mensili per SDK. Inferenza illimitata per utente. Contattaci per licenze personalizzate.
Quanto è preciso o veloce Shapes?
Meno di 10 ms per tratto, da un modello da 0,2 MB senza runtime di inferenza sul web.