Shapes:设备端单笔画形状识别
设备端单笔画形状识别,把手绘线条变成规整的矩形、椭圆、三角形、星形或直线。
Shapes接收一笔手绘,即一组 [x, y] 点,返回规整的几何图形:矩形、椭圆、三角形、星形或直线。它拟合精确的矢量形状,对齐到坐标轴、正圆、正方形和15度旋转,并拒绝那些并非形状的涂鸦。
在Apple平台上,只需一次调用即可为PencilKit添加「备忘录」式的智能形状吸附,实时预览不受影响。Apple自家的「Snap to Shape」是第三方应用无法调用的私有API,Shapes正好填补了这一空缺。它足够小,可直接内置在应用中,无需下载模型;Web版采用纯JS推理,不依赖ONNX或WASM运行时。
演示
性能
每笔用时不到10毫秒,来自一个0.2 MB的模型,Web端无需推理运行时。
内部测量数据。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度旋转。
- 只需一次调用即可实现PencilKit实时吸附:
canvasView.enableShapeSnapping()。 - 纯JS的Web推理:无需ONNX或WASM运行时。
平台与安装
// 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
规格
- 形状
- 矩形、椭圆、三角形、星形、直线
- 设备端体积
- 0.2 MB(Apple上为4-bit Core ML)
- 延迟
- <10毫秒
- Web运行时
- 无;纯JS推理
常见问题
Shapes是什么?
设备端单笔画形状识别,把手绘线条变成规整的矩形、椭圆、三角形、星形或直线。
Shapes在设备上运行吗?
是的。Shapes完全在设备上运行:推理在本地完成,不调用任何服务器,因此数据不会离开设备。
Shapes支持哪些平台?
Shapes以原生设备端SDK的形式提供,支持Swift, Kotlin, JavaScript / TypeScript。
Shapes的价格是多少?
每个模型的每个SDK均可免费支持最多10万台月活跃设备。每位用户可无限次推理。 如需定制授权,请联系我们。
Shapes的准确度和速度如何?
每笔用时不到10毫秒,来自一个0.2 MB的模型,Web端无需推理运行时。