我正在尝试将tesseract OCR库集成到我的react native
项目中以进行文本识别。我已经安装了tesseract iOS
并成功集成了它。但是每当我尝试识别文本时,都会出现以下错误:
在尝试识别之前请致电SetImage.2018-06-27 15:16:10.417392 + 0500 MyApp [528:165975]没有可识别的文本。检查一下 -[Tesseract setImage:]传递了大于0x0的图像。 2018-06-27 15:16:10.419 [致命] [tid:com.facebook.react.RNTextRecognitionQueue] 异常'***-[NSPlaceholderString initWithString:]:nil参数' 在目标RNTextRecognition上调用readData时抛出 参数( “文件:///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.mm setImage
方法的以下行:
UIImage *thresholdedImage = [self.delegate preprocessedImageForTesseract:self sourceImage:image];