Tesseract iOS - не распознает текст - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь интегрировать библиотеку 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:]: ноль аргумент' был брошен во время вызова readData для целевого RNTextRecognition с параметры ( "Файл: ///var/mobile/Containers/Data/Application/630539FD-AFDA-441F-8AB8-98CAA0867CE1/Library/Caches/Camera/F03909D4-4B7C-4A07-88BA-028E5A175156.jpg" )

Я снимаю картинку, используя react-native-camera и передаю URI методу readData. И использованные обученные данные взяты из этого репо Это мой код:

#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

Edit: После отладки обнаружил, что ошибка возникает в следующей строке метода G8Tesseract.mm setImage:

UIImage *thresholdedImage = [self.delegate preprocessedImageForTesseract:self sourceImage:image];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...