Desert Ant Labs

Shapes : reconnaissance de formes à trait unique sur l'appareil

Reconnaissance de formesDisponible

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.

0.2 MB
Sur l'appareil
<10 ms
Par reconnaissance
5
Classes de formes

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

SwiftiOS, macOS
Installation
// Swift Package Manager
.package(url: "https://github.com/Desert-Ant-Labs/shapes-swift", from: "0.1.0")
Exemple
import Shapes

let shape = try ShapeRecognizer().recognize(points: stroke)
// Shape? -> rectangle, ellipse, triangle, star, line
KotlinAndroid
Installation
// build.gradle.kts (via JitPack)
implementation("com.github.Desert-Ant-Labs:shapes-kotlin:0.1.0")
Exemple
import ai.desertant.shapes.Shapes

val shape = Shapes.recognize(points)
// Shape? -> rectangle, ellipse, triangle, star, line
JavaScript / TypeScriptWeb, Node.js
Installation
npm i @desert-ant-labs/shapes
Exemple
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.

Ressources