如何为React Native中的Tesseract OCR添加乌尔都语识别支持
react-native-tesseract-ocr 乌尔都语识别无输出解决方案
核心原因
react-native-tesseract-ocr 仅内置了常用语言的常量定义,默认未打包乌尔都语对应的Tesseract训练数据,仅修改语言常量参数会因为加载不到训练文件导致无识别结果。
配置步骤
- 确认你当前使用的库依赖的Tesseract底层版本,下载对应版本的
urd.traineddata训练文件
- 确认你当前使用的库依赖的Tesseract底层版本,下载对应版本的
- 分平台放置训练文件:
- Android端:在
android/app/src/main/assets/目录下新建tessdata文件夹,将urd.traineddata放入该目录,打包时会自动打入apk资源包 - iOS端:将
urd.traineddata拖入Xcode项目的Resources目录,勾选「Copy items if needed」和你的应用target,确保文件会被编译进ipa资源目录
- 调整识别代码配置,参考示例如下:
import TesseractOcr, { LANG_URDU, useEventListener, } from 'react-native-tesseract-ocr'; // 乌尔都语识别调用方法 const recognizeUrdu = async (imageUri) => { const config = { lang: LANG_URDU, pageSegMode: 6, // 适配单块统一文本场景,印刷类内容识别准确率更高 allowlist: undefined, // 禁止设置英文白名单,避免乌尔都语字符被过滤 }; try { const textResult = await TesseractOcr.recognize(imageUri, config); return textResult; } catch (e) { console.error('识别错误:', e); } };
异常排查
- 确认训练文件名称完全为
urd.traineddata,拼写错误、大小写错误都会导致加载失败 - 打包后验证训练文件是否存在于安装包的对应资源目录
- 识别前对图片做预处理:调整对比度、摆正文字方向,乌尔都语为从右到左书写的文字,图片旋转会大幅降低识别率
- 纯乌尔都语识别不要传入多语言参数,避免识别优先级冲突导致无结果
内容的提问来源于stack exchange,提问作者Bilal
相关产品推荐
相关产品推荐

