UNPKG

react-native-executorch

Version:

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

42 lines (41 loc) 1.43 kB
import { useEffect, useMemo, useState } from 'react'; import { OCRController } from '../../controllers/OCRController'; export const useOCR = ({ model, preventLoad = false, }) => { const [error, setError] = useState(null); const [isReady, setIsReady] = useState(false); const [isGenerating, setIsGenerating] = useState(false); const [downloadProgress, setDownloadProgress] = useState(0); const controllerInstance = useMemo(() => new OCRController({ modelDownloadProgressCallback: setDownloadProgress, isReadyCallback: setIsReady, isGeneratingCallback: setIsGenerating, errorCallback: setError, }), []); useEffect(() => { const loadModel = async () => { await controllerInstance.loadModel(model.detectorSource, { recognizerLarge: model.recognizerLarge, recognizerMedium: model.recognizerMedium, recognizerSmall: model.recognizerSmall, }, model.language); }; if (!preventLoad) { loadModel(); } }, [ controllerInstance, model.detectorSource, model.recognizerLarge, model.recognizerMedium, model.recognizerSmall, model.language, preventLoad, ]); return { error, isReady, isGenerating, forward: controllerInstance.forward, downloadProgress, }; };