首页 > 解决方案 > Tesseract iOS - 无法识别文本

问题描述

我正在尝试将 tesseract OCR 库集成到我的react native项目中以进行文本识别。我已tesseract iOS成功安装并集成它。但是每当我尝试识别文本时,都会出现以下错误:

请在尝试识别之前调用 SetImage。2018-06-27 15:16:10.417392+0500 MyApp[528:165975] 没有可识别的文本。检查 -[Tesseract setImage:] 是否传递了大于 0x0 的图像。在使用参数( “file:///var/mobile/Containers/Data/Application/630539FD-AFDA-441F-8AB8-98CAA0867CE1/Library/Caches/Camera/F03909D4-4B7C-4A07-88BA-028E5A175156.jpg”)

我正在使用捕获图片react-native-camera并将 URI 传递给readData方法。使用的训练数据来自这个repo 这是我的代码:

#import "RNTextRecognition.h"
#import <React/RCTLog.h>


@implementation RNTextRecognition
  RCT_EXPORT_MODULE();
RCT_EXPORT_METHOD(readData:(NSString *)uri)
  {
    RCTLogInfo(@"URI %@", uri);
    [self initTesseract:uri];
  }

- (void) initTesseract: (NSString *)uri {
  G8Tesseract *tesseract = [[G8Tesseract alloc] initWithLanguage:@"eng"];
  tesseract.delegate = self;

  NSURL *url = [NSURL URLWithString:uri];
  NSData *data = [NSData dataWithContentsOfURL:url];
  UIImage *img = [[UIImage alloc] initWithData:data];
  [tesseract setImage:img];
  [tesseract recognize];
  NSLog(@"%@", [tesseract recognizedText]);
}

- (void)progressImageRecognitionForTesseract:(G8Tesseract *)tesseract {
  NSLog(@"progress: %lu", (unsigned long)tesseract.progress);
}

- (BOOL)shouldCancelImageRecognitionForTesseract:(G8Tesseract *)tesseract {
  return NO;
}

-(UIImage *)preprocessedImageForTesseract:(G8Tesseract *)tesseract sourceImage:(UIImage *)sourceImage {
  NSString* text = tesseract.recognizedText;
  NSLog(@"%@", [NSString stringWithString:text]);
  return sourceImage;
}

@end

编辑:经过调试发现错误出现在G8Tesseract.mmsetImage方法的下面一行:

UIImage *thresholdedImage = [self.delegate preprocessedImageForTesseract:self sourceImage:image];

标签: iosobjective-creact-nativetesseract

解决方案


推荐阅读