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. O modelo 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. O modelo é suficientemente pequeno para ser incluído dentro da app sem descarregar qualquer modelo, e a versão web usa um pipeline WebAssembly local com inferência do LiteRT.js.
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 através de um pipeline WebAssembly local com LiteRT.js.
Plataformas e instalação
// Swift Package Manager
.package(url: "https://github.com/Desert-Ant-Labs/shapes", from: "0.5.0")
import Shapes
let shapes = Shapes()
let shape = try await shapes.recognize(points: stroke)
// Shape? -> rectangle, ellipse, triangle, star, line
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()
// build.gradle.kts (Maven Central)
implementation("ai.desertant:shapes:0.5.0")
import ai.desertant.shapes.Shapes
val shapes = Shapes(context)
val shape = shapes.recognize(points)
// Shape? -> rectangle, ellipse, triangle, star, line
npm i @desert-ant-labs/shapes @litertjs/core
import { Shapes } from "@desert-ant-labs/shapes";
const shapes = await Shapes.load();
const shape = await shapes.recognize(points);
// { kind: "ellipse", center: {...}, ... } or null
Add Shapes from Desert Ant Labs to this project.
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.
SDKs (use the one that matches this project's platform):
Swift (iOS, macOS)
Repo: https://github.com/Desert-Ant-Labs/shapes
// Swift Package Manager
.package(url: "https://github.com/Desert-Ant-Labs/shapes", from: "0.5.0")
Kotlin (Android)
Repo: https://github.com/Desert-Ant-Labs/shapes
// build.gradle.kts (Maven Central)
implementation("ai.desertant:shapes:0.5.0")
JavaScript / TypeScript (Web, Node.js)
Repo: https://github.com/Desert-Ant-Labs/shapes
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 that matches this project's platform, 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
- 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
- WebAssembly + LiteRT.js
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.