react-native-executorch
Version:
An easy way to run AI models in React Native with ExecuTorch
51 lines (50 loc) • 1.8 kB
JavaScript
;
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