@qhago/ai
v0.1.0-beta.1
Published
Optional AI barcode detector plugin for @qhago/scanner (ONNX Runtime Web, WebGPU/WASM).
Downloads
23
Maintainers
Readme
@qhago/ai
Beta experimental (
npm i @qhago/ai@beta onnxruntime-web): aún no supera el gate G5 (falta medir la latencia en Android de gama media y validar con códigos 2D reales) — ver MODEL_CARD.md. En fotos públicas reales sube la tasa de lectura de 80,9 % a 87,0 % (1 lectura falsa en 818 fotos).
Detector de códigos opcional para @qhago/scanner. Cuando el motor clásico no lee nada durante
unos frames, una red pequeña (CenterNet-lite, 0,22 M parámetros, 0,24 GMAC, 320×320) localiza los códigos y sus 4 esquinas;
el motor rectifica cada región en su resolución original y la vuelve a leer.
import { createScanner } from "@qhago/scanner";
import { aiDetector, aiWorker } from "@qhago/ai";
const scanner = createScanner({
workerFactory: aiWorker, // worker con el motor + el detector (ONNX Runtime Web)
plugins: [aiDetector()], // "fallback" por defecto
});
await scanner.start();También funciona con decode(image, { workerFactory: aiWorker, plugins: [aiDetector()] }).
Versiones compatibles
@qhago/ai declara @qhago/scanner como peer con el rango >=0.1.0-beta.0 <2.0.0 || >=1.0.0-0 <2.0.0. Admite las
betas y RC actuales, 1.0.0-beta/1.0.0-rc y toda la 1.x. Con @qhago/[email protected], npm rechaza (ERESOLVE)
@qhago/[email protected]: actualiza a 0.1.0-beta.1 o posterior.
Opciones
| Opción | Default | |
|---|---|---|
| when | "fallback" | "always" corre el detector en cada frame |
| minConfidence | 0.4 | umbral del heatmap |
| maxObjects | 5 | regiones por frame |
| backend | "wasm" | "webgpu" / "auto" usan el modelo FP16 y el runtime WebGPU |
| modelUrl | modelo del paquete | self-hosting / CDN |
| wasmPaths | el de onnxruntime-web | carpeta de los .wasm de ORT |
| intervalMs | 300 | mínimo entre inferencias en vídeo (la red cuesta ~40 ms en WASM, escritorio) |
| cache | true | guarda el modelo en Cache API |
Peso
| Recurso | Tamaño |
|---|---|
| detector.int8.onnx (WASM) | ~0,33 MB |
| detector.fp16.onnx (WebGPU) | ~0,45 MB |
| runtime ORT WASM | ~3,7 MB gzip |
| runtime ORT WebGPU | ~6,7 MB gzip |
Solo se descargan si usas el plugin. Sin @qhago/ai, @qhago/scanner no cambia de tamaño.
Bundlers
- Vite:
worker: { format: "es" }yoptimizeDeps: { exclude: ["@qhago/scanner", "@qhago/ai", "onnxruntime-web"] }(verapps/examples/ai-vite). - webpack 5: los
new URL(…, import.meta.url)(worker, modelo,.wasm) se resuelven como assets sin configuración (verapps/examples/ai-webpack; soloexperiments.topLevelAwaitpor el ejemplo).
onnxruntime-web es peer dependency (^1.22): instálalo junto a este paquete.
Datos, métricas y limitaciones del modelo: MODEL_CARD.md.
