Desert Ant Labs

Shapes:オンデバイスの単一ストローク図形認識

図形認識提供中

手描きのひと筆を、きれいな長方形、楕円、三角形、星、直線に変換する、オンデバイスの単一ストローク図形認識。

Shapes は、手描きの 1 ストローク、つまり [x, y] 座標のリストを受け取り、きれいな図形(長方形、楕円、三角形、星、直線)を返します。正確なベクター図形にフィットさせ、軸・真円・正方形・15 度単位の回転にスナップし、図形ではない走り書きは棄却します。

Apple では、1 回の呼び出しで PencilKit に「メモ」アプリ風のスマート図形スナップを追加でき、ライブプレビューもそのまま保てます。Apple 自身の「Snap to Shape」はサードパーティアプリが呼び出せないプライベート API のため、Shapes がその隙間を埋めます。モデルのダウンロードなしでアプリに同梱できるほど小さく、Web ビルドは ONNX も WASM ランタイムも使わない純粋な JS で推論します。

デモ

パフォーマンス

0.2 MB のモデルで、ストロークあたり 10 ms 未満。Web では推論ランタイムも不要です。

0.2 MB
オンデバイス
<10 ms
認識 1 回あたり
5
図形クラス

社内測定値。Web では純粋な JS、Apple では Core ML で推論します。

ユースケース

「メモ」アプリ風のスマート図形

canvasView.enableShapeSnapping() で PencilKit のキャンバスに図形スナップを追加します。ライブプレビュー、取り消し・やり直しはそのまま保たれ、Apple のプライベートな Snap to Shape API が残した隙間を埋めます。

図解・ホワイトボードツール

フリーハンドのストロークを正確な図形に整えます。tldraw や Excalidraw のストロークデータにも対応します。

クロスプラットフォームの描画

同じ認識エンジンが iOS、Android、Web で動作するため、描画機能がどこでも同じように振る舞います。

モデルのダウンロード不要

約 0.2 MB とアプリに同梱できるサイズです。Google ML Kit Digital Ink とは異なり、実行時に約 20 MB のモデルを取得する必要はありません。

できること

  • 長方形、楕円、三角形、星、直線を認識し、図形でないものは棄却します。
  • 軸、真円、正方形、15 度単位の回転にスナップします。
  • 1 回の呼び出しで PencilKit のライブスナップ:canvasView.enableShapeSnapping()
  • 純粋な JS による Web 推論:ONNX も WASM ランタイムも不要。

プラットフォームとインストール

SwiftiOS, macOS
インストール
// 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
KotlinAndroid
インストール
// 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
JavaScript / TypeScriptWeb, Node.js
インストール
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

仕様

図形
長方形、楕円、三角形、星、直線
オンデバイスサイズ
0.2 MB(Apple では 4-bit Core ML)
レイテンシ
10 ms 未満
Web ランタイム
なし。純粋な JS による推論

FAQ

Shapes とは?

手描きのひと筆を、きれいな長方形、楕円、三角形、星、直線に変換する、オンデバイスの単一ストローク図形認識。

Shapes はオンデバイスで動作しますか?

はい。Shapes は完全にオンデバイスで動作します。推論はローカルで行われ、サーバーへの通信は発生しないため、データがデバイスの外に出ることはありません。

Shapes はどのプラットフォームに対応していますか?

Shapes は Swift, Kotlin, JavaScript / TypeScript 向けのネイティブなオンデバイス SDK として提供されます。

Shapes の料金はいくらですか?

すべてのモデルは、SDK ごとに月間アクティブデバイス 100k 台まで無料です。ユーザーあたりの推論は無制限です。 カスタムライセンスについては、お問い合わせください

Shapes の精度や速度はどれくらいですか?

0.2 MB のモデルで、ストロークあたり 10 ms 未満。Web では推論ランタイムも不要です。

リソース