Desert Ant Labs

Shapes.

Reconhecimento de formasDisponível

Reconhecimento de formas no dispositivo que vira um traço à mão em retângulo, elipse, triângulo, estrela ou linha em 10 ms.

Demo

Rascunho tosco. Forma perfeita.

Desenhe um círculo torto e o Shapes o encaixa em um círculo perfeito. O Shapes ajusta geometria vetorial precisa, encaixa em eixos, círculos, quadrados e rotações de 15 graus, e rejeita rabiscos que não são formas.

Em dispositivos Apple, uma única chamada adiciona a um canvas do PencilKit o encaixe de formas inteligente ao estilo do Notes, e o preview ao vivo continua lá. O próprio “Snap to Shape” da Apple é uma API privada que apps de terceiros não podem chamar, então o Shapes faz o mesmo trabalho em uma linha.

O modelo é pequeno o bastante para ir dentro do app, sem download. No navegador, o Shapes roda no LiteRT.js.

Menos de 10 ms por traço.

Menos de 10 ms por traço, a partir de um modelo de 0,2 MB em dispositivos Apple e 1,3 MB no Android e na web.

0,2 MB
No dispositivo
<10 ms
Por reconhecimento
no dispositivo
5
Classes de forma
retângulo, elipse, triângulo, estrela, linha
1,3 MB
No navegador
baixado uma vez e mantido em cache

Medições internas. Core ML em dispositivos Apple, LiteRT.js no navegador, bibliotecas nativas pré-compiladas no Node.

Formas inteligentes ao estilo do Notes

Adicione o encaixe de formas a um canvas do PencilKit com canvasView.enableShapeSnapping(). Preview ao vivo, desfazer e refazer preservados, preenchendo a lacuna deixada pela API privada Snap to Shape da Apple.

Passe a limpo um diagrama à mão livre

Transforme traços aproximados em geometria precisa dentro de uma ferramenta de diagrama ou de quadro branco. Funciona com dados de traço do tldraw e do Excalidraw.

Desenho multiplataforma

Um único reconhecedor cobre iOS, Android e web, então você escreve o código de encaixe uma vez só.

Vai dentro do app, não como download

Em dispositivos Apple, o reconhecedor tem 0,2 MB e vai dentro do binário, e o pacote Android o embute por padrão. No navegador, o SDK baixa 1,3 MB uma única vez e guarda em cache.

Inspiração

Ideias para construir com o Shapes. Copie um prompt para o seu agente de código e comece.

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.

O que o modelo faz

  • Um traço por vez, passado como seus pontos [x, y], do PencilKit, tldraw, Excalidraw ou do seu próprio canvas.
  • Reconhece retângulo, elipse, triângulo, estrela e linha, e rejeita o que não é forma.
  • Encaixa em eixos, círculos, quadrados e rotações de 15 graus.
  • Encaixe ao vivo no PencilKit com uma única chamada: canvasView.enableShapeSnapping().
  • Roda via LiteRT.js no navegador. No Node, usa bibliotecas nativas pré-compiladas.

Primeiros passos

Adicione reconhecimento de formas ao seu app iOS or macOS, Android or web em poucas linhas de código. Docs do Shapes.

iOS, macOS
Instalação
// 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")
Exemplo - Swift
import Shapes

let shapes = Shapes()
let shape = try await shapes.recognize(points: stroke)
// Shape? -> rectangle, ellipse, triangle, star, line
Exemplo - 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()
Crie com um prompt
Add Shapes from Desert Ant Labs to this Swift project (iOS, macOS).

What it does: reconhecimento de formas de traço único no dispositivo.

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
Instalação
// build.gradle.kts (Maven Central)
implementation("ai.desertant:shapes:3.1.0")
Exemplo - Kotlin
import ai.desertant.shapes.Shapes

val shapes = Shapes(context)
val shape = shapes.recognize(points)
// Shape? -> rectangle, ellipse, triangle, star, line
Crie com um prompt
Add Shapes from Desert Ant Labs to this Kotlin project (Android).

What it does: reconhecimento de formas de traço único no dispositivo.

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
Instalação
npm i @desert-ant-labs/shapes @litertjs/core
Exemplo - 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
Crie com um prompt
Add Shapes from Desert Ant Labs to this JavaScript / TypeScript project (Web, Node.js).

What it does: reconhecimento de formas de traço único no dispositivo.

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.

Especificações

Classes de forma
Retângulo, elipse, triângulo, estrela, linha
Tamanho no dispositivo
0,2 MB Core ML (Apple); 1,3 MB LiteRT (Android, web)
Velocidade
<10 ms
Runtime web
LiteRT.js no navegador, bibliotecas nativas no Node

O Shapes lê um traço por vez, então uma forma desenhada em dois traços não é reconhecida. Riscos muito toscos ou ambíguos são rejeitados de propósito, para que um rabisco nunca vire um triângulo.

Diagramas de vários traços precisam antes de uma etapa de agrupamento feita por você.

FAQ

O que é o Shapes?

Reconhecimento de formas no dispositivo que vira um traço à mão em retângulo, elipse, triângulo, estrela ou linha em 10 ms.

O Shapes roda no dispositivo?

Sim. O Shapes roda no dispositivo, sem chamada a servidor, então os dados ficam com o usuário.

Quais plataformas o Shapes suporta?

O Shapes é distribuído como um SDK nativo no dispositivo para Swift, Kotlin, JavaScript / TypeScript.

Quanto custa o Shapes?

Cada modelo é gratuito para até 100 mil dispositivos ativos mensais por SDK. Inferência ilimitada por usuário. Fale conosco para licenças personalizadas.

Qual a precisão e a velocidade do Shapes?

Menos de 10 ms por traço, a partir de um modelo de 0,2 MB em dispositivos Apple e 1,3 MB no Android e na web.

Recursos