@desert-ant-labs/shapes

中文文档
4.3.0发布于 2026/11/06SEE LICENSE IN LICENSE.mdTypeScriptES Module近 30 天下载 7623

对JavaScript的On-device单打形状识别. 在浏览器(WebAssembly + LiteRT.js)和服务器端(native)运行,从一个导入.

中文使用文档
文档目录5 节
  1. 形状
  2. 正在装入模型
  3. 保险箱和安保部
  4. 平台
  5. 许可证

@ 沙漠- ant- labs/ 形状

形状在浏览器和节点中将一手拉出一手的中风变成干净的形状,连接器,或箭头. 形状识别出13种:直通或曲线连接器,箭头,长方形,椭圆形,三角形,菱形,五角形,六角形,恒星,心相,云相,和拼写等,您的应用可以用作去除手势. 对于任何其他中风,例如笔迹, recognize 返回时 null这样你就可以保持中风 作为墨水。 中风从不离开装置.

一个小模型每类得分,并标出属于箭头的分数. 几何相合器然后计算出干净的形状. 形状只接受中风,前提是模型的自信和适合性都明确了这种被校准的阈值. 默认情况下,形状会将线条和边缘接通到轴上,将近圆圈接通到圆圈上,将近方形接通到正方形上,将近正多边形接通到正多边形上,再自转到15°步.

两条共用一条 Shapes API : (英语)

  • @desert-ant-labs/shapes (默认):一个WebAssembly输油管 LitteRT.js (法语) 推论: 浏览器。它没有本土的依赖性,因此,对于一个多目标捆绑器(Next.js, Remix, SvelteKit, Nuxt)的每个目标,包括浏览器捆绑和客户端-组件SSR通过在节点提供的这些框架,一个单一的导入结构是干净的。 这是安全的 导入 在服务器侧渲染时,但LiteRT.js需要浏览器(或Web Worker)来初始化,所以 Shapes.load() 运行仅在浏览器中推导;在平原节点中调用它会丢出一个可操作错误,指向您 /native。 。 。 .
  • @desert-ant-labs/shapes/native: 预建的本地核心, macOS上的核心ML和Linux上的LiteRT, for 服务器侧推论 在节点。 没有 @litertjs/core没有建筑工具 没有旗帜 从仅服务器代码(API路由,服务器动作,平分节点脚本)导入. 不要从同样在浏览器中的组件导入它 .
# Browser (default entry):
npm i @desert-ant-labs/shapes @litertjs/core

# Server-side inference in Node (/native entry) needs no extra install:
npm i @desert-ant-labs/shapes

该型号被从Hugging Face下载,首先在SDK的被贴标签上使用,后被缓存. Npm 柏油丸里没有模型大小的货.

import { Shapes } from "@desert-ant-labs/shapes";

const shapes = await Shapes.load();
const shape = await shapes.recognize(points);   // [{x, y}, ...] or [x0, y0, ...]
// { kind: "ellipse", center: {x, y}, semiMajor, semiMinor, rotation, outline: [...] }

shapes.dispose(); // release the model (both builds)

纯服务器代码,希望本地核心从中导入相同的 API /native 子路径 :

import { Shapes } from "@desert-ant-labs/shapes/native"; // server only

形状

recognize 返回时 null 当中风不是形状。 否则 recognize 返回这些对象之一,但受下列因素影响: kind。每个形状都有 outline,可以绘制多线。 封闭形状的轮廓不重复其第一分,而箭形的轮廓就是它的轴.

  • line - 说吧 from, (中文(简体) ), to
  • curve - 说吧 from, (中文(简体) ), control1, (中文(简体) ), control2, (中文(简体) ), to (一个立方贝塞尔)
  • arrow - 说吧 from, (中文(简体) ), control1, (中文(简体) ), control2, (中文(简体) ), to, (中文(简体) ), startHead, (中文(简体) ), endHead。 。 。 . arrowheads(shape, length) 返回标题为 [barb, tip, barb] 多管线.
  • rectangle - 说吧 corners四周四个点
  • ellipse - 说吧 center, (中文(简体) ), semiMajor, (中文(简体) ), semiMinor, (中文(简体) ), rotation (弧度数)
  • triangle, (中文(简体) ), diamond, (中文(简体) ), pentagon, (中文(简体) ), hexagon - 说吧 vertices周围
  • star - 说吧 center, (中文(简体) ), outerRadius, (中文(简体) ), innerRadius, (中文(简体) ), rotation (弧度,0放一个尖端直上), pointCount
  • heart - 说吧 center, (中文(简体) ), width, (中文(简体) ), height
  • cloud - 说吧 outline 仅限
  • scribble - 说吧 hull,"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出自"出 删除船体内的内容.

在斯威夫特和克特林语中,种类和场名是相同的,因此在一个平台上识别出一通中风来形容自己在每一个平台上都一样.

recognize(points, options) 需要三种选择:

  • rotation数字 : "snapped" 默认值。 它将一个形状自转至15°级,并按向轴上水平或垂直5°范围内的线和边缘. "upright" 删除旋转. "free" 保持所绘制的形状,并跳过按键到圆形、正方形和正多边形.
  • kinds:形状识别的种类,所有13个默认. 别管了 "scribble" 如果你的应用没有抹去的手势.
  • minimumConfidence:最低分级置信度形状接受,在每种分级阈值上方. 默认 0 仅适用已校正阈值.

正在装入模型

默认 Shapes.load() 从 Hugging Face 下载模型文件(desert-ant-labs/shapes在SDK的被贴标签, 验证,并缓存它们。 浏览器构建获取 .tflite 用于 LiteRT.js 并在浏览器中缓存它. 土著建筑/native获取 .tflite 在 Linux 上还是 .mlmodelc/ 在 macOS 上,并在 OS 缓存目录下缓存它.

跳过 Higging Face 的下载:

  • directory:一个明确的模型目录(内部构建,或浏览器在节点下构建). 文件已经使用离线,否则模型会被下载到其中.
  • modelBaseUrl: 例如, 为模型文件服务的基础 URL "/assets/shapes/" (浏览器建设).

Shapes.load() 并接受:

  • cacheRoot: 管理上磁盘缓存的基础目录,默认 ~/.cache (内部构建,或浏览器在节点下构建).
  • onProgress: 加载或下载进度回调,分数在 [0, 1]。 。 。 .

浏览器- 仅构建- 选项 :

  • litert:一个带给你的 @litertjs/core 模块.
  • litertWasmDir: LiteRT.js Wasm 目录的URL或路径.
  • accelerator: 一个 "wasm", (中文(简体) ), "webgpu",或 "webnn"。 。 。 .

保险箱和安保部

默认 @desert-ant-labs/shapes 导入可直接用于组件 : 它是纯 JavaScript + Web Assembly 没有本地模块, 所以捆绑者可以构建 用于浏览器和节点 SSR 从同一个模块图中通过,没有 配置 .

这个 @desert-ant-labs/shapes/native 子路径加载本地加通( 通过 koffi和 仅用于服务器代码。 如果您在捆绑服务器的框架内导入它 代码(例如 Next.js Route Handler 或 Server Action),将其标记为外部 捆绑者不会试图捆绑本地二进制。 在下一个.js中:

// next.config.js
module.exports = { serverExternalPackages: ["@desert-ant-labs/shapes"] };

平台

本地服务器构建( N)/native)为linux-x64,linux-arm64,和darwin-arm64的舰只. 其他节点平台投出一个明显的错误 load(); 使用默认的 Web Assembly 构建、 Swift 软件包或浏览器.

许可证

沙漠蚂蚁实验室 源头可破坏许可证。为大多数免费提供 应用软件和商务许可证必须规模化。 完整的术语在链接. 许可证发放: 许可@ desertant.com。 。 。 .

SDK的第三方通知: THIRD_PARTY_NOTICES.md。 。 。 .

权重第三方通知: THIRD_PARTY_NOTICES.md。 。 。 .

版本与发布记录

@desert-ant-labs/shapes 共发布 35 个版本,首次发布于 2026/06/26;过去 12 个月发布了 35 个版本。

版本发布日期距今
4.3.0latest2026/11/066 天前
4.2.32026/10/3112 天前
4.2.22026/10/3112 天前
4.2.12026/10/2815 天前
4.2.02026/10/2716 天前
4.1.02026/10/2023 天前

关于 @desert-ant-labs/shapes 的常见问题

@desert-ant-labs/shapes 是什么?

对JavaScript的On-device单打形状识别. 在浏览器(WebAssembly + LiteRT.js)和服务器端(native)运行,从一个导入.

如何安装 @desert-ant-labs/shapes?

在项目目录运行 npm install @desert-ant-labs/shapes,或使用 pnpm add / yarn add / bun add。

@desert-ant-labs/shapes 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@desert-ant-labs/shapes 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@desert-ant-labs/shapes 可以商用吗?

@desert-ant-labs/shapes 使用 SEE LICENSE IN LICENSE.md 许可。许可条款写在包内的独立文件中,请阅读该文件确认可否商用。以上为概括,不构成法律意见,请以许可原文为准。

@desert-ant-labs/shapes 的下载量有多少?

根据 npm 官方下载统计,@desert-ant-labs/shapes 在 2026/10/12 – 2026/11/10 这 30 天内被下载 7,623 次,日均约 254 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@desert-ant-labs/shapes 还在维护吗?

最新版本 4.3.0 发布于 2026/11/06(6 天前);至今共发布 35 个版本,其中过去 12 个月发布了 35 个;首次发布于 2026/06/26。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。