UNPKG

react-native-executorch

Version:

An easy way to run AI models in React Native with ExecuTorch

50 lines (49 loc) 1.64 kB
"use strict"; import { useCallback, useEffect, useState } from 'react'; import { OCRController } from '../../controllers/OCRController'; /** * React hook for managing an OCR instance. * @category Hooks * @param OCRProps - Configuration object containing `model` sources and optional `preventLoad` flag. * @returns Ready to use OCR model. */ export const useOCR = ({ model, preventLoad = false }) => { const [isReady, setIsReady] = useState(false); const [isGenerating, setIsGenerating] = useState(false); const [downloadProgress, setDownloadProgress] = useState(0); const [error, setError] = useState(null); const [runOnFrame, setRunOnFrame] = useState(null); const [controller] = useState(() => new OCRController({ isReadyCallback: setIsReady, isGeneratingCallback: setIsGenerating, errorCallback: setError })); useEffect(() => { setDownloadProgress(0); setError(null); if (preventLoad) return; controller.load(model.detectorSource, model.recognizerSource, model.language, setDownloadProgress).then(() => { const worklet = controller.runOnFrame; if (worklet) setRunOnFrame(() => worklet); }); return () => { setRunOnFrame(null); if (controller.isReady) { controller.delete(); } }; }, [controller, model.modelName, model.detectorSource, model.recognizerSource, model.language, preventLoad]); const forward = useCallback(imageSource => controller.forward(imageSource), [controller]); return { error, isReady, isGenerating, forward, downloadProgress, runOnFrame }; }; //# sourceMappingURL=useOCR.js.map