Shapes.
オンデバイスの図形認識。手描きの一筆を長方形、楕円、三角形、星、直線に変換します。10 ms 未満。
デモ
ラフなスケッチを、完璧な図形に。
ラフな円を描くと、Shapes がきれいな円にスナップします。Shapes は正確なベクター図形をあてはめ、軸、円、正方形、15 度単位の回転にスナップし、図形でない走り書きは棄却します。
Apple では、1 回の呼び出しで PencilKit のキャンバスに「メモ」アプリ風のスマート図形スナップを追加でき、ライブプレビューもそのまま残ります。Apple 自身の「Snap to Shape」はサードパーティアプリが呼び出せないプライベート API なので、Shapes が同じ仕事を 1 行で引き受けます。
モデルはアプリに同梱できる大きさで、ダウンロードは不要です。ブラウザでは、Shapes は LiteRT.js を通して動きます。
1 ストロークあたり 10 ms 未満。
Apple では 0.2MB、Android と Web では 1.3MB のモデルによる、1 ストロークあたり 10 ms 未満。
社内測定値。Apple は Core ML、ブラウザは LiteRT.js、Node はビルド済みのネイティブライブラリです。
「メモ」アプリ風のスマート図形
canvasView.enableShapeSnapping() で PencilKit のキャンバスに図形スナップを追加します。ライブプレビュー、取り消し・やり直しはそのまま保たれ、Apple のプライベートな Snap to Shape API が残した隙間を埋めます。
手描きの図をきれいに整える
図解やホワイトボードのツールで、ラフなストロークを正確な図形に変えます。tldraw や Excalidraw のストロークデータにも対応します。
クロスプラットフォームの描画
1 つの認識エンジンが iOS、Android、Web をカバーするので、スナップの処理は一度書けば済みます。
ダウンロードではなく、アプリに同梱
Apple では認識エンジンは 0.2MB でバイナリに同梱され、Android パッケージも既定で同梱します。ブラウザでは、SDK が 1.3MB を一度だけ取得してキャッシュします。
インスピレーション
Shapes で作るためのアイデア。プロンプトをコーディングエージェントにコピーして始めましょう。
Build a whiteboard that snaps rough sketches into clean shapes.
Build a drawing canvas where a freehand stroke is passed to Desert Ant's Shapes on-device and snapped to a clean rectangle, ellipse, triangle, star, or line in under 10ms. Keep the ink as an undo. Works offline. Build it with the Desert Ant SDK. Shapes (Swift, Kotlin, JavaScript / TypeScript). Install and API: https://desertant.com/docs/shapes/. Install: SwiftPM desert-ant-core; Maven ai.desertant:shapes:3.1.0; npm i @desert-ant-labs/shapes @litertjs/core. SDK source: https://github.com/Desert-Ant-Labs/desert-ant-core. Machine-readable catalog of every model and SDK: https://desertant.com/llms.txt.
Clean up a freehand diagram into crisp shapes.
In a diagramming tool, run Desert Ant's Shapes on each stroke to convert rough sketches into clean geometry as the user draws. Build it with the Desert Ant SDK. Shapes (Swift, Kotlin, JavaScript / TypeScript). Install and API: https://desertant.com/docs/shapes/. Install: SwiftPM desert-ant-core; Maven ai.desertant:shapes:3.1.0; npm i @desert-ant-labs/shapes @litertjs/core. SDK source: https://github.com/Desert-Ant-Labs/desert-ant-core. Machine-readable catalog of every model and SDK: https://desertant.com/llms.txt.
Add shape recognition to a web canvas with no download.
Add Desert Ant's Shapes to a browser drawing app (WebAssembly), so a hand-drawn stroke snaps to a clean shape with nothing to download and no server. Build it with the Desert Ant SDK. Shapes (Swift, Kotlin, JavaScript / TypeScript). Install and API: https://desertant.com/docs/shapes/. Install: SwiftPM desert-ant-core; Maven ai.desertant:shapes:3.1.0; npm i @desert-ant-labs/shapes @litertjs/core. SDK source: https://github.com/Desert-Ant-Labs/desert-ant-core. Machine-readable catalog of every model and SDK: https://desertant.com/llms.txt.
Snap flowchart boxes and connector lines as you sketch them.
In a diagram or flowchart tool, run Desert Ant's Shapes on each stroke so hand-drawn boxes and connector lines snap to clean geometry live. (Add your own arrowheads on a recognized line.) Build it with the Desert Ant SDK. Shapes (Swift, Kotlin, JavaScript / TypeScript). Install and API: https://desertant.com/docs/shapes/. Install: SwiftPM desert-ant-core; Maven ai.desertant:shapes:3.1.0; npm i @desert-ant-labs/shapes @litertjs/core. SDK source: https://github.com/Desert-Ant-Labs/desert-ant-core. Machine-readable catalog of every model and SDK: https://desertant.com/llms.txt.
Add smart-shape drawing to a kids' learning app.
Use Desert Ant's Shapes on-device so a child's rough drawing of a circle or triangle snaps to a clean shape, teaching by doing. Works offline. Build it with the Desert Ant SDK. Shapes (Swift, Kotlin, JavaScript / TypeScript). Install and API: https://desertant.com/docs/shapes/. Install: SwiftPM desert-ant-core; Maven ai.desertant:shapes:3.1.0; npm i @desert-ant-labs/shapes @litertjs/core. SDK source: https://github.com/Desert-Ant-Labs/desert-ant-core. Machine-readable catalog of every model and SDK: https://desertant.com/llms.txt.
Recognize gesture shapes to trigger app actions.
Use Desert Ant's Shapes to turn a drawn gesture (a circle, a triangle) into an app action, recognized on-device in under 10ms. Build it with the Desert Ant SDK. Shapes (Swift, Kotlin, JavaScript / TypeScript). Install and API: https://desertant.com/docs/shapes/. Install: SwiftPM desert-ant-core; Maven ai.desertant:shapes:3.1.0; npm i @desert-ant-labs/shapes @litertjs/core. SDK source: https://github.com/Desert-Ant-Labs/desert-ant-core. Machine-readable catalog of every model and SDK: https://desertant.com/llms.txt.
モデルができること
- 一度にひと筆ずつ、その
[x, y]座標として渡します。PencilKit、tldraw、Excalidraw、あるいは自作のキャンバスから。 - 長方形、楕円、三角形、星、直線を認識し、図形でないものは棄却します。
- 軸、円、正方形、15 度単位の回転にスナップします。
- 1 回の呼び出しで PencilKit のライブスナップ:
canvasView.enableShapeSnapping()。 - ブラウザでは LiteRT.js を通して動作します。Node はビルド済みのネイティブライブラリを使います。
はじめに
図形認識 を、数行のコードで iOS or macOS, Android or web アプリに追加。 Shapes のドキュメント.
// 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")
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()
Add Shapes from Desert Ant Labs to this Swift project (iOS, macOS). What it does: Shapes:オンデバイスの単一ストローク図形認識. 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.
// build.gradle.kts (Maven Central)
implementation("ai.desertant:shapes:3.1.0")
import ai.desertant.shapes.Shapes
val shapes = Shapes(context)
val shape = shapes.recognize(points)
// Shape? -> rectangle, ellipse, triangle, star, line
Add Shapes from Desert Ant Labs to this Kotlin project (Android).
What it does: Shapes:オンデバイスの単一ストローク図形認識.
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.
npm i @desert-ant-labs/shapes @litertjs/core
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
Add Shapes from Desert Ant Labs to this JavaScript / TypeScript project (Web, Node.js). What it does: Shapes:オンデバイスの単一ストローク図形認識. 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.
仕様
- 図形クラス
- 長方形、楕円、三角形、星、直線
- オンデバイスサイズ
- 0.2MB Core ML(Apple)、1.3MB LiteRT(Android、Web)
- 速度
- 10 ms 未満
- Web ランタイム
- ブラウザは LiteRT.js、Node はネイティブライブラリ
Shapes が読み取るのは一度にひと筆だけなので、2 画で描いた図形は認識しません。あまりに雑な、あるいはどちらとも取れるストロークはあえて棄却するため、走り書きが三角形にスナップすることはありません。複数画の図解を扱うには、まず自前でストロークをまとめる処理が必要です。
FAQ
Shapes とは?
オンデバイスの図形認識。手描きの一筆を長方形、楕円、三角形、星、直線に変換します。10 ms 未満。
Shapes はオンデバイスで動作しますか?
はい。Shapes はデバイス上で動作し、サーバーへの通信は発生しません。データはユーザーの手元に残ります。
Shapes はどのプラットフォームに対応していますか?
Shapes は Swift, Kotlin, JavaScript / TypeScript 向けのネイティブなオンデバイス SDK として提供されます。
Shapes の料金はいくらですか?
すべてのモデルは、SDK ごとに月間アクティブデバイス 100k 台まで無料です。各ユーザーがモデルを実行する回数に制限はありません。 カスタムライセンスについては、お問い合わせください。
Shapes の精度や速度はどれくらいですか?
Apple では 0.2MB、Android と Web では 1.3MB のモデルによる、1 ストロークあたり 10 ms 未満。