Shapes : reconnaissance de formes à trait unique sur l'appareil
Reconnaissance de formes à trait unique sur l'appareil, qui transforme un geste dessiné à la main en un rectangle, une ellipse, un triangle, une étoile ou une ligne nets.
Shapes prend un seul trait dessiné à la main, une liste de points [x, y], et renvoie une géométrie nette : rectangle, ellipse, triangle, étoile ou ligne. Il ajuste des formes vectorielles précises, s'aligne sur les axes, les cercles, les carrés et les rotations de 15 degrés, et rejette les gribouillis qui ne sont pas des formes.
Sur Apple, il ajoute à PencilKit un alignement intelligent des formes façon Notes en un seul appel, aperçu en direct préservé. Le « Snap to Shape » d'Apple est une API privée que les applications tierces ne peuvent pas appeler : Shapes comble donc ce manque. Il est assez petit pour être livré dans l'application sans téléchargement de modèle, et la version web exécute une inférence en pur JS, sans runtime ONNX ni WASM.
Démo
Performances
Moins de 10 ms par trait, depuis un modèle de 0,2 MB, sans runtime d'inférence sur le web.
Mesures internes. Inférence en pur JS sur le web, Core ML sur Apple.
Cas d'usage
Formes intelligentes façon Notes
Ajoutez l'alignement des formes à un canevas PencilKit avec canvasView.enableShapeSnapping(). Aperçu en direct, annulation et rétablissement préservés, comblant le manque laissé par l'API privée Snap to Shape d'Apple.
Outils de diagramme et de tableau blanc
Transformez des tracés à main levée en géométrie précise. Compatible avec les données de tracé de tldraw et Excalidraw.
Dessin multiplateforme
Le même moteur de reconnaissance s'exécute sur iOS, Android et le web, pour qu'une fonctionnalité de dessin se comporte à l'identique partout.
Aucun téléchargement de modèle
À environ 0,2 MB, il est livré dans l'application. Contrairement à Google ML Kit Digital Ink, aucun modèle de ~20 MB à récupérer à l'exécution.
Ce que ça fait
- Reconnaît le rectangle, l'ellipse, le triangle, l'étoile et la ligne, et rejette ce qui n'est pas une forme.
- S'aligne sur les axes, les cercles, les carrés et les rotations de 15 degrés.
- Alignement en direct dans PencilKit via un seul appel :
canvasView.enableShapeSnapping(). - Inférence web en pur JS : sans runtime ONNX ni WASM.
Plateformes et 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
Spécifications
- Formes
- Rectangle, ellipse, triangle, étoile, ligne
- Taille sur l'appareil
- 0,2 MB (Core ML 4 bits sur Apple)
- Latence
- <10 ms
- Runtime web
- Aucun ; inférence en pur JS
FAQ
Qu'est-ce que Shapes ?
Reconnaissance de formes à trait unique sur l'appareil, qui transforme un geste dessiné à la main en un rectangle, une ellipse, un triangle, une étoile ou une ligne nets.
Shapes fonctionne-t-il sur l'appareil ?
Oui. Shapes s'exécute entièrement sur l'appareil : l'inférence a lieu en local, sans appel serveur, de sorte que les données ne quittent jamais l'appareil.
Quelles plateformes Shapes prend-il en charge ?
Shapes est fourni sous forme de SDK natifs sur l'appareil pour Swift, Kotlin, JavaScript / TypeScript.
Combien coûte Shapes ?
Chaque modèle est gratuit jusqu'à 100k appareils actifs mensuels par SDK. Inférence illimitée par utilisateur. Contactez-nous pour des licences sur mesure.
Quelle est la précision ou la vitesse de Shapes ?
Moins de 10 ms par trait, depuis un modèle de 0,2 MB, sans runtime d'inférence sur le web.