Desert Ant Labs

Shapes.

Reconnaissance de formesDisponible

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.

0,2 MB
Sur l'appareil
<10 ms
Par reconnaissance
sur l'appareil
5
Classes de formes
rectangle, ellipse, triangle, étoile, ligne
1,3 MB
Dans le navigateur
récupéré une fois et mis en cache

Mesures internes. Core ML sur Apple, LiteRT.js dans le navigateur, bibliothèques natives précompilées sur Node.

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.

Shapes

Build a whiteboard that snaps rough sketches into clean shapes.

Shapes

Clean up a freehand diagram into crisp shapes.

Shapes

Add shape recognition to a web canvas with no download.

Shapes

Snap flowchart boxes and connector lines as you sketch them.

Shapes

Add smart-shape drawing to a kids' learning app.

Shapes

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.

iOS, macOS
Installation
// Swift Package Manager
.package(url: "https://github.com/Desert-Ant-Labs/desert-ant-core", from: "3.1.0")
// target dependency
.product(name: "Shapes", package: "desert-ant-core")
Exemple - Swift
import Shapes

let shapes = Shapes()
let shape = try await shapes.recognize(points: stroke)
// Shape? -> rectangle, ellipse, triangle, star, line
Exemple - PencilKit
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()
Construire avec un prompt
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.1.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.
Android
Installation
// build.gradle.kts (Maven Central)
implementation("ai.desertant:shapes:3.1.0")
Exemple - Kotlin
import ai.desertant.shapes.Shapes

val shapes = Shapes(context)
val shape = shapes.recognize(points)
// Shape? -> rectangle, ellipse, triangle, star, line
Construire avec un prompt
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.1.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.
Web, Node.js
Installation
npm i @desert-ant-labs/shapes @litertjs/core
Exemple - TypeScript
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
Construire avec un prompt
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 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 sur Apple et 1,3 MB sur Android et le web.

Ressources