VisionCamera Frame Processor Plugin to provide OCR support
npm install vision-camera-ocr-pluginA VisionCamera Frame Processor Plugin to preform text detection on images using MLKit Vision Text Recognition. This module can be used only with React Native Vision Camera >= v4.x.x

``sh`
yarn add vision-camera-ocr-plugin
cd ios && pod install
Add the plugin to your babel.config.js:
`js`
module.exports = {
plugins: [['react-native-worklets-core/plugin']],
// ...
> Note: You have to restart metro-bundler for changes in the babel.config.js file to take effect.
`js
import {OCRFrame, scanOCR} from 'vision-camera-ocr-plugin';
import {
useFrameProcessor,
Camera,
useCameraDevice,
} from 'react-native-vision-camera';
import {Worklets} from 'react-native-worklets-core';
export default ({onTextClicked}: VisionCameraPlateProps) => {
const [hasPermission, setHasPermission] = React.useState(false);
const [ocr, setOcr] = React.useState
const isFocused = useIsFocused();
const device = useCameraDevice('back');
const onCodeDetected = Worklets.createRunInJsFn((data: any) => {
setOcr(data);
});
const frameProcessor = useFrameProcessor(frame => {
'worklet';
const data = scanOCR(frame);
onCodeDetected(data);
}, []);
React.useEffect(() => {
(async () => {
const status = await Camera.requestCameraPermission();
setHasPermission(status === 'granted');
})();
}, []);
return (
<>
{device !== undefined && hasPermission ? (
device={device}
isActive={isFocused}
pixelFormat="yuv"
/>
) : (
)}
>
);
};
`
scanOCR(frame) returns an OCRFrame with the following data shape. See the example for how to use this in your app.
` jsx`
OCRFrame = {
result: {
text: string, // Raw result text
blocks: Block[], // Each recognized element broken into blocks
;
};
The text object closely resembles the object documented in the MLKit documents.
`
The Text Recognizer segments text into blocks, lines, and elements. Roughly speaking:
a Block is a contiguous set of text lines, such as a paragraph or column,
a Line is a contiguous set of words on the same axis, and
an Element is a contiguous set of alphanumeric characters ("word") on the same axis in most Latin languages, or a character in others
``
See the contributing guide to learn how to contribute to the repository and the development workflow.
MIT