Desert Ant Labs

Shapes: reconhecimento de formas de traço único no dispositivo

Reconhecimento de formasDisponível

Reconhecimento de formas por traço único no dispositivo, que transforma um gesto feito à mão em um retângulo, elipse, triângulo, estrela ou linha limpos.

O Shapes recebe um único traço feito à mão, uma lista de pontos [x, y], e retorna geometria limpa: retângulo, elipse, triângulo, estrela ou linha. Ele ajusta formas vetoriais precisas, encaixa em eixos, círculos, quadrados e rotações de 15 graus, e rejeita rabiscos que não são formas.

No Apple, ele adiciona ao PencilKit o encaixe de formas inteligente ao estilo do Notes com uma única chamada, mantendo o preview ao vivo. O próprio “Snap to Shape” da Apple é uma API privada que apps de terceiros não podem chamar, então o Shapes preenche essa lacuna. Ele é pequeno o suficiente para ser distribuído dentro do app, sem download de modelo, e a versão web roda inferência em JS puro, sem runtime ONNX ou WASM.

Demo

Desempenho

Menos de 10 ms por traço, a partir de um modelo de 0,2 MB, sem runtime de inferência na web.

0.2 MB
No dispositivo
<10 ms
Por reconhecimento
5
Classes de forma

Medições internas. Inferência em JS puro na web, Core ML no Apple.

Casos de uso

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.

Ferramentas de diagrama e quadro branco

Transforme traços à mão livre em geometria precisa. Funciona com dados de traço do tldraw e do Excalidraw.

Desenho multiplataforma

O mesmo reconhecedor roda no iOS, no Android e na web, então um recurso de desenho se comporta de forma idêntica em todo lugar.

Sem download de modelo

Com cerca de 0,2 MB, ele é distribuído dentro do app. Diferente do Google ML Kit Digital Ink, não há um modelo de ~20 MB para baixar em tempo de execução.

O que ele faz

  • 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 chamada: canvasView.enableShapeSnapping().
  • Inferência web em JS puro: sem runtime ONNX ou WASM.

Plataformas e instalação

SwiftiOS, macOS
Instalação
// Swift Package Manager
.package(url: "https://github.com/Desert-Ant-Labs/shapes-swift", from: "0.1.0")
Exemplo
import Shapes

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

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

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

Especificações

Formas
Retângulo, elipse, triângulo, estrela, linha
Tamanho no dispositivo
0,2 MB (Core ML 4-bit no Apple)
Latência
<10 ms
Runtime web
Nenhum; inferência em JS puro

FAQ

O que é o Shapes?

Reconhecimento de formas por traço único no dispositivo, que transforma um gesto feito à mão em um retângulo, elipse, triângulo, estrela ou linha limpos.

O Shapes roda no dispositivo?

Sim. O Shapes roda inteiramente no dispositivo: a inferência acontece localmente, sem chamada a servidor, então os dados nunca saem do dispositivo.

Quais plataformas o Shapes suporta?

O Shapes é distribuído como SDKs nativos no dispositivo para Swift, Kotlin, JavaScript / TypeScript.

Quanto custa o Shapes?

Cada modelo é grátis 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, sem runtime de inferência na web.

Recursos