diff --git a/Products/TesseractOCR.framework/Versions/A/Headers/Tesseract.h b/Products/TesseractOCR.framework/Versions/A/Headers/Tesseract.h index 2de3bf4a..2281da7f 100755 --- a/Products/TesseractOCR.framework/Versions/A/Headers/Tesseract.h +++ b/Products/TesseractOCR.framework/Versions/A/Headers/Tesseract.h @@ -8,12 +8,7 @@ // #import - -typedef NS_ENUM(NSUInteger, RecognizeImageType) { - RecognizeImageTypeOriginal, - RecognizeImageTypeBlackAndWhite, - RecognizeImageTypeGrayScale -}; +#import "UIImage+Filters.h" @class Tesseract; @@ -26,8 +21,6 @@ typedef NS_ENUM(NSUInteger, RecognizeImageType) { @interface Tesseract : NSObject + (NSString *)version; -@property (nonatomic) RecognizeImageType recognizeImageType; - @property (nonatomic, strong) NSString* language; @property (nonatomic, strong) UIImage *image; diff --git a/Products/TesseractOCR.framework/Versions/A/TesseractOCR b/Products/TesseractOCR.framework/Versions/A/TesseractOCR index ab66598d..28d22f50 100644 Binary files a/Products/TesseractOCR.framework/Versions/A/TesseractOCR and b/Products/TesseractOCR.framework/Versions/A/TesseractOCR differ diff --git a/README.md b/README.md index f42cd79b..fbf6bfba 100644 --- a/README.md +++ b/README.md @@ -77,9 +77,8 @@ How to use Tesseract* tesseract = [[Tesseract alloc] initWithLanguage:@"eng+ita"]; tesseract.delegate = self; - [tesseract setRecognizeImageType:RecognizeImageTypeBlackAndWhite]; //convert img to the RecognizeImageType [tesseract setVariableValue:@"0123456789" forKey:@"tessedit_char_whitelist"]; //limit search - [tesseract setImage:[UIImage imageNamed:@"image_sample.jpg"]]; //image to check + [tesseract setImage:[[UIImage imageNamed:@"image_sample.jpg"] blackAndWhite]]; //image to check [tesseract setRect:CGRectMake(20, 20, 100, 100)]; //optional: set the rectangle to recognize text in the image [tesseract recognize]; @@ -108,7 +107,7 @@ Updates in this version - Bug fixing. -- CoreImage filters: use [tesseract setRecognizeImageType:RecognizeImageTypeBlackAndWhite]; to convert the UIImage to recognize into a RecognizeImageType +- CoreImage filters: use [img blackAndWhite]; to convert the UIImage to recognize into a RecognizeImageType - Rect: use [tesseract setRect:CGRectMake(20, 20, 100, 100)] to define the rect where the text must be recognized diff --git a/Template Framework Project/Template Framework Project/G8ViewController.m b/Template Framework Project/Template Framework Project/G8ViewController.m index 5b06980f..bb959b65 100644 --- a/Template Framework Project/Template Framework Project/G8ViewController.m +++ b/Template Framework Project/Template Framework Project/G8ViewController.m @@ -7,7 +7,6 @@ // #import "G8ViewController.h" -#import @interface G8ViewController () { @@ -52,22 +51,23 @@ - (void)viewDidLoad -(void)recognizeImageWithTesseract:(UIImage *)img { + //only for test// + UIImage *testb = [img blackAndWhite]; + dispatch_async(dispatch_get_main_queue(), ^{ [self.activityIndicator startAnimating]; //only for test// - UIImage *testb = [img blackAndWhite]; self.imageToRecognize.image = testb; //only for test// }); - Tesseract* tesseract = [[Tesseract alloc] initWithLanguage:@"eng+ita"]; + Tesseract* tesseract = [[Tesseract alloc] initWithLanguage:@"ita"]; tesseract.delegate = self; - [tesseract setRecognizeImageType:RecognizeImageTypeBlackAndWhite]; //convert img to the RecognizeImageType [tesseract setVariableValue:@"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" forKey:@"tessedit_char_whitelist"]; //limit search - [tesseract setImage:img]; //image to check + [tesseract setImage:[img blackAndWhite]]; //image to check //[tesseract setRect:CGRectMake(20, 20, 100, 100)]; //optional: set the rectangle to recognize text in the image [tesseract recognize]; diff --git a/Tesseract OCR iOS.xcodeproj/project.pbxproj b/Tesseract OCR iOS.xcodeproj/project.pbxproj index 10e9ac32..2a297cc3 100644 --- a/Tesseract OCR iOS.xcodeproj/project.pbxproj +++ b/Tesseract OCR iOS.xcodeproj/project.pbxproj @@ -190,6 +190,7 @@ 646772C318083B5600C85662 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = README.md; path = ../README.md; sourceTree = ""; }; 6490748A198A5A5600D728CC /* UIImage+Filters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+Filters.h"; sourceTree = ""; }; 6490748B198A5A5600D728CC /* UIImage+Filters.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+Filters.m"; sourceTree = ""; }; + 64907492198A6B9E00D728CC /* CoreImage.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreImage.framework; path = System/Library/Frameworks/CoreImage.framework; sourceTree = SDKROOT; }; 64A0292C17307C1D002B12E7 /* TesseractOCR.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TesseractOCR.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 64A0292D17307C1D002B12E7 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; }; 64A0293117307C1D002B12E7 /* TesseractOCR-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "TesseractOCR-Info.plist"; sourceTree = ""; }; @@ -595,6 +596,7 @@ 64F74CCB172FD75F0068E657 /* Frameworks */ = { isa = PBXGroup; children = ( + 64907492198A6B9E00D728CC /* CoreImage.framework */, 64F74D77172FD8E90068E657 /* UIKit.framework */, 64F74CCC172FD75F0068E657 /* Foundation.framework */, 64A0292D17307C1D002B12E7 /* CoreFoundation.framework */, diff --git a/TesseractOCR/Tesseract.h b/TesseractOCR/Tesseract.h index 2de3bf4a..2281da7f 100755 --- a/TesseractOCR/Tesseract.h +++ b/TesseractOCR/Tesseract.h @@ -8,12 +8,7 @@ // #import - -typedef NS_ENUM(NSUInteger, RecognizeImageType) { - RecognizeImageTypeOriginal, - RecognizeImageTypeBlackAndWhite, - RecognizeImageTypeGrayScale -}; +#import "UIImage+Filters.h" @class Tesseract; @@ -26,8 +21,6 @@ typedef NS_ENUM(NSUInteger, RecognizeImageType) { @interface Tesseract : NSObject + (NSString *)version; -@property (nonatomic) RecognizeImageType recognizeImageType; - @property (nonatomic, strong) NSString* language; @property (nonatomic, strong) UIImage *image; diff --git a/TesseractOCR/Tesseract.mm b/TesseractOCR/Tesseract.mm index 441cdca4..4948cfaf 100755 --- a/TesseractOCR/Tesseract.mm +++ b/TesseractOCR/Tesseract.mm @@ -14,8 +14,6 @@ #import "pix.h" #import "ocrclass.h" -#import "UIImage+Filters.h" - namespace tesseract { class TessBaseAPI; }; @@ -195,31 +193,16 @@ - (void)setLanguage:(NSString *)language { - (void)setImage:(UIImage *)image { - CGSize size = image.size; - int width = size.width; - int height = size.height; - - if (width <= 0 || height <= 0) { + if (image == nil || image.size.width <= 0 || image.size.height <= 0) { NSLog(@"WARNING: Image has not size!"); return; } - UIImage *recognizeImage = nil; - - switch (self.recognizeImageType) { - case RecognizeImageTypeBlackAndWhite: - recognizeImage = [image blackAndWhite]; - break; - case RecognizeImageTypeGrayScale: - recognizeImage = [image grayScale]; - break; - case RecognizeImageTypeOriginal: - default: - recognizeImage = image; - break; - } + self.imageSize = image.size; //self.imageSize used in the characterBoxes method + int width = self.imageSize.width; + int height = self.imageSize.height; - CGImage *cgImage = recognizeImage.CGImage; + CGImage *cgImage = image.CGImage; CFDataRef data = CGDataProviderCopyData(CGImageGetDataProvider(cgImage)); _pixels = CFDataGetBytePtr(data); diff --git a/TesseractOCR/UIImage+Filters.m b/TesseractOCR/UIImage+Filters.m index 3e9895ec..106aff60 100644 --- a/TesseractOCR/UIImage+Filters.m +++ b/TesseractOCR/UIImage+Filters.m @@ -13,7 +13,7 @@ @implementation UIImage (Filters) -(UIImage *)blackAndWhite { CIImage *beginImage = [CIImage imageWithCGImage:self.CGImage]; - + CIImage *blackAndWhite = [CIFilter filterWithName:@"CIColorControls" keysAndValues:kCIInputImageKey, beginImage, @"inputBrightness", @0.0, @"inputContrast", @1.1, @"inputSaturation", @0.0, nil].outputImage; CIImage *output = [CIFilter filterWithName:@"CIExposureAdjust" keysAndValues:kCIInputImageKey, blackAndWhite, @"inputEV", @0.7, nil].outputImage;