You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native iOS端如何使用Tesseract?react-native-tesseract-ocr暂未适配iOS

React Native iOS 端使用 Tesseract OCR 的解决方案

方法一:使用适配 iOS 的第三方 React Native 库

选择已支持 iOS 的 Tesseract OCR 封装库,比如 react-native-tesseract-rn,步骤如下:

  • 安装依赖:
    npm install react-native-tesseract-rn --save
    # 或使用 yarn
    yarn add react-native-tesseract-rn
    
  • iOS 端配置:
    1. 进入项目的 iOS 目录,执行 pod install
    2. 在 Xcode 中打开项目,确认依赖已正确引入
    3. 下载所需语言的训练文件(如 eng.traineddata),添加到 iOS 项目的资源目录中
  • 基础使用示例:
    import Tesseract from 'react-native-tesseract-rn';
    
    const recognizeImageText = async (imagePath) => {
      try {
        const recognizedText = await Tesseract.recognize(
          imagePath,
          'eng', // 指定语言代码,多语言可传数组如 ['eng', 'chi_sim']
          {} // 可选配置项,如识别模式、区域限制等
        );
        console.log('识别结果:', recognizedText);
        return recognizedText;
      } catch (error) {
        console.error('识别失败:', error);
      }
    };
    

方法二:手动集成原生 Tesseract 库并桥接到 React Native

如果需要更定制化的功能,可以直接在 iOS 原生端集成 Tesseract,再通过 RN 桥接调用:

  1. 原生端集成:
    在 iOS 项目的 Podfile 中添加依赖:
    pod 'TesseractOCRiOS'
    
    执行 pod install 完成安装
  2. 创建 RN 原生模块:
    #import <React/RCTBridgeModule.h>
    #import <TesseractOCR/TesseractOCR.h>
    
    @interface TesseractOCRManager : NSObject <RCTBridgeModule>
    @end
    
    @implementation TesseractOCRManager
    
    RCT_EXPORT_MODULE();
    
    RCT_EXPORT_METHOD(recognizeTextFromImage:(NSString *)imagePath
                      resolver:(RCTPromiseResolveBlock)resolve
                      rejecter:(RCTPromiseRejectBlock)reject) {
      UIImage *targetImage = [UIImage imageWithContentsOfFile:imagePath];
      if (!targetImage) {
        reject(@"invalid_image", @"无法加载指定图片", nil);
        return;
      }
    
      G8Tesseract *tesseract = [[G8Tesseract alloc] initWithLanguage:@"eng"];
      tesseract.image = targetImage;
      tesseract.engineMode = G8OCREngineModeTesseractOnly;
      [tesseract recognize];
    
      if (tesseract.recognizedText.length > 0) {
        resolve(tesseract.recognizedText);
      } else {
        reject(@"no_text", @"未识别到文本内容", nil);
      }
    }
    
    @end
    
  3. React Native 端调用:
    import { NativeModules } from 'react-native';
    const { TesseractOCRManager } = NativeModules;
    
    const nativeRecognizeText = async (imagePath) => {
      try {
        const text = await TesseractOCRManager.recognizeTextFromImage(imagePath);
        console.log('原生识别结果:', text);
        return text;
      } catch (error) {
        console.error('原生识别失败:', error);
      }
    };
    

关键注意事项

  • 语言训练文件:必须将对应语言的 .traineddata 文件添加到 iOS 项目资源中,否则 Tesseract 无法完成识别
  • 权限配置:如果需要从相机或相册获取图片,需在 Info.plist 中添加相机(NSCameraUsageDescription)和相册(NSPhotoLibraryUsageDescription)的权限说明
  • 性能优化:对图片进行预处理(如灰度化、裁剪、降噪)可以显著提升识别准确率和速度

内容的提问来源于stack exchange,提问作者Nitin Janiyani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 22:45:35