Shapes: reconhecimento de formas de traço único no dispositivo
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.
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
// Swift Package Manager .package(url: "https://github.com/Desert-Ant-Labs/shapes-swift", from: "0.1.0")
import Shapes let shape = try ShapeRecognizer().recognize(points: stroke) // Shape? -> rectangle, ellipse, triangle, star, line
// build.gradle.kts (via JitPack)
implementation("com.github.Desert-Ant-Labs:shapes-kotlin:0.1.0")
import ai.desertant.shapes.Shapes val shape = Shapes.recognize(points) // Shape? -> rectangle, ellipse, triangle, star, line
npm i @desert-ant-labs/shapes
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.