A React Native Vision Camera frame processor for on-device text recognition (OCR) and translation using ML Kit.
โจ Actively maintained fork of react-native-vision-camera-text-recognition, with modern improvements, bug fixes, and support for the latest Vision Camera and React Native versions.
The original packages are no longer actively maintained.
This fork provides:
- โ Ongoing maintenance and compatibility with React Native 0.76+ and Vision Camera v4+
- ๐ง Translation support (not just OCR) powered by ML Kit
- ๐ Improved stability and error handling
- ๐ Faster processing and frame optimization
- ๐ฆ TypeScript definitions included
- ๐งฉ Consistent API that works seamlessly with modern React Native projects
- ๐งฉ Simple drop-in API
- โก Fast, accurate on-device OCR
- ๐ฑ Works on Android and iOS
- ๐ Built-in translation via ML Kit
- ๐ธ Recognize text from live camera or static photos
- ๐ช Written in Kotlin and Swift
- ๐ง Compatible with
react-native-vision-cameraandreact-native-worklets-core
Peer dependencies:
You must havereact-native-vision-cameraandreact-native-worklets-coreinstalled.
npm install react-native-vision-camera-ocr-plus
# or
yarn add react-native-vision-camera-ocr-plus| Previous Package | Replacement | Notes |
|---|---|---|
react-native-vision-camera-text-recognition |
โ
react-native-vision-camera-ocr-plus |
Drop-in replacement with fixes and updates |
vision-camera-ocr |
โ
react-native-vision-camera-ocr-plus |
Actively maintained alternative |
๐ See the example app for a working demo.
import React, { useState } from 'react';
import { StyleSheet } from 'react-native';
import { useCameraDevice } from 'react-native-vision-camera';
import { Camera } from 'react-native-vision-camera-ocr-plus';
export default function App() {
const [data, setData] = useState(null);
const device = useCameraDevice('back');
return (
<>
{!!device && (
<Camera
style={StyleSheet.absoluteFill}
device={device}
isActive
mode="recognize"
options={{ language: 'latin' }}
callback={(result) => setData(result)}
/>
)}
</>
);
}import React, { useState } from 'react';
import { StyleSheet } from 'react-native';
import { useCameraDevice } from 'react-native-vision-camera';
import { Camera } from 'react-native-vision-camera-ocr-plus';
export default function App() {
const [data, setData] = useState(null);
const device = useCameraDevice('back');
return (
<>
{!!device && (
<Camera
style={StyleSheet.absoluteFill}
device={device}
isActive
mode="translate"
options={{ from: 'en', to: 'de' }}
callback={(result) => setData(result)}
/>
)}
</>
);
}import React from 'react';
import { StyleSheet } from 'react-native';
import { Camera, useCameraDevice, useFrameProcessor } from 'react-native-vision-camera';
import { useTextRecognition } from 'react-native-vision-camera-ocr-plus';
export default function App() {
const device = useCameraDevice('back');
const { scanText } = useTextRecognition({ language: 'latin' });
const frameProcessor = useFrameProcessor((frame) => {
'worklet';
const data = scanText(frame);
console.log('Detected text:', data);
}, []);
return (
<>
{!!device && (
<Camera
style={StyleSheet.absoluteFill}
device={device}
isActive
frameProcessor={frameProcessor}
mode="recognize"
/>
)}
</>
);
}| Option | Type | Values | Default |
|---|---|---|---|
language |
string |
latin, chinese, devanagari, japanese, korean |
latin |
mode |
string |
recognize, translate |
recognize |
from, to |
string |
See Supported Languages | en, de |
import { PhotoRecognizer } from 'react-native-vision-camera-ocr-plus';
const result = await PhotoRecognizer({
uri: asset.uri,
orientation: 'portrait',
});
console.log(result);
โ ๏ธ Note (iOS only):
Theorientationoption is available only on iOS and is recommended when using photos captured via the camera.
| Property | Type | Values | Required | Default | Platform |
|---|---|---|---|---|---|
uri |
string |
โ | โ Yes | โ | Android, iOS |
orientation |
string |
portrait, portraitUpsideDown, landscapeLeft, landscapeRight |
โ No | portrait |
iOS only |
import { RemoveLanguageModel } from 'react-native-vision-camera-ocr-plus';
await RemoveLanguageModel('en');| Language | Code | Flag |
|---|---|---|
| Afrikaans | af |
๐ฟ๐ฆ |
| Arabic | ar |
๐ธ๐ฆ |
| Bengali | bn |
๐ง๐ฉ |
| Chinese | zh |
๐จ๐ณ |
| English | en |
๐บ๐ธ๐ฌ๐ง |
| French | fr |
๐ซ๐ท |
| German | de |
๐ฉ๐ช |
| Hindi | hi |
๐ฎ๐ณ |
| Japanese | ja |
๐ฏ๐ต |
| Korean | ko |
๐ฐ๐ท |
| Portuguese | pt |
๐ต๐น |
| Russian | ru |
๐ท๐บ |
| Spanish | es |
๐ช๐ธ |
| ...and many more. |
Contributions, feature requests, and bug reports are always welcome!
Please open an issue or pull request.
If this library helps you build awesome apps, consider supporting future maintenance and development ๐
Your support helps keep the package updated and open source โค๏ธ
MIT ยฉ Jamena McInteer