UNPKG

ppu-paddle-ocr

Version:

Lightweight, probably the fastest PaddleOCR SDK in TypeScript. Runs anywhere JavaScript runs: Node.js, Bun, Deno, mobile react-native, web browsers, and browser extensions. Docker & CLI supported. The official SDK is browser-only. Accurate text detection

1 lines 967 B
let ALWAYS_AVAILABLE_FALLBACKS=new Set(["cpu","wasm"]);function providerName(provider){return typeof provider==="string"?provider:provider.name}export async function createSessionWithFallback(ort,modelData,sessionOpts,logger,onFallback){let opts=sessionOpts??{};try{return await ort.InferenceSession.create(modelData,opts)}catch(err){let providers=opts.executionProviders??[];let names=providers.map(providerName);let alreadySafe=names.every((n)=>ALWAYS_AVAILABLE_FALLBACKS.has(n));if(alreadySafe||names.length===0){throw err}let fallback=names.find((n)=>ALWAYS_AVAILABLE_FALLBACKS.has(n));let fallbackName=fallback??(names.includes("wasm")?"wasm":"cpu");let msg=err instanceof Error?err.message:String(err);logger(`executionProviders=${JSON.stringify(names)} failed (${msg}); `+`falling back to ["${fallbackName}"].`);let fallbackOpts={...opts,executionProviders:[fallbackName]};onFallback?.(fallbackOpts);return ort.InferenceSession.create(modelData,fallbackOpts)}}