UNPKG

react-native-executorch

Version:

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

51 lines (50 loc) 1.8 kB
"use strict"; import { useCallback, useEffect, useState } from 'react'; import { VerticalOCRController } from '../../controllers/VerticalOCRController'; /** * React hook for managing a Vertical OCR instance. * @category Hooks * @param VerticalOCRProps - Configuration object containing `model` sources, optional `independentCharacters` and `preventLoad` flag. * @returns Ready to use Vertical OCR model. */ export const useVerticalOCR = ({ model, independentCharacters = false, 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 VerticalOCRController({ isReadyCallback: setIsReady, isGeneratingCallback: setIsGenerating, errorCallback: setError })); useEffect(() => { setDownloadProgress(0); setError(null); if (preventLoad) return; controller.load(model.detectorSource, model.recognizerSource, model.language, independentCharacters, 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, independentCharacters, preventLoad]); const forward = useCallback(imageSource => controller.forward(imageSource), [controller]); return { error, isReady, isGenerating, forward, downloadProgress, runOnFrame }; }; //# sourceMappingURL=useVerticalOCR.js.map