Desert Ant Labs

Shapes: Formigenkänning med ett penndrag på enheten

FormigenkänningTillgänglig

Formigenkänning på enheten med ett penndrag som förvandlar ett handritat streck till en ren rektangel, ellips, triangel, stjärna eller linje.

Shapes tar ett handritat streck, en lista med [x, y]-punkter, och returnerar ren geometri: rektangel, ellips, triangel, stjärna eller linje. Den anpassar exakta vektorformer, fäster mot axlar, cirklar, kvadrater och 15-graders rotationer, och avvisar klotter som inte är former.

På Apple lägger den till smart formfästning i Notes-stil till PencilKit med ett enda anrop, med live-förhandsvisningen intakt. Apples egen ”Snap to Shape” är ett privat API som appar från tredje part inte kan anropa, så Shapes fyller den luckan. Den är liten nog att levereras inuti appen utan någon modellnedladdning, och webbygget kör ren JS-inferens utan någon ONNX- eller WASM-körtid.

Demo

Prestanda

Under 10 ms per streck, från en modell på 0,2 MB utan någon inferenskörtid på webben.

0.2 MB
På enheten
<10 ms
Per igenkänning
5
Formklasser

Interna mätningar. Ren JS-inferens på webben, Core ML på Apple.

Användningsfall

Smarta former i Notes-stil

Lägg till formfästning på en PencilKit-canvas med canvasView.enableShapeSnapping(). Live-förhandsvisning, ångra och gör om bevaras, och fyller luckan som Apples privata Snap to Shape-API lämnar.

Diagram- och whiteboardverktyg

Rensa upp frihandsstreck till exakt geometri. Fungerar med streckdata från tldraw och Excalidraw.

Plattformsoberoende ritande

Samma igenkännare körs på iOS, Android och webben, så en ritfunktion beter sig likadant överallt.

Ingen modellnedladdning

På cirka 0,2 MB levereras den inuti appen. Till skillnad från Google ML Kit Digital Ink finns ingen ~20 MB-modell att hämta vid körning.

Vad den gör

  • Känner igen rektangel, ellips, triangel, stjärna och linje, och avvisar det som inte är former.
  • Fäster mot axlar, cirklar, kvadrater och 15-graders rotationer.
  • Live-fästning i PencilKit via ett anrop: canvasView.enableShapeSnapping().
  • Ren JS-inferens på webben: ingen ONNX- eller WASM-körtid.

Plattformar och installation

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

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

val shape = Shapes.recognize(points)
// Shape? -> rectangle, ellipse, triangle, star, line
JavaScript / TypeScriptWeb, Node.js
Installera
npm i @desert-ant-labs/shapes
Exempel
import { recognize } from "@desert-ant-labs/shapes";

const shape = await recognize(points);
// { type: "ellipse", center: [120, 90], ... } or null

Specifikationer

Former
Rektangel, ellips, triangel, stjärna, linje
Storlek på enheten
0,2 MB (4-bitars Core ML på Apple)
Latens
<10 ms
Webbkörtid
Ingen; ren JS-inferens

Vanliga frågor

Vad är Shapes?

Formigenkänning på enheten med ett penndrag som förvandlar ett handritat streck till en ren rektangel, ellips, triangel, stjärna eller linje.

Körs Shapes lokalt på enheten?

Ja. Shapes körs helt lokalt på enheten: inferensen sker lokalt utan något serveranrop, så data lämnar aldrig enheten.

Vilka plattformar stöder Shapes?

Shapes levereras som nativa on-device-SDK:er för Swift, Kotlin, JavaScript / TypeScript.

Vad kostar Shapes?

Varje modell är gratis för upp till 100k månadsaktiva enheter per SDK. Obegränsad inferens per användare. Kontakta oss för anpassade licenser.

Hur träffsäker eller snabb är Shapes?

Under 10 ms per streck, från en modell på 0,2 MB utan någon inferenskörtid på webben.

Resurser