Desert Ant Labs

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

Reconhecimento de formasDisponível

Reconhecimento de formas de traço único no dispositivo que transforma um gesto desenhado à mão num retângulo, elipse, triângulo, estrela ou linha perfeitos.

O Shapes recebe um único traço desenhado à mão, uma lista de pontos [x, y], e devolve geometria limpa: retângulo, elipse, triângulo, estrela ou linha. 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.

Na Apple, adiciona ao PencilKit o encaixe inteligente em formas ao estilo da app Notas, com uma única chamada e a pré-visualização ao vivo intacta. O próprio «Snap to Shape» da Apple é uma API privada que as apps de terceiros não podem invocar, por isso o Shapes preenche essa lacuna. É suficientemente pequeno para ser incluído dentro da app sem descarregar qualquer modelo, e a versão web executa inferência em JavaScript puro, sem runtime ONNX ou WASM.

Demonstração

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 formas

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

Casos de uso

Formas inteligentes ao estilo da app Notas

Adicione o encaixe em formas a um canvas do PencilKit com canvasView.enableShapeSnapping(). Pré-visualização ao vivo, anular e refazer preservados, preenchendo a lacuna deixada pela API privada Snap to Shape da Apple.

Ferramentas de diagramas e quadros brancos

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

Desenho multiplataforma

O mesmo reconhecedor é executado em iOS, Android e na web, por isso uma funcionalidade de desenho comporta-se de forma idêntica em todo o lado.

Sem descarregar modelos

Com cerca de 0,2 MB, é incluído dentro da app. Ao contrário do Google ML Kit Digital Ink, não há qualquer modelo de ~20 MB para obter em tempo de execução.

O que faz

  • Reconhece retângulo, elipse, triângulo, estrela e linha, e rejeita o que não são formas.
  • Encaixa em eixos, círculos, quadrados e rotações de 15 graus.
  • Encaixe ao vivo no PencilKit com uma única chamada: canvasView.enableShapeSnapping().
  • Inferência web em JavaScript 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 de 4 bits na Apple)
Latência
<10 ms
Runtime web
Nenhum; inferência em JavaScript puro

FAQ

O que é o Shapes?

Reconhecimento de formas de traço único no dispositivo que transforma um gesto desenhado à mão num retângulo, elipse, triângulo, estrela ou linha perfeitos.

O Shapes é executado no dispositivo?

Sim. O Shapes é executado inteiramente no dispositivo: a inferência acontece localmente, sem qualquer chamada a servidores, por isso os dados nunca saem do dispositivo.

Que plataformas o Shapes suporta?

O Shapes é disponibilizado como SDKs nativos, executados no dispositivo, para Swift, Kotlin, JavaScript / TypeScript.

Quanto custa o Shapes?

Todos os modelos são gratuitos para até 100k dispositivos ativos mensais por SDK. Inferência ilimitada por utilizador. Contacte-nos para licenças personalizadas.

Qual é a precisão ou a rapidez 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