Shapes
Reconnaissance de formes sur l'appareil qui transforme un trait à main levée en rectangle, ellipse, triangle, étoile ou ligne, en moins de 10 ms.

Démo
Croquis grossier. Forme parfaite.
Dessinez un cercle grossier et Shapes l'ajuste en un cercle net. Shapes reconstruit une géométrie vectorielle précise, l'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, un seul appel ajoute à un canevas PencilKit l'alignement intelligent des formes façon Notes, et l'aperçu en direct reste. Le « Snap to Shape » d'Apple est une API privée que les applications tierces ne peuvent pas appeler : Shapes fait le même travail en une ligne.
Le modèle est assez petit pour être livré dans l'application, sans téléchargement. Dans le navigateur, Shapes passe par LiteRT.js.
Moins de 10 ms par trait.
Moins de 10 ms par trait, depuis un modèle de 0,2 MB sur Apple et 1,3 MB sur Android et le web.
Mesures internes. Core ML sur Apple, LiteRT.js dans le navigateur, bibliothèques natives précompilées sur Node.
Cas d'usage
Croquis grossier. Forme parfaite.
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.
Mettre au propre un schéma à main levée
Transformez des tracés approximatifs en géométrie précise dans un outil de diagramme ou de tableau blanc. Compatible avec les données de tracé de tldraw et Excalidraw.
Dessin multiplateforme
Un seul moteur de reconnaissance couvre iOS, Android et le web : le code d'alignement, vous ne l'écrivez qu'une fois.
Livré dans l'app, pas téléchargé
Sur Apple, le reconnaisseur pèse 0,2 MB et est livré dans le binaire, et le package Android l'embarque par défaut. Dans le navigateur, le SDK récupère 1,3 MB une fois et le met en cache.
Inspiration
Des idées à construire avec Shapes. Copiez un prompt dans votre agent de code et lancez-vous.
Build a whiteboard that snaps rough sketches into clean shapes.
Clean up a freehand diagram into crisp shapes.
Add shape recognition to a web canvas with no download.
Snap flowchart boxes and connector lines as you sketch them.
Add smart-shape drawing to a kids' learning app.
Recognize gesture shapes to trigger app actions.
Ce que fait le modèle
- Un trait à la fois, passé sous forme de ses points
[x, y], depuis PencilKit, tldraw, Excalidraw ou votre propre canevas. - Reconnaît rectangle, ellipse, triangle, étoile et ligne, et rejette les non-formes.
- Ajuste aux axes, aux cercles, aux carrés et aux rotations de 15 degrés.
- Ajustement en direct dans PencilKit via un seul appel :
canvasView.enableShapeSnapping(). - Tourne via LiteRT.js dans le navigateur. Node utilise des bibliothèques natives précompilées.
Prise en main
Ajoutez reconnaissance de formes à votre application iOS or macOS, Android or web en quelques lignes de code. Docs Shapes.
// Swift Package Manager
.package(url: "https://github.com/Desert-Ant-Labs/desert-ant-core", from: "3.5.0")
// target dependency
.product(name: "Shapes", package: "desert-ant-core")
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()
Add Shapes from Desert Ant Labs to this Swift project (iOS, macOS). What it does: Shapes : reconnaissance de formes à trait unique sur l'appareil. SDK: Swift (iOS, macOS) Repo: https://github.com/Desert-Ant-Labs/desert-ant-core#readme // Swift Package Manager .package(url: "https://github.com/Desert-Ant-Labs/desert-ant-core", from: "3.5.0") // target dependency .product(name: "Shapes", package: "desert-ant-core") Reference: - Model page: https://desertant.com/models/shapes/ - Full catalog and other models: https://desertant.com/llms.txt Add the SDK, then follow its README for the exact API and current version. Do not invent API names or method signatures; confirm them against the README.
// build.gradle.kts (Maven Central)
implementation("ai.desertant:shapes:3.5.0")
import ai.desertant.shapes.Shapes
val shapes = Shapes(context)
val shape = shapes.recognize(points)
// Shape? -> rectangle, ellipse, triangle, star, line
Add Shapes from Desert Ant Labs to this Kotlin project (Android).
What it does: Shapes : reconnaissance de formes à trait unique sur l'appareil.
SDK:
Kotlin (Android)
Repo: https://github.com/Desert-Ant-Labs/desert-ant-core#readme
// build.gradle.kts (Maven Central)
implementation("ai.desertant:shapes:3.5.0")
Reference:
- Model page: https://desertant.com/models/shapes/
- Full catalog and other models: https://desertant.com/llms.txt
Add the SDK, then follow its README for the exact API and current version. Do not invent API names or method signatures; confirm them against the README.
npm i @desert-ant-labs/shapes @litertjs/core
import { Shapes } from "@desert-ant-labs/shapes"; // browser
// import { Shapes } from "@desert-ant-labs/shapes/native"; // server-side Node
const shapes = await Shapes.load();
const shape = await shapes.recognize(points);
// { kind: "ellipse", center: {...}, ... } or null
Add Shapes from Desert Ant Labs to this JavaScript / TypeScript project (Web, Node.js). What it does: Shapes : reconnaissance de formes à trait unique sur l'appareil. SDK: JavaScript / TypeScript (Web, Node.js) Repo: https://github.com/Desert-Ant-Labs/desert-ant-core#readme 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, then follow its README for the exact API and current version. Do not invent API names or method signatures; confirm them against the README.
Spécifications
- Classes de formes
- Rectangle, ellipse, triangle, étoile, ligne
- Taille sur l'appareil
- 0,2 MB Core ML (Apple) ; 1,3 MB LiteRT (Android, web)
- Vitesse
- <10 ms
- Runtime web
- LiteRT.js dans le navigateur, bibliothèques natives sur Node
Shapes lit un trait à la fois : une forme dessinée en deux gestes n'est pas reconnue. Les tracés très approximatifs ou ambigus sont rejetés volontairement, si bien qu'un gribouillis ne devient jamais un triangle.
Les schémas en plusieurs traits demandent d'abord votre propre étape de regroupement.
FAQ
Qu'est-ce que Shapes ?
Reconnaissance de formes sur l'appareil qui transforme un trait à main levée en rectangle, ellipse, triangle, étoile ou ligne, en moins de 10 ms.
Shapes fonctionne-t-il sur l'appareil ?
Oui. Shapes s'exécute sur l'appareil, sans appel serveur : les données restent chez l'utilisateur.
Quelles plateformes Shapes prend-il en charge ?
Shapes est livré sous forme de SDK natif sur l'appareil pour Swift, Kotlin, JavaScript / TypeScript.
Combien coûte Shapes ?
Chaque modèle est gratuit jusqu'à 100k appareils actifs mensuels. L'inférence est illimitée. 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 sur Apple et 1,3 MB sur Android et le web.