Showing preview only (307K chars total). Download the full file or copy to clipboard to get everything.
Repository: rcarlsen/Pocket-OCR
Branch: master
Commit: 564c11fe599e
Files: 100
Total size: 284.1 KB
Directory structure:
gitextract_9uolaib_/
├── .gitignore
├── Classes/
│ ├── OCRAppDelegate.h
│ ├── OCRAppDelegate.m
│ ├── OCRDisplayViewController.h
│ ├── OCRDisplayViewController.mm
│ ├── ZoomableImage.h
│ └── ZoomableImage.m
├── MainWindow.xib
├── OCR-Info.plist
├── OCR.xcodeproj/
│ ├── project.pbxproj
│ └── rcarlsen.perspectivev3
├── OCRDisplayViewController.xib
├── OCR_Prefix.pch
├── UIImage-categories/
│ ├── UIImage+Alpha.h
│ ├── UIImage+Alpha.m
│ ├── UIImage+Resize.h
│ ├── UIImage+Resize.m
│ ├── UIImage+RoundedCorner.h
│ └── UIImage+RoundedCorner.m
├── dev/
│ └── TessIcon.pxm
├── main.m
├── readme.txt
├── tessdata/
│ ├── Makefile.am
│ ├── Makefile.in
│ ├── configs/
│ │ ├── Makefile.am
│ │ ├── Makefile.in
│ │ ├── api_config
│ │ ├── box.train
│ │ ├── box.train.stderr
│ │ ├── inter
│ │ ├── kannada
│ │ ├── makebox
│ │ └── unlv
│ ├── confsets
│ ├── deu.DangAmbigs
│ ├── deu.freq-dawg
│ ├── deu.inttemp
│ ├── deu.normproto
│ ├── deu.pffmtable
│ ├── deu.unicharset
│ ├── deu.user-words
│ ├── deu.word-dawg
│ ├── eng.DangAmbigs
│ ├── eng.freq-dawg
│ ├── eng.inttemp
│ ├── eng.normproto
│ ├── eng.pffmtable
│ ├── eng.unicharset
│ ├── eng.user-words
│ ├── eng.word-dawg
│ ├── fra.DangAmbigs
│ ├── fra.freq-dawg
│ ├── fra.inttemp
│ ├── fra.normproto
│ ├── fra.pffmtable
│ ├── fra.unicharset
│ ├── fra.user-words
│ ├── fra.word-dawg
│ ├── ita.DangAmbigs
│ ├── ita.freq-dawg
│ ├── ita.inttemp
│ ├── ita.normproto
│ ├── ita.pffmtable
│ ├── ita.unicharset
│ ├── ita.user-words
│ ├── ita.word-dawg
│ ├── makedummies
│ ├── nld.DangAmbigs
│ ├── nld.freq-dawg
│ ├── nld.inttemp
│ ├── nld.normproto
│ ├── nld.pffmtable
│ ├── nld.unicharset
│ ├── nld.user-words
│ ├── nld.word-dawg
│ ├── spa.DangAmbigs
│ ├── spa.freq-dawg
│ ├── spa.inttemp
│ ├── spa.normproto
│ ├── spa.pffmtable
│ ├── spa.unicharset
│ ├── spa.user-words
│ ├── spa.word-dawg
│ └── tessconfigs/
│ ├── Makefile.am
│ ├── Makefile.in
│ ├── batch
│ ├── batch.nochop
│ ├── matdemo
│ ├── msdemo
│ ├── nobatch
│ └── segdemo
└── tessdata-svn/
├── eng.DangAmbigs
├── eng.freq-dawg
├── eng.inttemp
├── eng.normproto
├── eng.pffmtable
├── eng.traineddata
├── eng.unicharset
├── eng.user-words
└── eng.word-dawg
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
# xcode noise
build/*
*.pbxuser
*.mode1v3
*.mode2v3
#Info.plist
#*.xcodeproj
# old skool
.svn
# osx noise
.DS_Store
profile
# ignore other object files
*.o
================================================
FILE: Classes/OCRAppDelegate.h
================================================
//
// OCRAppDelegate.h
// OCR
//
// Created by Robert Carlsen on 04.09.2009.
//
// Copyright (C) 2009, Robert Carlsen | robertcarlsen.net
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#import <UIKit/UIKit.h>
@class OCRDisplayViewController;
@interface OCRAppDelegate : NSObject <UIApplicationDelegate, UIActionSheetDelegate> {
UIWindow *window;
OCRDisplayViewController *displayViewController;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@end
================================================
FILE: Classes/OCRAppDelegate.m
================================================
//
// OCRAppDelegate.m
// OCR
//
// Created by Robert Carlsen on 04.09.2009.
//
// Copyright (C) 2009, Robert Carlsen | robertcarlsen.net
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#import "OCRAppDelegate.h"
#import "OCRDisplayViewController.h"
@implementation OCRAppDelegate
@synthesize window;
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
displayViewController = [[OCRDisplayViewController alloc] initWithNibName:@"OCRDisplayViewController" bundle:nil];
displayViewController.view.frame = [UIScreen mainScreen].applicationFrame;
[window addSubview:displayViewController.view];
[window makeKeyAndVisible];
}
- (void)dealloc
{
[displayViewController release];
[window release];
[super dealloc];
}
@end
================================================
FILE: Classes/OCRDisplayViewController.h
================================================
//
// OCRDisplayViewController.h
// OCR
//
// Created by Robert Carlsen on 03.12.2009.
//
// Copyright (C) 2009, Robert Carlsen | robertcarlsen.net
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#import <UIKit/UIKit.h>
#import <MessageUI/MessageUI.h>
#import "ZoomableImage.h"
// conditionally import or forward declare to contain objective-c++ code to here.
#ifdef __cplusplus
#import "baseapi.h"
using namespace tesseract;
#else
@class TessBaseAPI;
#endif
@interface OCRDisplayViewController : UIViewController
<UIActionSheetDelegate, UINavigationControllerDelegate, MFMailComposeViewControllerDelegate, UIImagePickerControllerDelegate> {
TessBaseAPI *tess;
UIImage *imageForOCR;
NSString *outputString;
UIActivityIndicatorView *activityView;
IBOutlet UIBarButtonItem *cameraButton;
IBOutlet UIBarButtonItem *actionButton;
IBOutlet ZoomableImage *thumbImageView;
IBOutlet UILabel *statusLabel;
IBOutlet UITextView *outputView;
}
@property(nonatomic,retain)NSString *outputString;
@property(nonatomic,retain)IBOutlet UITextView *outputView;
@property(nonatomic,retain)IBOutlet UIBarButtonItem *cameraButton;
@property(nonatomic,retain)IBOutlet UIBarButtonItem *actionButton;
@property(nonatomic,retain)IBOutlet ZoomableImage *thumbImageView;
@property(nonatomic,retain)IBOutlet UILabel *statusLabel;
- (NSString *)readAndProcessImage:(UIImage *)uiImage;
- (void)threadedReadAndProcessImage:(UIImage *)uiImage;
-(void)updateTextDisplay;
- (NSString *)applicationDocumentsDirectory;
- (IBAction)selectImage: (id) sender;
-(void)displayImagePickerWithSource:(UIImagePickerControllerSourceType)src;
-(IBAction)displayComposerSheet;
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error;
- (UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize;
@end
================================================
FILE: Classes/OCRDisplayViewController.mm
================================================
//
// OCRDisplayViewController.m
// OCR
//
// Created by Robert Carlsen on 03.12.2009.
//
// Copyright (C) 2009, Robert Carlsen | robertcarlsen.net
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#import "OCRDisplayViewController.h"
#import "baseapi.h"
#import "UIImage+Resize.h"
#import <math.h>
#define kViewTitle @"Pocket Tesseract OCR"
@implementation OCRDisplayViewController
@synthesize outputString,outputView,cameraButton, actionButton, thumbImageView, statusLabel;
- (void)dealloc
{
tess->End(); // shutdown tesseract
[imageForOCR release];
[outputView release];
[thumbImageView release];
[statusLabel release];
[super dealloc];
}
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
[super viewDidLoad];
[statusLabel setText:[NSString stringWithString:kViewTitle]];
activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
activityView.center = self.view.center;
activityView.hidesWhenStopped = YES;
[self.view addSubview:activityView];
// Set up the tessdata path. This is included in the application bundle
// but is copied to the Documents directory on the first run.
NSString *dataPath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent:@"tessdata"];
NSFileManager *fileManager = [NSFileManager defaultManager];
// If the expected store doesn't exist, copy the default store.
if (![fileManager fileExistsAtPath:dataPath]) {
// get the path to the app bundle (with the tessdata dir)
NSString *bundlePath = [[NSBundle mainBundle] bundlePath];
NSString *tessdataPath = [bundlePath stringByAppendingPathComponent:@"tessdata-svn"];
if (tessdataPath) {
[fileManager copyItemAtPath:tessdataPath toPath:dataPath error:NULL];
}
}
NSString *dataPathWithSlash = [[self applicationDocumentsDirectory] stringByAppendingString:@"/"];
setenv("TESSDATA_PREFIX", [dataPathWithSlash UTF8String], 1);
// init the tesseract engine.
tess = new TessBaseAPI();
tess->Init([dataPath cStringUsingEncoding:NSUTF8StringEncoding], // Path to tessdata-no ending /.
"eng"); // ISO 639-3 string or NULL.
NSString *output = [NSString stringWithString:@"Select an image to process."];
[outputView setText:output];
}
// This displays the converted text in the view
-(void)updateTextDisplay;
{
[activityView stopAnimating];
[statusLabel setText:[NSString stringWithString:kViewTitle]];
[outputView setText:outputString];
[thumbImageView shrinkToThumbnail];
}
// non-threaded...don't use.
- (NSString *)readAndProcessImage:(UIImage *)uiImage
{
CGSize imageSize = [uiImage size];
int bytes_per_line = (int)CGImageGetBytesPerRow([uiImage CGImage]);
int bytes_per_pixel = (int)CGImageGetBitsPerPixel([uiImage CGImage]) / 8.0;
CFDataRef data = CGDataProviderCopyData(CGImageGetDataProvider([uiImage CGImage]));
const UInt8 *imageData = CFDataGetBytePtr(data);
// this could take a while. maybe needs to happen asynchronously?
char* text = tess->TesseractRect(imageData,
bytes_per_pixel,
bytes_per_line,
0, 0,
imageSize.width, imageSize.height);
NSString *textStr = [NSString stringWithUTF8String:text];
delete[] text;
CFRelease(data);
return textStr;
}
// preferred, threaded method:
- (void)threadedReadAndProcessImage:(UIImage *)uiImage
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
CGSize imageSize = [uiImage size];
int bytes_per_line = (int)CGImageGetBytesPerRow([uiImage CGImage]);
int bytes_per_pixel = (int)CGImageGetBitsPerPixel([uiImage CGImage]) / 8.0;
CFDataRef data = CGDataProviderCopyData(CGImageGetDataProvider([uiImage CGImage]));
const UInt8 *imageData = CFDataGetBytePtr(data);
// this could take a while.
char* text = tess->TesseractRect(imageData,
bytes_per_pixel,
bytes_per_line,
0, 0,
imageSize.width, imageSize.height);
[self setOutputString:[NSString stringWithCString:text encoding:NSUTF8StringEncoding]];
delete[] text;
CFRelease(data);
// Update the display text. Since we're in a threaded method, run the UI stuff on the main thread.
[self performSelectorOnMainThread:@selector(updateTextDisplay) withObject:nil waitUntilDone:NO];
[pool release];
}
- (UIImage*)imageWithImage:(UIImage*)image
scaledToSize:(CGSize)newSize;
{
// calculate aspect ratio:
float ratio = image.size.height / image.size.width;
float aspectHeight = newSize.width * ratio;
CGSize ratioSize = CGSizeMake(newSize.width, aspectHeight);
UIGraphicsBeginImageContext( ratioSize );
[image drawInRect:CGRectMake(0,0,ratioSize.width,ratioSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
#pragma mark -
#pragma mark Application's documents directory
/**
Returns the path to the application's documents directory.
*/
- (NSString *)applicationDocumentsDirectory
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
return basePath;
}
#pragma mark Image Selection methods
- (IBAction) selectImage: (id) sender
{
//NSLog(@"Button pressed: %d",[sender tag]);
// present an alert sheet if a camera is visible and allow the user to select the camera or photo library.
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
// if(1) // for testing the alert sheet only
{
// this device has a camera, display the alert sheet:
UIActionSheet *actionSheet = [[UIActionSheet alloc]
initWithTitle:@"Select Image Source"
delegate:self
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:nil
otherButtonTitles:@"Camera",@"Photo Library", nil];
[actionSheet setActionSheetStyle:UIActionSheetStyleBlackOpaque];
// the tab bar was interferring in the current view
[actionSheet showInView:[[UIApplication sharedApplication] keyWindow]];
[actionSheet release];
} else {
// without a camera, there is no choice to make. just display the modal image picker
[self displayImagePickerWithSource:UIImagePickerControllerSourceTypePhotoLibrary];
}
}
- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex;
{
switch (buttonIndex) {
case 0:
// Camera Button
//NSLog(@"Button 0 pressed");
[self displayImagePickerWithSource:UIImagePickerControllerSourceTypeCamera];
break;
case 1:
// Library Button
//NSLog(@"Button 1 pressed");
[self displayImagePickerWithSource:UIImagePickerControllerSourceTypePhotoLibrary];
break;
case 2:
// Cancel Button
//NSLog(@"Button 2 pressed");
break;
default:
break;
}
}
-(void) displayImagePickerWithSource:(UIImagePickerControllerSourceType)src;
{
if([UIImagePickerController isSourceTypeAvailable:src]) {
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
[picker setSourceType:src];
[picker setDelegate:self];
// allowing editing is nice, but only returns a small 320px image
[picker setAllowsImageEditing:YES];
[self presentModalViewController:picker animated:YES];
[picker release];
}
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSLog(@"Picker has returned");
[self dismissModalViewControllerAnimated:YES];
// process the selected image:
[activityView startAnimating];
[statusLabel setText:[NSString stringWithString:@"Processing image..."]];
[outputView setText:@""];
// send the edited image to the thumbnail view:
UIImage *thumbImage = [[info objectForKey:UIImagePickerControllerEditedImage] retain];
// set the thumbnail image:
[thumbImageView setImage:thumbImage];
[thumbImage release];
// zoom the thumbnail
[thumbImageView zoomImageToCenter];
// TODO: make this all threaded?
// crop the image to the bounds provided
UIImage *origImage = [[info objectForKey:UIImagePickerControllerOriginalImage] retain];
NSLog(@"orig image size: %@", [[NSValue valueWithCGSize:origImage.size] description]);
// save the image, only if it's a newly taken image:
if([picker sourceType] == UIImagePickerControllerSourceTypeCamera){
UIImageWriteToSavedPhotosAlbum(origImage, nil, nil, nil);
}
CGRect rect;
[[info objectForKey:UIImagePickerControllerCropRect] getValue:&rect];
// fake resize to get the orientation right
UIImage *croppedImage= [origImage resizedImage:origImage.size interpolationQuality:kCGInterpolationDefault];
[origImage release];
// crop, but maintain original size:
croppedImage = [croppedImage croppedImage:rect];
NSLog(@"cropped image size: %@", [[NSValue valueWithCGSize:croppedImage.size] description]);
// for testing.
//[self.view addSubview:[[UIImageView alloc] initWithImage:image]];
// resize, so as to not choke tesseract:
// scaling up a low resolution image (eg. screenshots) seems to help the recognition.
// 1200 pixels is an arbitrary value, but seems to work well.
CGFloat newWidth = 1200; //(1000 < croppedImage.size.width) ? 1000 : croppedImage.size.width;
CGSize newSize = CGSizeMake(newWidth,newWidth);
croppedImage = [croppedImage resizedImage:newSize interpolationQuality:kCGInterpolationHigh];
NSLog(@"resized image size: %@", [[NSValue valueWithCGSize:croppedImage.size] description]);
//for debugging:
// [thumbImageView setImage:croppedImage];
// process image, threaded:
[self performSelector:@selector(threadedReadAndProcessImage:) withObject:croppedImage afterDelay:0.10];
}
#pragma mark MailComposer delegate
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error;
{
NSString *message;
message = nil;
// Notifies users about errors associated with the interface
switch (result)
{
case MFMailComposeResultCancelled:
break;
case MFMailComposeResultSaved:
break;
case MFMailComposeResultSent:
break;
case MFMailComposeResultFailed:
message = [NSString stringWithString:@"Mail Failed."];
break;
default:
break;
}
[self dismissModalViewControllerAnimated:YES];
if(message != nil) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Status"
message:message delegate:nil
cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];
}
}
// Displays an email composition interface inside the application. Populates all the Mail fields.
-(IBAction)displayComposerSheet
{
if(![MFMailComposeViewController canSendMail]) {
// can't send mail.
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"Mail not configured or available."
delegate:nil
cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];
}
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
[picker setSubject:@"iPhoneOCR Text"]; // use the product name?
// Fill out the email body text
[picker setMessageBody:outputString isHTML:NO];
[self presentModalViewController:picker animated:YES];
[picker release];
}
//#pragma mark Touch events
//- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
// NSLog(@"-- I AM TOUCH-ENDED --");
//
//}
/*
// The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
// Custom initialization
}
return self;
}
*/
/*
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
*/
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
// TODO: clean this up.
}
- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
@end
================================================
FILE: Classes/ZoomableImage.h
================================================
//
// ZoomableImage.h
// OCR
//
// Created by Robert Carlsen on 06.12.2009.
//
// Copyright (C) 2009, Robert Carlsen | robertcarlsen.net
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface ZoomableImage : UIImageView {
BOOL zoomed;
}
@property BOOL zoomed;
-(void)zoomImageToCenter;
-(void)shrinkToThumbnail;
@end
================================================
FILE: Classes/ZoomableImage.m
================================================
//
// ZoomableImage.m
// OCR
//
// Created by Robert Carlsen on 06.12.2009.
//
// Copyright (C) 2009, Robert Carlsen | robertcarlsen.net
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#import "ZoomableImage.h"
@implementation ZoomableImage
@synthesize zoomed;
- (id)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
// Initialization code
[self setUserInteractionEnabled:YES];
}
return self;
}
-(id)initWithCoder:(NSCoder *)aDecoder {
if (self = [super initWithCoder:aDecoder]) {
// Initialization code
[self setUserInteractionEnabled:YES];
}
return self;
}
//- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
// NSLog(@"-- I AM TOUCHED --");
//}
//
//- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
// NSLog(@"-- I AM TOUCH-ENDED --");
//
// // don't zoom an empty frame
// if (self.image == nil) {
// return;
// }
//
// // if the touch ended in this view, then zoom
// UITouch *touch = [touches anyObject];
// if (touch.view == self) {
// if ([touch tapCount] >= 2) {
// // do the zoom magic
// if(![self zoomed]){
// [self zoomImageToCenter];
// } else {
// [self shrinkToThumbnail];
// }
// }
// }
//}
-(void)zoomImageToCenter;
{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(growAnimationDidStop:finished:context:)];
CGAffineTransform transform;
CGAffineTransform scale = CGAffineTransformMakeScale(6.0, 6.0); // original is 52px
CGPoint thumbCenter = self.center;
CGPoint screenCenter = [[[UIApplication sharedApplication] keyWindow] center];
CGAffineTransform move = CGAffineTransformMakeTranslation(screenCenter.x - thumbCenter.x, screenCenter.y - thumbCenter.y);
transform = CGAffineTransformConcat(scale, move);
[self setZoomed:YES];
self.transform = transform;
[UIView commitAnimations];
}
-(void)shrinkToThumbnail;
{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(growAnimationDidStop:finished:context:)];
CGAffineTransform transform = CGAffineTransformIdentity;
self.transform = transform;
[self setZoomed:NO];
[UIView commitAnimations];
}
- (void)growAnimationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
// [UIView beginAnimations:nil context:NULL];
// [UIView setAnimationDuration:0.5];
// self.transform = CGAffineTransformIdentity;
// [UIView commitAnimations];
[self setUserInteractionEnabled:YES];
}
- (void)drawRect:(CGRect)rect {
// Drawing code
}
- (void)dealloc {
[super dealloc];
}
@end
================================================
FILE: MainWindow.xib
================================================
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">768</int>
<string key="IBDocument.SystemVersion">10A288</string>
<string key="IBDocument.InterfaceBuilderVersion">715</string>
<string key="IBDocument.AppKitVersion">1010</string>
<string key="IBDocument.HIToolboxVersion">411.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">46</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="2"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys" id="0">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBProxyObject" id="841351856">
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
</object>
<object class="IBProxyObject" id="427554174">
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
</object>
<object class="IBUICustomObject" id="664661524"/>
<object class="IBUIWindow" id="380026005">
<reference key="NSNextResponder"/>
<int key="NSvFlags">1316</int>
<object class="NSPSMatrix" key="NSFrameMatrix"/>
<string key="NSFrameSize">{320, 480}</string>
<reference key="NSSuperview"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MSAxIDEAA</bytes>
</object>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">delegate</string>
<reference key="source" ref="841351856"/>
<reference key="destination" ref="664661524"/>
</object>
<int key="connectionID">4</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">window</string>
<reference key="source" ref="664661524"/>
<reference key="destination" ref="380026005"/>
</object>
<int key="connectionID">5</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
<reference key="object" ref="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2</int>
<reference key="object" ref="380026005"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="841351856"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">3</int>
<reference key="object" ref="664661524"/>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="427554174"/>
<reference key="parent" ref="0"/>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.CustomClassName</string>
<string>-2.CustomClassName</string>
<string>2.IBAttributePlaceholdersKey</string>
<string>2.IBEditorWindowLastContentRect</string>
<string>2.IBPluginDependency</string>
<string>3.CustomClassName</string>
<string>3.IBPluginDependency</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>UIApplication</string>
<string>UIResponder</string>
<object class="NSMutableDictionary">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<string>{{438, 320}, {320, 480}}</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>OCRAppDelegate</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="sourceID"/>
<int key="maxID">9</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">OCRAppDelegate</string>
<string key="superclassName">NSObject</string>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">window</string>
<string key="NS.object.0">UIWindow</string>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">Classes/OCRAppDelegate.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">OCRAppDelegate</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBUserSource</string>
<string key="minorKey"/>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
<integer value="3100" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">OCR.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
</data>
</archive>
================================================
FILE: OCR-Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleDisplayName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string>TessIcon.png</string>
<key>CFBundleIdentifier</key>
<string>com.robertcarlsen.${PRODUCT_NAME:rfc1034identifier}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSMainNibFile</key>
<string>MainWindow</string>
</dict>
</plist>
================================================
FILE: OCR.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 45;
objects = {
/* Begin PBXBuildFile section */
1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
240C703510C8F5A800CD7AD1 /* shadow.png in Resources */ = {isa = PBXBuildFile; fileRef = 240C703410C8F5A800CD7AD1 /* shadow.png */; };
241B1E6710517E3800926F2B /* OCRAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 241B1E6610517E3800926F2B /* OCRAppDelegate.m */; };
2463448F10CC281000011876 /* ZoomableImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 2463448E10CC281000011876 /* ZoomableImage.m */; };
2482F02B10FC300900EFB5A2 /* OCRDisplayViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2482F02A10FC300900EFB5A2 /* OCRDisplayViewController.mm */; };
248395841254394A003C7FC8 /* tessdata-svn in Resources */ = {isa = PBXBuildFile; fileRef = 248395791254394A003C7FC8 /* tessdata-svn */; };
248395CA12545376003C7FC8 /* libtesseract_api.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 248395BE12545376003C7FC8 /* libtesseract_api.a */; };
248395CB12545376003C7FC8 /* libtesseract_ccstruct.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 248395BF12545376003C7FC8 /* libtesseract_ccstruct.a */; };
248395CC12545376003C7FC8 /* libtesseract_ccutil.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 248395C012545376003C7FC8 /* libtesseract_ccutil.a */; };
248395CD12545376003C7FC8 /* libtesseract_classify.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 248395C112545376003C7FC8 /* libtesseract_classify.a */; };
248395CE12545376003C7FC8 /* libtesseract_cutil.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 248395C212545376003C7FC8 /* libtesseract_cutil.a */; };
248395CF12545376003C7FC8 /* libtesseract_dict.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 248395C312545376003C7FC8 /* libtesseract_dict.a */; };
248395D012545376003C7FC8 /* libtesseract_image.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 248395C412545376003C7FC8 /* libtesseract_image.a */; };
248395D112545376003C7FC8 /* libtesseract_main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 248395C512545376003C7FC8 /* libtesseract_main.a */; };
248395D212545376003C7FC8 /* libtesseract_textord.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 248395C612545376003C7FC8 /* libtesseract_textord.a */; };
248395D312545376003C7FC8 /* libtesseract_training.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 248395C712545376003C7FC8 /* libtesseract_training.a */; };
248395D412545376003C7FC8 /* libtesseract_viewer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 248395C812545376003C7FC8 /* libtesseract_viewer.a */; };
248395D512545376003C7FC8 /* libtesseract_wordrec.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 248395C912545376003C7FC8 /* libtesseract_wordrec.a */; };
24B2BCC910C8912E00A13CE0 /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 24B2BCC810C8912E00A13CE0 /* MessageUI.framework */; };
24BA10F010C882E600016CED /* TessIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = 24BA10EF10C882E600016CED /* TessIcon.png */; };
24BA110F10C884F300016CED /* OCRDisplayViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 24BA110D10C884F300016CED /* OCRDisplayViewController.xib */; };
24BC002410FC486A0043EB8F /* readme.txt in Resources */ = {isa = PBXBuildFile; fileRef = 24BC002310FC486A0043EB8F /* readme.txt */; };
24F2866410C9BA88004BB5CA /* UIImage+Alpha.m in Sources */ = {isa = PBXBuildFile; fileRef = 24F2865F10C9BA87004BB5CA /* UIImage+Alpha.m */; };
24F2866510C9BA88004BB5CA /* UIImage+Resize.m in Sources */ = {isa = PBXBuildFile; fileRef = 24F2866110C9BA88004BB5CA /* UIImage+Resize.m */; };
24F2866610C9BA88004BB5CA /* UIImage+RoundedCorner.m in Sources */ = {isa = PBXBuildFile; fileRef = 24F2866310C9BA88004BB5CA /* UIImage+RoundedCorner.m */; };
288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; };
28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD733E0D9D9553002E5188 /* MainWindow.xib */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
1D3623240D0F684500981E51 /* OCRAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCRAppDelegate.h; sourceTree = "<group>"; };
1D6058910D05DD3D006BFB54 /* OCR.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = OCR.app; sourceTree = BUILT_PRODUCTS_DIR; };
1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
240C703410C8F5A800CD7AD1 /* shadow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = shadow.png; path = dev/shadow.png; sourceTree = "<group>"; };
241B1E6610517E3800926F2B /* OCRAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCRAppDelegate.m; sourceTree = "<group>"; };
2463448D10CC281000011876 /* ZoomableImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZoomableImage.h; sourceTree = "<group>"; };
2463448E10CC281000011876 /* ZoomableImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ZoomableImage.m; sourceTree = "<group>"; };
2482F02910FC300900EFB5A2 /* OCRDisplayViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCRDisplayViewController.h; sourceTree = "<group>"; };
2482F02A10FC300900EFB5A2 /* OCRDisplayViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCRDisplayViewController.mm; sourceTree = "<group>"; };
248395791254394A003C7FC8 /* tessdata-svn */ = {isa = PBXFileReference; lastKnownFileType = folder; path = "tessdata-svn"; sourceTree = "<group>"; };
248395BE12545376003C7FC8 /* libtesseract_api.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtesseract_api.a; path = "../../tesseract-ocr-svn/outdir/libtesseract_api.a"; sourceTree = SOURCE_ROOT; };
248395BF12545376003C7FC8 /* libtesseract_ccstruct.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtesseract_ccstruct.a; path = "../../tesseract-ocr-svn/outdir/libtesseract_ccstruct.a"; sourceTree = SOURCE_ROOT; };
248395C012545376003C7FC8 /* libtesseract_ccutil.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtesseract_ccutil.a; path = "../../tesseract-ocr-svn/outdir/libtesseract_ccutil.a"; sourceTree = SOURCE_ROOT; };
248395C112545376003C7FC8 /* libtesseract_classify.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtesseract_classify.a; path = "../../tesseract-ocr-svn/outdir/libtesseract_classify.a"; sourceTree = SOURCE_ROOT; };
248395C212545376003C7FC8 /* libtesseract_cutil.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtesseract_cutil.a; path = "../../tesseract-ocr-svn/outdir/libtesseract_cutil.a"; sourceTree = SOURCE_ROOT; };
248395C312545376003C7FC8 /* libtesseract_dict.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtesseract_dict.a; path = "../../tesseract-ocr-svn/outdir/libtesseract_dict.a"; sourceTree = SOURCE_ROOT; };
248395C412545376003C7FC8 /* libtesseract_image.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtesseract_image.a; path = "../../tesseract-ocr-svn/outdir/libtesseract_image.a"; sourceTree = SOURCE_ROOT; };
248395C512545376003C7FC8 /* libtesseract_main.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtesseract_main.a; path = "../../tesseract-ocr-svn/outdir/libtesseract_main.a"; sourceTree = SOURCE_ROOT; };
248395C612545376003C7FC8 /* libtesseract_textord.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtesseract_textord.a; path = "../../tesseract-ocr-svn/outdir/libtesseract_textord.a"; sourceTree = SOURCE_ROOT; };
248395C712545376003C7FC8 /* libtesseract_training.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtesseract_training.a; path = "../../tesseract-ocr-svn/outdir/libtesseract_training.a"; sourceTree = SOURCE_ROOT; };
248395C812545376003C7FC8 /* libtesseract_viewer.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtesseract_viewer.a; path = "../../tesseract-ocr-svn/outdir/libtesseract_viewer.a"; sourceTree = SOURCE_ROOT; };
248395C912545376003C7FC8 /* libtesseract_wordrec.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtesseract_wordrec.a; path = "../../tesseract-ocr-svn/outdir/libtesseract_wordrec.a"; sourceTree = SOURCE_ROOT; };
24B2BCC810C8912E00A13CE0 /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; };
24BA10EF10C882E600016CED /* TessIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = TessIcon.png; path = dev/TessIcon.png; sourceTree = "<group>"; };
24BA110D10C884F300016CED /* OCRDisplayViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = OCRDisplayViewController.xib; sourceTree = "<group>"; };
24BC002310FC486A0043EB8F /* readme.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = readme.txt; sourceTree = "<group>"; };
24F2865E10C9BA87004BB5CA /* UIImage+Alpha.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+Alpha.h"; sourceTree = "<group>"; };
24F2865F10C9BA87004BB5CA /* UIImage+Alpha.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+Alpha.m"; sourceTree = "<group>"; };
24F2866010C9BA87004BB5CA /* UIImage+Resize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+Resize.h"; sourceTree = "<group>"; };
24F2866110C9BA88004BB5CA /* UIImage+Resize.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+Resize.m"; sourceTree = "<group>"; };
24F2866210C9BA88004BB5CA /* UIImage+RoundedCorner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+RoundedCorner.h"; sourceTree = "<group>"; };
24F2866310C9BA88004BB5CA /* UIImage+RoundedCorner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+RoundedCorner.m"; sourceTree = "<group>"; };
288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
28AD733E0D9D9553002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = "<group>"; };
29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
32CA4F630368D1EE00C91783 /* OCR_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCR_Prefix.pch; sourceTree = "<group>"; };
8D1107310486CEB800E47090 /* OCR-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "OCR-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
1D60588F0D05DD3D006BFB54 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */,
1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */,
288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */,
24B2BCC910C8912E00A13CE0 /* MessageUI.framework in Frameworks */,
248395CA12545376003C7FC8 /* libtesseract_api.a in Frameworks */,
248395CB12545376003C7FC8 /* libtesseract_ccstruct.a in Frameworks */,
248395CC12545376003C7FC8 /* libtesseract_ccutil.a in Frameworks */,
248395CD12545376003C7FC8 /* libtesseract_classify.a in Frameworks */,
248395CE12545376003C7FC8 /* libtesseract_cutil.a in Frameworks */,
248395CF12545376003C7FC8 /* libtesseract_dict.a in Frameworks */,
248395D012545376003C7FC8 /* libtesseract_image.a in Frameworks */,
248395D112545376003C7FC8 /* libtesseract_main.a in Frameworks */,
248395D212545376003C7FC8 /* libtesseract_textord.a in Frameworks */,
248395D312545376003C7FC8 /* libtesseract_training.a in Frameworks */,
248395D412545376003C7FC8 /* libtesseract_viewer.a in Frameworks */,
248395D512545376003C7FC8 /* libtesseract_wordrec.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
080E96DDFE201D6D7F000001 /* Classes */ = {
isa = PBXGroup;
children = (
2482F02910FC300900EFB5A2 /* OCRDisplayViewController.h */,
2482F02A10FC300900EFB5A2 /* OCRDisplayViewController.mm */,
241B1E6610517E3800926F2B /* OCRAppDelegate.m */,
1D3623240D0F684500981E51 /* OCRAppDelegate.h */,
2463448D10CC281000011876 /* ZoomableImage.h */,
2463448E10CC281000011876 /* ZoomableImage.m */,
);
path = Classes;
sourceTree = "<group>";
};
19C28FACFE9D520D11CA2CBB /* Products */ = {
isa = PBXGroup;
children = (
1D6058910D05DD3D006BFB54 /* OCR.app */,
);
name = Products;
sourceTree = "<group>";
};
24F2865D10C9BA87004BB5CA /* UIImage-categories */ = {
isa = PBXGroup;
children = (
24F2865E10C9BA87004BB5CA /* UIImage+Alpha.h */,
24F2865F10C9BA87004BB5CA /* UIImage+Alpha.m */,
24F2866010C9BA87004BB5CA /* UIImage+Resize.h */,
24F2866110C9BA88004BB5CA /* UIImage+Resize.m */,
24F2866210C9BA88004BB5CA /* UIImage+RoundedCorner.h */,
24F2866310C9BA88004BB5CA /* UIImage+RoundedCorner.m */,
);
path = "UIImage-categories";
sourceTree = "<group>";
};
29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
isa = PBXGroup;
children = (
24F2865D10C9BA87004BB5CA /* UIImage-categories */,
080E96DDFE201D6D7F000001 /* Classes */,
29B97315FDCFA39411CA2CEA /* Other Sources */,
29B97317FDCFA39411CA2CEA /* Resources */,
29B97323FDCFA39411CA2CEA /* Frameworks */,
19C28FACFE9D520D11CA2CBB /* Products */,
);
name = CustomTemplate;
sourceTree = "<group>";
};
29B97315FDCFA39411CA2CEA /* Other Sources */ = {
isa = PBXGroup;
children = (
32CA4F630368D1EE00C91783 /* OCR_Prefix.pch */,
29B97316FDCFA39411CA2CEA /* main.m */,
);
name = "Other Sources";
sourceTree = "<group>";
};
29B97317FDCFA39411CA2CEA /* Resources */ = {
isa = PBXGroup;
children = (
248395791254394A003C7FC8 /* tessdata-svn */,
240C703410C8F5A800CD7AD1 /* shadow.png */,
24BA110D10C884F300016CED /* OCRDisplayViewController.xib */,
24BA10EF10C882E600016CED /* TessIcon.png */,
28AD733E0D9D9553002E5188 /* MainWindow.xib */,
8D1107310486CEB800E47090 /* OCR-Info.plist */,
24BC002310FC486A0043EB8F /* readme.txt */,
);
name = Resources;
sourceTree = "<group>";
};
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
isa = PBXGroup;
children = (
248395BE12545376003C7FC8 /* libtesseract_api.a */,
248395BF12545376003C7FC8 /* libtesseract_ccstruct.a */,
248395C012545376003C7FC8 /* libtesseract_ccutil.a */,
248395C112545376003C7FC8 /* libtesseract_classify.a */,
248395C212545376003C7FC8 /* libtesseract_cutil.a */,
248395C312545376003C7FC8 /* libtesseract_dict.a */,
248395C412545376003C7FC8 /* libtesseract_image.a */,
248395C512545376003C7FC8 /* libtesseract_main.a */,
248395C612545376003C7FC8 /* libtesseract_textord.a */,
248395C712545376003C7FC8 /* libtesseract_training.a */,
248395C812545376003C7FC8 /* libtesseract_viewer.a */,
248395C912545376003C7FC8 /* libtesseract_wordrec.a */,
1DF5F4DF0D08C38300B7A737 /* UIKit.framework */,
1D30AB110D05D00D00671497 /* Foundation.framework */,
288765FC0DF74451002DB57D /* CoreGraphics.framework */,
24B2BCC810C8912E00A13CE0 /* MessageUI.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
1D6058900D05DD3D006BFB54 /* OCR */ = {
isa = PBXNativeTarget;
buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "OCR" */;
buildPhases = (
1D60588D0D05DD3D006BFB54 /* Resources */,
1D60588E0D05DD3D006BFB54 /* Sources */,
1D60588F0D05DD3D006BFB54 /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = OCR;
productName = OCR;
productReference = 1D6058910D05DD3D006BFB54 /* OCR.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
29B97313FDCFA39411CA2CEA /* Project object */ = {
isa = PBXProject;
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "OCR" */;
compatibilityVersion = "Xcode 3.1";
developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
English,
Japanese,
French,
German,
);
mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
projectDirPath = "";
projectRoot = "";
targets = (
1D6058900D05DD3D006BFB54 /* OCR */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
1D60588D0D05DD3D006BFB54 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */,
24BA10F010C882E600016CED /* TessIcon.png in Resources */,
24BA110F10C884F300016CED /* OCRDisplayViewController.xib in Resources */,
240C703510C8F5A800CD7AD1 /* shadow.png in Resources */,
24BC002410FC486A0043EB8F /* readme.txt in Resources */,
248395841254394A003C7FC8 /* tessdata-svn in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
1D60588E0D05DD3D006BFB54 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
1D60589B0D05DD56006BFB54 /* main.m in Sources */,
241B1E6710517E3800926F2B /* OCRAppDelegate.m in Sources */,
24F2866410C9BA88004BB5CA /* UIImage+Alpha.m in Sources */,
24F2866510C9BA88004BB5CA /* UIImage+Resize.m in Sources */,
24F2866610C9BA88004BB5CA /* UIImage+RoundedCorner.m in Sources */,
2463448F10CC281000011876 /* ZoomableImage.m in Sources */,
2482F02B10FC300900EFB5A2 /* OCRDisplayViewController.mm in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
1D6058940D05DD3E006BFB54 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
COPY_PHASE_STRIP = NO;
GCC_DYNAMIC_NO_PIC = NO;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = OCR_Prefix.pch;
GCC_VERSION = "";
HEADER_SEARCH_PATHS = "";
INFOPLIST_FILE = "OCR-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 3.1.2;
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)\"",
"\"$(SRCROOT)/../../tesseract-ocr-svn\"",
"\"$(SRCROOT)/../../tesseract-ocr-svn/outdir\"",
);
MACOSX_DEPLOYMENT_TARGET = "";
PRODUCT_NAME = OCR;
SDKROOT = iphoneos;
USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/../../tesseract-ocr-svn\"/**";
};
name = Debug;
};
1D6058950D05DD3E006BFB54 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
COPY_PHASE_STRIP = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = OCR_Prefix.pch;
INFOPLIST_FILE = "OCR-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 3.1.2;
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)\"",
"\"$(SRCROOT)/../../tesseract-ocr-svn\"",
"\"$(SRCROOT)/../../tesseract-ocr-svn/outdir\"",
);
PRODUCT_NAME = OCR;
SDKROOT = iphoneos;
USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/../../tesseract-ocr-svn\"/**";
};
name = Release;
};
C01FCF4F08A954540054247B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
PREBINDING = NO;
SDKROOT = iphoneos;
USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/../../tesseract-ocr-svn\"/**";
};
name = Debug;
};
C01FCF5008A954540054247B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 3.1.2;
PREBINDING = NO;
SDKROOT = iphoneos;
USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/../../tesseract-ocr-svn\"/**";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "OCR" */ = {
isa = XCConfigurationList;
buildConfigurations = (
1D6058940D05DD3E006BFB54 /* Debug */,
1D6058950D05DD3E006BFB54 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
C01FCF4E08A954540054247B /* Build configuration list for PBXProject "OCR" */ = {
isa = XCConfigurationList;
buildConfigurations = (
C01FCF4F08A954540054247B /* Debug */,
C01FCF5008A954540054247B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
}
================================================
FILE: OCR.xcodeproj/rcarlsen.perspectivev3
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ActivePerspectiveName</key>
<string>Project</string>
<key>AllowedModules</key>
<array>
<dict>
<key>BundleLoadPath</key>
<string></string>
<key>MaxInstances</key>
<string>n</string>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
<key>Name</key>
<string>Groups and Files Outline View</string>
</dict>
<dict>
<key>BundleLoadPath</key>
<string></string>
<key>MaxInstances</key>
<string>n</string>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Name</key>
<string>Editor</string>
</dict>
<dict>
<key>BundleLoadPath</key>
<string></string>
<key>MaxInstances</key>
<string>n</string>
<key>Module</key>
<string>XCTaskListModule</string>
<key>Name</key>
<string>Task List</string>
</dict>
<dict>
<key>BundleLoadPath</key>
<string></string>
<key>MaxInstances</key>
<string>n</string>
<key>Module</key>
<string>XCDetailModule</string>
<key>Name</key>
<string>File and Smart Group Detail Viewer</string>
</dict>
<dict>
<key>BundleLoadPath</key>
<string></string>
<key>MaxInstances</key>
<string>1</string>
<key>Module</key>
<string>PBXBuildResultsModule</string>
<key>Name</key>
<string>Detailed Build Results Viewer</string>
</dict>
<dict>
<key>BundleLoadPath</key>
<string></string>
<key>MaxInstances</key>
<string>1</string>
<key>Module</key>
<string>PBXProjectFindModule</string>
<key>Name</key>
<string>Project Batch Find Tool</string>
</dict>
<dict>
<key>BundleLoadPath</key>
<string></string>
<key>MaxInstances</key>
<string>n</string>
<key>Module</key>
<string>XCProjectFormatConflictsModule</string>
<key>Name</key>
<string>Project Format Conflicts List</string>
</dict>
<dict>
<key>BundleLoadPath</key>
<string></string>
<key>MaxInstances</key>
<string>n</string>
<key>Module</key>
<string>PBXBookmarksModule</string>
<key>Name</key>
<string>Bookmarks Tool</string>
</dict>
<dict>
<key>BundleLoadPath</key>
<string></string>
<key>MaxInstances</key>
<string>n</string>
<key>Module</key>
<string>PBXClassBrowserModule</string>
<key>Name</key>
<string>Class Browser</string>
</dict>
<dict>
<key>BundleLoadPath</key>
<string></string>
<key>MaxInstances</key>
<string>n</string>
<key>Module</key>
<string>PBXCVSModule</string>
<key>Name</key>
<string>Source Code Control Tool</string>
</dict>
<dict>
<key>BundleLoadPath</key>
<string></string>
<key>MaxInstances</key>
<string>n</string>
<key>Module</key>
<string>PBXDebugBreakpointsModule</string>
<key>Name</key>
<string>Debug Breakpoints Tool</string>
</dict>
<dict>
<key>BundleLoadPath</key>
<string></string>
<key>MaxInstances</key>
<string>n</string>
<key>Module</key>
<string>XCDockableInspector</string>
<key>Name</key>
<string>Inspector</string>
</dict>
<dict>
<key>BundleLoadPath</key>
<string></string>
<key>MaxInstances</key>
<string>n</string>
<key>Module</key>
<string>PBXOpenQuicklyModule</string>
<key>Name</key>
<string>Open Quickly Tool</string>
</dict>
<dict>
<key>BundleLoadPath</key>
<string></string>
<key>MaxInstances</key>
<string>1</string>
<key>Module</key>
<string>PBXDebugSessionModule</string>
<key>Name</key>
<string>Debugger</string>
</dict>
<dict>
<key>BundleLoadPath</key>
<string></string>
<key>MaxInstances</key>
<string>1</string>
<key>Module</key>
<string>PBXDebugCLIModule</string>
<key>Name</key>
<string>Debug Console</string>
</dict>
<dict>
<key>BundleLoadPath</key>
<string></string>
<key>MaxInstances</key>
<string>n</string>
<key>Module</key>
<string>XCSnapshotModule</string>
<key>Name</key>
<string>Snapshots Tool</string>
</dict>
</array>
<key>BundlePath</key>
<string>/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources</string>
<key>Description</key>
<string>AIODescriptionKey</string>
<key>DockingSystemVisible</key>
<false/>
<key>Extension</key>
<string>perspectivev3</string>
<key>FavBarConfig</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>241B1E551051501300926F2B</string>
<key>XCBarModuleItemNames</key>
<dict/>
<key>XCBarModuleItems</key>
<array/>
</dict>
<key>FirstTimeWindowDisplayed</key>
<false/>
<key>Identifier</key>
<string>com.apple.perspectives.project.defaultV3</string>
<key>MajorVersion</key>
<integer>34</integer>
<key>MinorVersion</key>
<integer>0</integer>
<key>Name</key>
<string>All-In-One</string>
<key>Notifications</key>
<array>
<dict>
<key>XCObserverAutoDisconnectKey</key>
<true/>
<key>XCObserverDefintionKey</key>
<dict>
<key>PBXStatusErrorsKey</key>
<integer>0</integer>
</dict>
<key>XCObserverFactoryKey</key>
<string>XCPerspectivesSpecificationIdentifier</string>
<key>XCObserverGUIDKey</key>
<string>XCObserverProjectIdentifier</string>
<key>XCObserverNotificationKey</key>
<string>PBXStatusBuildStateMessageNotification</string>
<key>XCObserverTargetKey</key>
<string>XCMainBuildResultsModuleGUID</string>
<key>XCObserverTriggerKey</key>
<string>awakenModuleWithObserver:</string>
<key>XCObserverValidationKey</key>
<dict>
<key>PBXStatusErrorsKey</key>
<integer>2</integer>
</dict>
</dict>
</array>
<key>OpenEditors</key>
<array/>
<key>PerspectiveWidths</key>
<array>
<integer>1398</integer>
<integer>1398</integer>
</array>
<key>Perspectives</key>
<array>
<dict>
<key>ChosenToolbarItems</key>
<array>
<string>XCToolbarPerspectiveControl</string>
<string>NSToolbarSeparatorItem</string>
<string>active-combo-popup</string>
<string>action</string>
<string>NSToolbarFlexibleSpaceItem</string>
<string>debugger-enable-breakpoints</string>
<string>build-and-go</string>
<string>com.apple.ide.PBXToolbarStopButton</string>
<string>get-info</string>
<string>NSToolbarFlexibleSpaceItem</string>
<string>com.apple.pbx.toolbar.searchfield</string>
</array>
<key>ControllerClassBaseName</key>
<string></string>
<key>IconName</key>
<string>WindowOfProject</string>
<key>Identifier</key>
<string>perspective.project</string>
<key>IsVertical</key>
<false/>
<key>Layout</key>
<array>
<dict>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
<array>
<string>1C37FBAC04509CD000000102</string>
<string>1C37FAAC04509CD000000102</string>
<string>1C37FABC05509CD000000102</string>
<string>1C37FABC05539CD112110102</string>
<string>E2644B35053B69B200211256</string>
<string>1C37FABC04509CD000100104</string>
<string>1CC0EA4004350EF90044410B</string>
<string>1CC0EA4004350EF90041110B</string>
<string>1C77FABC04509CD000000102</string>
</array>
<key>PBXProjectModuleGUID</key>
<string>1CA23ED40692098700951B8B</string>
<key>PBXProjectModuleLabel</key>
<string>Files</string>
<key>PBXProjectStructureProvided</key>
<string>yes</string>
<key>PBXSmartGroupTreeModuleColumnData</key>
<dict>
<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
<array>
<real>174</real>
</array>
<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
<array>
<string>MainColumn</string>
</array>
</dict>
<key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
<dict>
<key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
<array>
<string>29B97314FDCFA39411CA2CEA</string>
<string>080E96DDFE201D6D7F000001</string>
<string>29B97315FDCFA39411CA2CEA</string>
<string>29B97317FDCFA39411CA2CEA</string>
<string>29B97323FDCFA39411CA2CEA</string>
<string>19C28FACFE9D520D11CA2CBB</string>
<string>1C37FBAC04509CD000000102</string>
<string>1C77FABC04509CD000000102</string>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
<integer>31</integer>
<integer>30</integer>
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
<string>{{0, 4}, {174, 706}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
<key>XCIncludePerspectivesSwitch</key>
<false/>
</dict>
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 0}, {191, 724}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
<real>174</real>
</array>
<key>RubberWindowFrame</key>
<string>27 113 1398 765 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
<key>Proportion</key>
<string>191pt</string>
</dict>
<dict>
<key>Dock</key>
<array>
<dict>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>241B1E501051501300926F2B</string>
<key>PBXProjectModuleLabel</key>
<string>OCRDisplayViewController.mm</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>241B1E511051501300926F2B</string>
<key>PBXProjectModuleLabel</key>
<string>OCRDisplayViewController.mm</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
<string>241CDC6910CC90D0008EA1FB</string>
<key>history</key>
<array>
<string>24C7F7961052C50900896218</string>
<string>24C7F7991052C50900896218</string>
<string>24A3169B105DDAFA0051853C</string>
<string>24BA10C410C87C9500016CED</string>
<string>24BA10CE10C87F7D00016CED</string>
<string>24BA112710C8878600016CED</string>
<string>240C6F8A10C8DD5D00CD7AD1</string>
<string>240C6FF710C8E91200CD7AD1</string>
<string>24F2866B10C9BBC0004BB5CA</string>
<string>24F2866C10C9BBC0004BB5CA</string>
<string>24F2867A10C9BC02004BB5CA</string>
<string>24F2870310C9C810004BB5CA</string>
<string>24F2870410C9C810004BB5CA</string>
<string>2463449210CC286F00011876</string>
<string>2463453F10CC35CA00011876</string>
<string>2463455B10CC37F100011876</string>
<string>2463455C10CC37F100011876</string>
<string>241CDBE910CC7F07008EA1FB</string>
</array>
</dict>
<key>SplitCount</key>
<string>1</string>
</dict>
<key>StatusBarVisibility</key>
<true/>
<key>XCSharingToken</key>
<string>com.apple.Xcode.CommonNavigatorGroupSharingToken</string>
</dict>
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 0}, {1202, 401}}</string>
<key>RubberWindowFrame</key>
<string>27 113 1398 765 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
<string>401pt</string>
</dict>
<dict>
<key>Proportion</key>
<string>318pt</string>
<key>Tabs</key>
<array>
<dict>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>1CA23EDF0692099D00951B8B</string>
<key>PBXProjectModuleLabel</key>
<string>Detail</string>
</dict>
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{10, 27}, {1202, 291}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
</dict>
<dict>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>1CA23EE00692099D00951B8B</string>
<key>PBXProjectModuleLabel</key>
<string>Project Find</string>
</dict>
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{10, 27}, {997, 190}}</string>
</dict>
<key>Module</key>
<string>PBXProjectFindModule</string>
</dict>
<dict>
<key>ContentConfiguration</key>
<dict>
<key>PBXCVSModuleFilterTypeKey</key>
<integer>1032</integer>
<key>PBXProjectModuleGUID</key>
<string>1CA23EE10692099D00951B8B</string>
<key>PBXProjectModuleLabel</key>
<string>SCM Results</string>
</dict>
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{10, 31}, {603, 297}}</string>
</dict>
<key>Module</key>
<string>PBXCVSModule</string>
</dict>
<dict>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>XCMainBuildResultsModuleGUID</string>
<key>PBXProjectModuleLabel</key>
<string>Build Results</string>
<key>XCBuildResultsTrigger_Collapse</key>
<integer>1022</integer>
<key>XCBuildResultsTrigger_Open</key>
<integer>1012</integer>
</dict>
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{10, 27}, {1202, 291}}</string>
<key>RubberWindowFrame</key>
<string>27 113 1398 765 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
</dict>
</array>
</dict>
</array>
<key>Proportion</key>
<string>1202pt</string>
</dict>
</array>
<key>Name</key>
<string>Project</string>
<key>ServiceClasses</key>
<array>
<string>XCModuleDock</string>
<string>PBXSmartGroupTreeModule</string>
<string>XCModuleDock</string>
<string>PBXNavigatorGroup</string>
<string>XCDockableTabModule</string>
<string>XCDetailModule</string>
<string>PBXProjectFindModule</string>
<string>PBXCVSModule</string>
<string>PBXBuildResultsModule</string>
</array>
<key>TableOfContents</key>
<array>
<string>241CDBD910CC7ED5008EA1FB</string>
<string>1CA23ED40692098700951B8B</string>
<string>241CDBDA10CC7ED5008EA1FB</string>
<string>241B1E501051501300926F2B</string>
<string>241CDBDB10CC7ED5008EA1FB</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
<string>XCMainBuildResultsModuleGUID</string>
</array>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.defaultV3</string>
</dict>
<dict>
<key>ChosenToolbarItems</key>
<array>
<string>XCToolbarPerspectiveControl</string>
<string>NSToolbarSeparatorItem</string>
<string>active-combo-popup</string>
<string>NSToolbarFlexibleSpaceItem</string>
<string>debugger-enable-breakpoints</string>
<string>build-and-go</string>
<string>com.apple.ide.PBXToolbarStopButton</string>
<string>debugger-restart-executable</string>
<string>debugger-pause</string>
<string>debugger-step-over</string>
<string>debugger-step-into</string>
<string>debugger-step-out</string>
<string>NSToolbarFlexibleSpaceItem</string>
<string>servicesModulebreakpoints</string>
<string>debugger-show-console-window</string>
</array>
<key>ControllerClassBaseName</key>
<string>PBXDebugSessionModule</string>
<key>IconName</key>
<string>DebugTabIcon</string>
<key>Identifier</key>
<string>perspective.debug</string>
<key>IsVertical</key>
<true/>
<key>Layout</key>
<array>
<dict>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>1CCC7628064C1048000F2A68</string>
<key>PBXProjectModuleLabel</key>
<string>Debugger Console</string>
</dict>
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 0}, {1398, 236}}</string>
</dict>
<key>Module</key>
<string>PBXDebugCLIModule</string>
<key>Proportion</key>
<string>236pt</string>
</dict>
<dict>
<key>ContentConfiguration</key>
<dict>
<key>Debugger</key>
<dict>
<key>HorizontalSplitView</key>
<dict>
<key>_collapsingFrameDimension</key>
<real>0.0</real>
<key>_indexOfCollapsedView</key>
<integer>0</integer>
<key>_percentageOfCollapsedView</key>
<real>0.0</real>
<key>isCollapsed</key>
<string>yes</string>
<key>sizes</key>
<array>
<string>{{0, 0}, {699, 212}}</string>
<string>{{699, 0}, {699, 212}}</string>
</array>
</dict>
<key>VerticalSplitView</key>
<dict>
<key>_collapsingFrameDimension</key>
<real>0.0</real>
<key>_indexOfCollapsedView</key>
<integer>0</integer>
<key>_percentageOfCollapsedView</key>
<real>0.0</real>
<key>isCollapsed</key>
<string>yes</string>
<key>sizes</key>
<array>
<string>{{0, 0}, {1398, 212}}</string>
<string>{{0, 212}, {1398, 271}}</string>
</array>
</dict>
</dict>
<key>LauncherConfigVersion</key>
<string>8</string>
<key>PBXProjectModuleGUID</key>
<string>1CCC7629064C1048000F2A68</string>
<key>PBXProjectModuleLabel</key>
<string>Debug</string>
</dict>
<key>GeometryConfiguration</key>
<dict>
<key>DebugConsoleVisible</key>
<string>None</string>
<key>DebugConsoleWindowFrame</key>
<string>{{200, 200}, {500, 300}}</string>
<key>DebugSTDIOWindowFrame</key>
<string>{{200, 200}, {500, 300}}</string>
<key>Frame</key>
<string>{{0, 241}, {1398, 483}}</string>
<key>PBXDebugSessionStackFrameViewKey</key>
<dict>
<key>DebugVariablesTableConfiguration</key>
<array>
<string>Name</string>
<real>120</real>
<string>Value</string>
<real>85</real>
<string>Summary</string>
<real>469</real>
</array>
<key>Frame</key>
<string>{{699, 0}, {699, 212}}</string>
</dict>
</dict>
<key>Module</key>
<string>PBXDebugSessionModule</string>
<key>Proportion</key>
<string>483pt</string>
</dict>
</array>
<key>Name</key>
<string>Debug</string>
<key>ServiceClasses</key>
<array>
<string>XCModuleDock</string>
<string>PBXDebugCLIModule</string>
<string>PBXDebugSessionModule</string>
<string>PBXDebugProcessAndThreadModule</string>
<string>PBXDebugProcessViewModule</string>
<string>PBXDebugThreadViewModule</string>
<string>PBXDebugStackFrameViewModule</string>
<string>PBXNavigatorGroup</string>
</array>
<key>TableOfContents</key>
<array>
<string>241CDBDC10CC7ED5008EA1FB</string>
<string>1CCC7628064C1048000F2A68</string>
<string>1CCC7629064C1048000F2A68</string>
<string>241CDBDD10CC7ED5008EA1FB</string>
<string>241CDBDE10CC7ED5008EA1FB</string>
<string>241CDBDF10CC7ED5008EA1FB</string>
<string>241CDBE010CC7ED5008EA1FB</string>
<string>241CDBE110CC7ED5008EA1FB</string>
</array>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.debugV3</string>
</dict>
</array>
<key>PerspectivesBarVisible</key>
<true/>
<key>ShelfIsVisible</key>
<false/>
<key>SourceDescription</key>
<string>file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecification.xcperspec'</string>
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
<real>281841872.11060297</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
<integer>1</integer>
<key>ToolbarIsVisible</key>
<true/>
<key>ToolbarSizeMode</key>
<integer>1</integer>
<key>Type</key>
<string>Perspectives</string>
<key>UpdateMessage</key>
<string></string>
<key>WindowJustification</key>
<integer>5</integer>
<key>WindowOrderList</key>
<array>
<string>/Users/rcarlsen/Documents/_software_dev/_iphone/OCR/OCR.xcodeproj</string>
</array>
<key>WindowString</key>
<string>27 113 1398 765 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
<key>Identifier</key>
<string>windowTool.debugger</string>
<key>Layout</key>
<array>
<dict>
<key>Dock</key>
<array>
<dict>
<key>ContentConfiguration</key>
<dict>
<key>Debugger</key>
<dict>
<key>HorizontalSplitView</key>
<dict>
<key>_collapsingFrameDimension</key>
<real>0.0</real>
<key>_indexOfCollapsedView</key>
<integer>0</integer>
<key>_percentageOfCollapsedView</key>
<real>0.0</real>
<key>isCollapsed</key>
<string>yes</string>
<key>sizes</key>
<array>
<string>{{0, 0}, {317, 164}}</string>
<string>{{317, 0}, {377, 164}}</string>
</array>
</dict>
<key>VerticalSplitView</key>
<dict>
<key>_collapsingFrameDimension</key>
<real>0.0</real>
<key>_indexOfCollapsedView</key>
<integer>0</integer>
<key>_percentageOfCollapsedView</key>
<real>0.0</real>
<key>isCollapsed</key>
<string>yes</string>
<key>sizes</key>
<array>
<string>{{0, 0}, {694, 164}}</string>
<string>{{0, 164}, {694, 216}}</string>
</array>
</dict>
</dict>
<key>LauncherConfigVersion</key>
<string>8</string>
<key>PBXProjectModuleGUID</key>
<string>1C162984064C10D400B95A72</string>
<key>PBXProjectModuleLabel</key>
<string>Debug - GLUTExamples (Underwater)</string>
</dict>
<key>GeometryConfiguration</key>
<dict>
<key>DebugConsoleDrawerSize</key>
<string>{100, 120}</string>
<key>DebugConsoleVisible</key>
<string>None</string>
<key>DebugConsoleWindowFrame</key>
<string>{{200, 200}, {500, 300}}</string>
<key>DebugSTDIOWindowFrame</key>
<string>{{200, 200}, {500, 300}}</string>
<key>Frame</key>
<string>{{0, 0}, {694, 380}}</string>
<key>RubberWindowFrame</key>
<string>321 238 694 422 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXDebugSessionModule</string>
<key>Proportion</key>
<string>100%</string>
</dict>
</array>
<key>Proportion</key>
<string>100%</string>
</dict>
</array>
<key>Name</key>
<string>Debugger</string>
<key>ServiceClasses</key>
<array>
<string>PBXDebugSessionModule</string>
</array>
<key>StatusbarIsVisible</key>
<integer>1</integer>
<key>TableOfContents</key>
<array>
<string>1CD10A99069EF8BA00B06720</string>
<string>1C0AD2AB069F1E9B00FABCE6</string>
<string>1C162984064C10D400B95A72</string>
<string>1C0AD2AC069F1E9B00FABCE6</string>
</array>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.debugV3</string>
<key>WindowString</key>
<string>321 238 694 422 0 0 1440 878 </string>
<key>WindowToolGUID</key>
<string>1CD10A99069EF8BA00B06720</string>
<key>WindowToolIsVisible</key>
<integer>0</integer>
</dict>
<dict>
<key>Identifier</key>
<string>windowTool.build</string>
<key>Layout</key>
<array>
<dict>
<key>Dock</key>
<array>
<dict>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>1CD0528F0623707200166675</string>
<key>PBXProjectModuleLabel</key>
<string><No Editor></string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>1CD052900623707200166675</string>
</dict>
<key>SplitCount</key>
<string>1</string>
</dict>
<key>StatusBarVisibility</key>
<integer>1</integer>
</dict>
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 0}, {500, 215}}</string>
<key>RubberWindowFrame</key>
<string>192 257 500 500 0 0 1280 1002 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
<string>218pt</string>
</dict>
<dict>
<key>BecomeActive</key>
<integer>1</integer>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>XCMainBuildResultsModuleGUID</string>
<key>PBXProjectModuleLabel</key>
<string>Build Results</string>
</dict>
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 222}, {500, 236}}</string>
<key>RubberWindowFrame</key>
<string>192 257 500 500 0 0 1280 1002 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
<key>Proportion</key>
<string>236pt</string>
</dict>
</array>
<key>Proportion</key>
<string>458pt</string>
</dict>
</array>
<key>Name</key>
<string>Build Results</string>
<key>ServiceClasses</key>
<array>
<string>PBXBuildResultsModule</string>
</array>
<key>StatusbarIsVisible</key>
<integer>1</integer>
<key>TableOfContents</key>
<array>
<string>1C78EAA5065D492600B07095</string>
<string>1C78EAA6065D492600B07095</string>
<string>1CD0528F0623707200166675</string>
<string>XCMainBuildResultsModuleGUID</string>
</array>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.buildV3</string>
<key>WindowString</key>
<string>192 257 500 500 0 0 1280 1002 </string>
</dict>
<dict>
<key>Identifier</key>
<string>windowTool.find</string>
<key>Layout</key>
<array>
<dict>
<key>Dock</key>
<array>
<dict>
<key>Dock</key>
<array>
<dict>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>1CDD528C0622207200134675</string>
<key>PBXProjectModuleLabel</key>
<string><No Editor></string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>1CD0528D0623707200166675</string>
</dict>
<key>SplitCount</key>
<string>1</string>
</dict>
<key>StatusBarVisibility</key>
<integer>1</integer>
</dict>
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 0}, {781, 167}}</string>
<key>RubberWindowFrame</key>
<string>62 385 781 470 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
<string>781pt</string>
</dict>
</array>
<key>Proportion</key>
<string>50%</string>
</dict>
<dict>
<key>BecomeActive</key>
<integer>1</integer>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>1CD0528E0623707200166675</string>
<key>PBXProjectModuleLabel</key>
<string>Project Find</string>
</dict>
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{8, 0}, {773, 254}}</string>
<key>RubberWindowFrame</key>
<string>62 385 781 470 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXProjectFindModule</string>
<key>Proportion</key>
<string>50%</string>
</dict>
</array>
<key>Proportion</key>
<string>428pt</string>
</dict>
</array>
<key>Name</key>
<string>Project Find</string>
<key>ServiceClasses</key>
<array>
<string>PBXProjectFindModule</string>
</array>
<key>StatusbarIsVisible</key>
<integer>1</integer>
<key>TableOfContents</key>
<array>
<string>1C530D57069F1CE1000CFCEE</string>
<string>1C530D58069F1CE1000CFCEE</string>
<string>1C530D59069F1CE1000CFCEE</string>
<string>1CDD528C0622207200134675</string>
<string>1C530D5A069F1CE1000CFCEE</string>
<string>1CE0B1FE06471DED0097A5F4</string>
<string>1CD0528E0623707200166675</string>
</array>
<key>WindowString</key>
<string>62 385 781 470 0 0 1440 878 </string>
<key>WindowToolGUID</key>
<string>1C530D57069F1CE1000CFCEE</string>
<key>WindowToolIsVisible</key>
<integer>0</integer>
</dict>
<dict>
<key>Identifier</key>
<string>windowTool.snapshots</string>
<key>Layout</key>
<array>
<dict>
<key>Dock</key>
<array>
<dict>
<key>Module</key>
<string>XCSnapshotModule</string>
<key>Proportion</key>
<string>100%</string>
</dict>
</array>
<key>Proportion</key>
<string>100%</string>
</dict>
</array>
<key>Name</key>
<string>Snapshots</string>
<key>ServiceClasses</key>
<array>
<string>XCSnapshotModule</string>
</array>
<key>StatusbarIsVisible</key>
<string>Yes</string>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.snapshots</string>
<key>WindowString</key>
<string>315 824 300 550 0 0 1440 878 </string>
<key>WindowToolIsVisible</key>
<string>Yes</string>
</dict>
<dict>
<key>FirstTimeWindowDisplayed</key>
<false/>
<key>Identifier</key>
<string>windowTool.debuggerConsole</string>
<key>IsVertical</key>
<true/>
<key>Layout</key>
<array>
<dict>
<key>Dock</key>
<array>
<dict>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>1C78EAAC065D492600B07095</string>
<key>PBXProjectModuleLabel</key>
<string>Debugger Console</string>
</dict>
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 0}, {440, 359}}</string>
<key>RubberWindowFrame</key>
<string>38 431 440 400 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXDebugCLIModule</string>
<key>Proportion</key>
<string>359pt</string>
</dict>
</array>
<key>Proportion</key>
<string>359pt</string>
</dict>
</array>
<key>Name</key>
<string>Debugger Console</string>
<key>ServiceClasses</key>
<array>
<string>PBXDebugCLIModule</string>
</array>
<key>StatusbarIsVisible</key>
<true/>
<key>TableOfContents</key>
<array>
<string>1C530D5B069F1CE1000CFCEE</string>
<string>24CE087110C956BD0055E8BB</string>
<string>1C78EAAC065D492600B07095</string>
</array>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.consoleV3</string>
<key>WindowString</key>
<string>38 431 440 400 0 0 1440 878 </string>
<key>WindowToolGUID</key>
<string>1C530D5B069F1CE1000CFCEE</string>
<key>WindowToolIsVisible</key>
<false/>
</dict>
<dict>
<key>Identifier</key>
<string>windowTool.scm</string>
<key>Layout</key>
<array>
<dict>
<key>Dock</key>
<array>
<dict>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>1C78EAB2065D492600B07095</string>
<key>PBXProjectModuleLabel</key>
<string><No Editor></string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>1C78EAB3065D492600B07095</string>
</dict>
<key>SplitCount</key>
<string>1</string>
</dict>
<key>StatusBarVisibility</key>
<integer>1</integer>
</dict>
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 0}, {452, 0}}</string>
<key>RubberWindowFrame</key>
<string>743 379 452 308 0 0 1280 1002 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
<string>0pt</string>
</dict>
<dict>
<key>BecomeActive</key>
<integer>1</integer>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>1CD052920623707200166675</string>
<key>PBXProjectModuleLabel</key>
<string>SCM</string>
</dict>
<key>GeometryConfiguration</key>
<dict>
<key>ConsoleFrame</key>
<string>{{0, 259}, {452, 0}}</string>
<key>Frame</key>
<string>{{0, 7}, {452, 259}}</string>
<key>RubberWindowFrame</key>
<string>743 379 452 308 0 0 1280 1002 </string>
<key>TableConfiguration</key>
<array>
<string>Status</string>
<real>30</real>
<string>FileName</string>
<real>199</real>
<string>Path</string>
<real>197.09500122070312</real>
</array>
<key>TableFrame</key>
<string>{{0, 0}, {452, 250}}</string>
</dict>
<key>Module</key>
<string>PBXCVSModule</string>
<key>Proportion</key>
<string>262pt</string>
</dict>
</array>
<key>Proportion</key>
<string>266pt</string>
</dict>
</array>
<key>Name</key>
<string>SCM</string>
<key>ServiceClasses</key>
<array>
<string>PBXCVSModule</string>
</array>
<key>StatusbarIsVisible</key>
<integer>1</integer>
<key>TableOfContents</key>
<array>
<string>1C78EAB4065D492600B07095</string>
<string>1C78EAB5065D492600B07095</string>
<string>1C78EAB2065D492600B07095</string>
<string>1CD052920623707200166675</string>
</array>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.scmV3</string>
<key>WindowString</key>
<string>743 379 452 308 0 0 1280 1002 </string>
</dict>
<dict>
<key>Identifier</key>
<string>windowTool.breakpoints</string>
<key>IsVertical</key>
<integer>0</integer>
<key>Layout</key>
<array>
<dict>
<key>Dock</key>
<array>
<dict>
<key>BecomeActive</key>
<integer>1</integer>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
<array>
<string>1C77FABC04509CD000000102</string>
</array>
<key>PBXProjectModuleGUID</key>
<string>1CE0B1FE06471DED0097A5F4</string>
<key>PBXProjectModuleLabel</key>
<string>Files</string>
<key>PBXProjectStructureProvided</key>
<string>no</string>
<key>PBXSmartGroupTreeModuleColumnData</key>
<dict>
<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
<array>
<real>168</real>
</array>
<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
<array>
<string>MainColumn</string>
</array>
</dict>
<key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
<dict>
<key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
<array>
<string>1C77FABC04509CD000000102</string>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
<integer>0</integer>
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
<string>{{0, 0}, {168, 350}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
<key>XCIncludePerspectivesSwitch</key>
<integer>0</integer>
</dict>
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 0}, {185, 368}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
<real>168</real>
</array>
<key>RubberWindowFrame</key>
<string>315 424 744 409 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
<key>Proportion</key>
<string>185pt</string>
</dict>
<dict>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>1CA1AED706398EBD00589147</string>
<key>PBXProjectModuleLabel</key>
<string>Detail</string>
</dict>
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{190, 0}, {554, 368}}</string>
<key>RubberWindowFrame</key>
<string>315 424 744 409 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
<key>Proportion</key>
<string>554pt</string>
</dict>
</array>
<key>Proportion</key>
<string>368pt</string>
</dict>
</array>
<key>MajorVersion</key>
<integer>3</integer>
<key>MinorVersion</key>
<integer>0</integer>
<key>Name</key>
<string>Breakpoints</string>
<key>ServiceClasses</key>
<array>
<string>PBXSmartGroupTreeModule</string>
<string>XCDetailModule</string>
</array>
<key>StatusbarIsVisible</key>
<integer>1</integer>
<key>TableOfContents</key>
<array>
<string>1CDDB66807F98D9800BB5817</string>
<string>1CDDB66907F98D9800BB5817</string>
<string>1CE0B1FE06471DED0097A5F4</string>
<string>1CA1AED706398EBD00589147</string>
</array>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.breakpointsV3</string>
<key>WindowString</key>
<string>315 424 744 409 0 0 1440 878 </string>
<key>WindowToolGUID</key>
<string>1CDDB66807F98D9800BB5817</string>
<key>WindowToolIsVisible</key>
<integer>1</integer>
</dict>
<dict>
<key>Identifier</key>
<string>windowTool.debugAnimator</string>
<key>Layout</key>
<array>
<dict>
<key>Dock</key>
<array>
<dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
<string>100%</string>
</dict>
</array>
<key>Proportion</key>
<string>100%</string>
</dict>
</array>
<key>Name</key>
<string>Debug Visualizer</string>
<key>ServiceClasses</key>
<array>
<string>PBXNavigatorGroup</string>
</array>
<key>StatusbarIsVisible</key>
<integer>1</integer>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.debugAnimatorV3</string>
<key>WindowString</key>
<string>100 100 700 500 0 0 1280 1002 </string>
</dict>
<dict>
<key>Identifier</key>
<string>windowTool.bookmarks</string>
<key>Layout</key>
<array>
<dict>
<key>Dock</key>
<array>
<dict>
<key>Module</key>
<string>PBXBookmarksModule</string>
<key>Proportion</key>
<string>166pt</string>
</dict>
</array>
<key>Proportion</key>
<string>166pt</string>
</dict>
</array>
<key>Name</key>
<string>Bookmarks</string>
<key>ServiceClasses</key>
<array>
<string>PBXBookmarksModule</string>
</array>
<key>StatusbarIsVisible</key>
<integer>0</integer>
<key>WindowString</key>
<string>538 42 401 187 0 0 1280 1002 </string>
</dict>
<dict>
<key>Identifier</key>
<string>windowTool.projectFormatConflicts</string>
<key>Layout</key>
<array>
<dict>
<key>Dock</key>
<array>
<dict>
<key>Module</key>
<string>XCProjectFormatConflictsModule</string>
<key>Proportion</key>
<string>100%</string>
</dict>
</array>
<key>Proportion</key>
<string>100%</string>
</dict>
</array>
<key>Name</key>
<string>Project Format Conflicts</string>
<key>ServiceClasses</key>
<array>
<string>XCProjectFormatConflictsModule</string>
</array>
<key>StatusbarIsVisible</key>
<integer>0</integer>
<key>WindowContentMinSize</key>
<string>450 300</string>
<key>WindowString</key>
<string>50 850 472 307 0 0 1440 877</string>
</dict>
<dict>
<key>Identifier</key>
<string>windowTool.classBrowser</string>
<key>Layout</key>
<array>
<dict>
<key>Dock</key>
<array>
<dict>
<key>BecomeActive</key>
<integer>1</integer>
<key>ContentConfiguration</key>
<dict>
<key>OptionsSetName</key>
<string>Hierarchy, all classes</string>
<key>PBXProjectModuleGUID</key>
<string>1CA6456E063B45B4001379D8</string>
<key>PBXProjectModuleLabel</key>
<string>Class Browser - NSObject</string>
</dict>
<key>GeometryConfiguration</key>
<dict>
<key>ClassesFrame</key>
<string>{{0, 0}, {369, 96}}</string>
<key>ClassesTreeTableConfiguration</key>
<array>
<string>PBXClassNameColumnIdentifier</string>
<real>208</real>
<string>PBXClassBookColumnIdentifier</string>
<real>22</real>
</array>
<key>Frame</key>
<string>{{0, 0}, {616, 353}}</string>
<key>MembersFrame</key>
<string>{{0, 105}, {369, 395}}</string>
<key>MembersTreeTableConfiguration</key>
<array>
<string>PBXMemberTypeIconColumnIdentifier</string>
<real>22</real>
<string>PBXMemberNameColumnIdentifier</string>
<real>216</real>
<string>PBXMemberTypeColumnIdentifier</string>
<real>94</real>
<string>PBXMemberBookColumnIdentifier</string>
<real>22</real>
</array>
<key>PBXModuleWindowStatusBarHidden2</key>
<integer>1</integer>
<key>RubberWindowFrame</key>
<string>597 125 616 374 0 0 1280 1002 </string>
</dict>
<key>Module</key>
<string>PBXClassBrowserModule</string>
<key>Proportion</key>
<string>354pt</string>
</dict>
</array>
<key>Proportion</key>
<string>354pt</string>
</dict>
</array>
<key>Name</key>
<string>Class Browser</string>
<key>ServiceClasses</key>
<array>
<string>PBXClassBrowserModule</string>
</array>
<key>StatusbarIsVisible</key>
<integer>0</integer>
<key>TableOfContents</key>
<array>
<string>1C78EABA065D492600B07095</string>
<string>1C78EABB065D492600B07095</string>
<string>1CA6456E063B45B4001379D8</string>
</array>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.classbrowser</string>
<key>WindowString</key>
<string>597 125 616 374 0 0 1280 1002 </string>
</dict>
<dict>
<key>Identifier</key>
<string>windowTool.refactoring</string>
<key>IncludeInToolsMenu</key>
<integer>0</integer>
<key>Layout</key>
<array>
<dict>
<key>Dock</key>
<array>
<dict>
<key>BecomeActive</key>
<integer>1</integer>
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{0, 0}, {500, 335}</string>
<key>RubberWindowFrame</key>
<string>{0, 0}, {500, 335}</string>
</dict>
<key>Module</key>
<string>XCRefactoringModule</string>
<key>Proportion</key>
<string>100%</string>
</dict>
</array>
<key>Proportion</key>
<string>100%</string>
</dict>
</array>
<key>Name</key>
<string>Refactoring</string>
<key>ServiceClasses</key>
<array>
<string>XCRefactoringModule</string>
</array>
<key>WindowString</key>
<string>200 200 500 356 0 0 1920 1200 </string>
</dict>
</array>
</dict>
</plist>
================================================
FILE: OCRDisplayViewController.xib
================================================
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">768</int>
<string key="IBDocument.SystemVersion">10B504</string>
<string key="IBDocument.InterfaceBuilderVersion">740</string>
<string key="IBDocument.AppKitVersion">1038.2</string>
<string key="IBDocument.HIToolboxVersion">437.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">62</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="1"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys" id="0">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBProxyObject" id="372490531">
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
</object>
<object class="IBProxyObject" id="975951072">
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
</object>
<object class="IBUIView" id="191373211">
<reference key="NSNextResponder"/>
<int key="NSvFlags">292</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBUITextView" id="42802488">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{0, 76}, {320, 340}}</string>
<reference key="NSSuperview" ref="191373211"/>
<object class="NSColor" key="IBUIBackgroundColor" id="169378813">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MCAwAA</bytes>
</object>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<bool key="IBUIMultipleTouchEnabled">YES</bool>
<bool key="IBUIShowsHorizontalScrollIndicator">NO</bool>
<bool key="IBUIDelaysContentTouches">NO</bool>
<bool key="IBUICanCancelContentTouches">NO</bool>
<bool key="IBUIBouncesZoom">NO</bool>
<bool key="IBUIEditable">NO</bool>
<string key="IBUIText">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</string>
<object class="IBUITextInputTraits" key="IBUITextInputTraits">
<int key="IBUIAutocapitalizationType">2</int>
<int key="IBUIAutocorrectionType">2</int>
<int key="IBUIReturnKeyType">9</int>
</object>
<int key="IBUIDataDetectorTypes">3</int>
</object>
<object class="IBUIToolbar" id="505782876">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">266</int>
<string key="NSFrame">{{0, 416}, {320, 44}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
<int key="IBUIBarStyle">2</int>
<object class="NSMutableArray" key="IBUIItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBUIBarButtonItem" id="780825115">
<int key="IBUIStyle">1</int>
<reference key="IBUIToolbar" ref="505782876"/>
<int key="IBUISystemItemIdentifier">15</int>
</object>
<object class="IBUIBarButtonItem" id="407915375">
<reference key="IBUIToolbar" ref="505782876"/>
<int key="IBUISystemItemIdentifier">5</int>
</object>
<object class="IBUIBarButtonItem" id="676341579">
<int key="IBUIStyle">1</int>
<reference key="IBUIToolbar" ref="505782876"/>
<int key="IBUISystemItemIdentifier">9</int>
</object>
</object>
</object>
<object class="IBUIImageView" id="1060362418">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">290</int>
<string key="NSFrame">{{0, 68}, {348, 10}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
<float key="IBUIAlpha">0.78169012069702148</float>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="IBUIContentStretch">{{0, 1}, {1, 1}}</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">shadow.png</string>
</object>
</object>
<object class="IBUIView" id="930318828">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBUILabel" id="793421420">
<reference key="NSNextResponder" ref="930318828"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{8, 8}, {242, 48}}</string>
<reference key="NSSuperview" ref="930318828"/>
<reference key="IBUIBackgroundColor" ref="169378813"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="IBUIText">iPhone tesseract-ocr</string>
<object class="NSFont" key="IBUIFont">
<string key="NSName">Helvetica-Bold</string>
<double key="NSSize">18</double>
<int key="NSfFlags">16</int>
</object>
<object class="NSColor" key="IBUITextColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MCAwIDAAA</bytes>
</object>
<nil key="IBUIHighlightedColor"/>
<int key="IBUIBaselineAdjustment">1</int>
<float key="IBUIMinimumFontSize">10</float>
</object>
<object class="IBUIImageView" id="104911380">
<reference key="NSNextResponder" ref="930318828"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{258, 8}, {52, 52}}</string>
<reference key="NSSuperview" ref="930318828"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MCAwLjEAA</bytes>
</object>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
<int key="IBUIContentMode">1</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
</object>
</object>
<string key="NSFrameSize">{320, 68}</string>
<reference key="NSSuperview" ref="191373211"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC44NzIyNjI3NzM3AA</bytes>
</object>
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
</object>
</object>
<string key="NSFrameSize">{320, 460}</string>
<reference key="NSSuperview"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC45Njc3MTk1NTQ5IDAuOTg0NDg4MTI5NiAwLjk4NTc5NDQyNQA</bytes>
</object>
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">view</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="191373211"/>
</object>
<int key="connectionID">3</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">outputView</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="42802488"/>
</object>
<int key="connectionID">7</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">cameraButton</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="780825115"/>
</object>
<int key="connectionID">8</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">selectImage:</string>
<reference key="source" ref="780825115"/>
<reference key="destination" ref="372490531"/>
</object>
<int key="connectionID">9</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">displayComposerSheet</string>
<reference key="source" ref="676341579"/>
<reference key="destination" ref="372490531"/>
</object>
<int key="connectionID">12</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">thumbImageView</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="104911380"/>
</object>
<int key="connectionID">16</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">statusLabel</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="793421420"/>
</object>
<int key="connectionID">17</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
<reference key="object" ref="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1</int>
<reference key="object" ref="191373211"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="42802488"/>
<reference ref="505782876"/>
<reference ref="1060362418"/>
<reference ref="930318828"/>
</object>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="372490531"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="975951072"/>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">4</int>
<reference key="object" ref="42802488"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">5</int>
<reference key="object" ref="505782876"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="780825115"/>
<reference ref="407915375"/>
<reference ref="676341579"/>
</object>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">6</int>
<reference key="object" ref="780825115"/>
<reference key="parent" ref="505782876"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">11</int>
<reference key="object" ref="407915375"/>
<reference key="parent" ref="505782876"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">10</int>
<reference key="object" ref="676341579"/>
<reference key="parent" ref="505782876"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">15</int>
<reference key="object" ref="930318828"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="793421420"/>
<reference ref="104911380"/>
</object>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">14</int>
<reference key="object" ref="793421420"/>
<reference key="parent" ref="930318828"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">18</int>
<reference key="object" ref="1060362418"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">13</int>
<reference key="object" ref="104911380"/>
<reference key="parent" ref="930318828"/>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.CustomClassName</string>
<string>-2.CustomClassName</string>
<string>1.IBEditorWindowLastContentRect</string>
<string>1.IBPluginDependency</string>
<string>10.IBPluginDependency</string>
<string>11.IBPluginDependency</string>
<string>13.CustomClassName</string>
<string>13.IBPluginDependency</string>
<string>14.IBPluginDependency</string>
<string>15.IBPluginDependency</string>
<string>18.IBPluginDependency</string>
<string>4.IBPluginDependency</string>
<string>5.IBPluginDependency</string>
<string>6.IBPluginDependency</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>OCRDisplayViewController</string>
<string>UIResponder</string>
<string>{{487, 376}, {320, 480}}</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>ZoomableImage</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="sourceID"/>
<int key="maxID">18</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">OCRDisplayViewController</string>
<string key="superclassName">UIViewController</string>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>displayComposerSheet</string>
<string>selectImage:</string>
<string>zoomThumbnail:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>id</string>
<string>id</string>
<string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>actionButton</string>
<string>cameraButton</string>
<string>outputView</string>
<string>statusLabel</string>
<string>thumbImageView</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>UIBarButtonItem</string>
<string>UIBarButtonItem</string>
<string>UITextView</string>
<string>UILabel</string>
<string>ZoomableImage</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">OCRDisplayViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">ZoomableImage</string>
<string key="superclassName">UIImageView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">Classes/ZoomableImage.h</string>
</object>
</object>
</object>
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSNetServices.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSPort.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSStream.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSXMLParser.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="159273134">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIBarButtonItem</string>
<string key="superclassName">UIBarItem</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIBarButtonItem.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIBarItem</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIBarItem.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIImageView</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIImageView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UILabel</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UILabel.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIResponder</string>
<string key="superclassName">NSObject</string>
<reference key="sourceIdentifier" ref="159273134"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIScrollView</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIScrollView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchBar</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchDisplayController</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UITextView</string>
<string key="superclassName">UIScrollView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITextView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIToolbar</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIToolbar.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
<integer value="768" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
<integer value="3000" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">OCR.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<string key="IBCocoaTouchPluginVersion">3.1</string>
</data>
</archive>
================================================
FILE: OCR_Prefix.pch
================================================
//
// Prefix header for all source files of the 'OCR' target in the 'OCR' project
//
#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#endif
================================================
FILE: UIImage-categories/UIImage+Alpha.h
================================================
// UIImage+Alpha.h
// Created by Trevor Harmon on 9/20/09.
// Free for personal or commercial use, with or without modification.
// No warranty is expressed or implied.
// Helper methods for adding an alpha layer to an image
@interface UIImage (Alpha)
- (BOOL)hasAlpha;
- (UIImage *)imageWithAlpha;
- (UIImage *)transparentBorderImage:(NSUInteger)borderSize;
@end
================================================
FILE: UIImage-categories/UIImage+Alpha.m
================================================
// UIImage+Alpha.m
// Created by Trevor Harmon on 9/20/09.
// Free for personal or commercial use, with or without modification.
// No warranty is expressed or implied.
#import "UIImage+Alpha.h"
// Private helper methods
@interface UIImage ()
- (CGImageRef)createBorderMask:(NSUInteger)borderSize size:(CGSize)size;
@end
@implementation UIImage (Alpha)
// Returns true if the image has an alpha layer
- (BOOL)hasAlpha {
CGImageAlphaInfo alpha = CGImageGetAlphaInfo(self.CGImage);
return (alpha == kCGImageAlphaFirst ||
alpha == kCGImageAlphaLast ||
alpha == kCGImageAlphaPremultipliedFirst ||
alpha == kCGImageAlphaPremultipliedLast);
}
// Returns a copy of the given image, adding an alpha channel if it doesn't already have one
- (UIImage *)imageWithAlpha {
if ([self hasAlpha]) {
return self;
}
CGImageRef imageRef = self.CGImage;
size_t width = CGImageGetWidth(imageRef);
size_t height = CGImageGetHeight(imageRef);
// The bitsPerComponent and bitmapInfo values are hard-coded to prevent an "unsupported parameter combination" error
CGContextRef offscreenContext = CGBitmapContextCreate(NULL,
width,
height,
8,
0,
CGImageGetColorSpace(imageRef),
kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedFirst);
// Draw the image into the context and retrieve the new image, which will now have an alpha layer
CGContextDrawImage(offscreenContext, CGRectMake(0, 0, width, height), imageRef);
CGImageRef imageRefWithAlpha = CGBitmapContextCreateImage(offscreenContext);
UIImage *imageWithAlpha = [UIImage imageWithCGImage:imageRefWithAlpha];
// Clean up
CGContextRelease(offscreenContext);
CGImageRelease(imageRefWithAlpha);
return imageWithAlpha;
}
// Returns a copy of the image with a transparent border of the given size added around its edges.
// If the image has no alpha layer, one will be added to it.
- (UIImage *)transparentBorderImage:(NSUInteger)borderSize {
// If the image does not have an alpha layer, add one
UIImage *image = [self imageWithAlpha];
CGRect newRect = CGRectMake(0, 0, image.size.width + borderSize * 2, image.size.height + borderSize * 2);
// Build a context that's the same dimensions as the new size
CGContextRef bitmap = CGBitmapContextCreate(NULL,
newRect.size.width,
newRect.size.height,
CGImageGetBitsPerComponent(self.CGImage),
0,
CGImageGetColorSpace(self.CGImage),
CGImageGetBitmapInfo(self.CGImage));
// Draw the image in the center of the context, leaving a gap around the edges
CGRect imageLocation = CGRectMake(borderSize, borderSize, image.size.width, image.size.height);
CGContextDrawImage(bitmap, imageLocation, self.CGImage);
CGImageRef borderImageRef = CGBitmapContextCreateImage(bitmap);
// Create a mask to make the border transparent, and combine it with the image
CGImageRef maskImageRef = [self createBorderMask:borderSize size:newRect.size];
CGImageRef transparentBorderImageRef = CGImageCreateWithMask(borderImageRef, maskImageRef);
UIImage *transparentBorderImage = [UIImage imageWithCGImage:transparentBorderImageRef];
// Clean up
CGContextRelease(bitmap);
CGImageRelease(borderImageRef);
CGImageRelease(maskImageRef);
CGImageRelease(transparentBorderImageRef);
return transparentBorderImage;
}
#pragma mark -
#pragma mark Private helper methods
// Creates a mask that makes the outer edges transparent and everything else opaque
// The size must include the entire mask (opaque part + transparent border)
// The caller is responsible for releasing the returned reference by calling CGImageRelease
- (CGImageRef)createBorderMask:(NSUInteger)borderSize size:(CGSize)size {
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
// Build a context that's the same dimensions as the new size
CGContextRef maskContext = CGBitmapContextCreate(NULL,
size.width,
size.height,
8, // 8-bit grayscale
0,
colorSpace,
kCGBitmapByteOrderDefault | kCGImageAlphaNone);
// Start with a mask that's entirely transparent
CGContextSetFillColorWithColor(maskContext, [UIColor blackColor].CGColor);
CGContextFillRect(maskContext, CGRectMake(0, 0, size.width, size.height));
// Make the inner part (within the border) opaque
CGContextSetFillColorWithColor(maskContext, [UIColor whiteColor].CGColor);
CGContextFillRect(maskContext, CGRectMake(borderSize, borderSize, size.width - borderSize * 2, size.height - borderSize * 2));
// Get an image of the context
CGImageRef maskImageRef = CGBitmapContextCreateImage(maskContext);
// Clean up
CGContextRelease(maskContext);
CGColorSpaceRelease(colorSpace);
return maskImageRef;
}
@end
================================================
FILE: UIImage-categories/UIImage+Resize.h
================================================
// UIImage+Resize.h
// Created by Trevor Harmon on 8/5/09.
// Free for personal or commercial use, with or without modification.
// No warranty is expressed or implied.
// Extends the UIImage class to support resizing/cropping
@interface UIImage (Resize)
- (UIImage *)croppedImage:(CGRect)bounds;
- (UIImage *)thumbnailImage:(NSInteger)thumbnailSize
transparentBorder:(NSUInteger)borderSize
cornerRadius:(NSUInteger)cornerRadius
interpolationQuality:(CGInterpolationQuality)quality;
- (UIImage *)resizedImage:(CGSize)newSize
interpolationQuality:(CGInterpolationQuality)quality;
- (UIImage *)resizedImageWithContentMode:(UIViewContentMode)contentMode
bounds:(CGSize)bounds
interpolationQuality:(CGInterpolationQuality)quality;
@end
================================================
FILE: UIImage-categories/UIImage+Resize.m
================================================
// UIImage+Resize.m
// Created by Trevor Harmon on 8/5/09.
// Free for personal or commercial use, with or without modification.
// No warranty is expressed or implied.
#import "UIImage+Resize.h"
#import "UIImage+RoundedCorner.h"
#import "UIImage+Alpha.h"
// Private helper methods
@interface UIImage ()
- (UIImage *)resizedImage:(CGSize)newSize
transform:(CGAffineTransform)transform
drawTransposed:(BOOL)transpose
interpolationQuality:(CGInterpolationQuality)quality;
- (CGAffineTransform)transformForOrientation:(CGSize)newSize;
@end
@implementation UIImage (Resize)
// Returns a copy of this image that is cropped to the given bounds
// Note that the bounds will be adjusted using CGRectIntegral
- (UIImage *)croppedImage:(CGRect)bounds {
CGImageRef imageRef = CGImageCreateWithImageInRect([self CGImage], bounds);
UIImage *croppedImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
return croppedImage;
}
// Returns a copy of this image that is squared to the thumbnail size.
// If transparentBorder is non-zero, a transparent border of the given size will be added around the edges of the thumbnail. (Adding a transparent border of at least one pixel in size has the side-effect of antialiasing the edges of the image when rotating it using Core Animation.)
- (UIImage *)thumbnailImage:(NSInteger)thumbnailSize
transparentBorder:(NSUInteger)borderSize
cornerRadius:(NSUInteger)cornerRadius
interpolationQuality:(CGInterpolationQuality)quality {
UIImage *resizedImage = [self resizedImageWithContentMode:UIViewContentModeScaleAspectFill
bounds:CGSizeMake(thumbnailSize, thumbnailSize)
interpolationQuality:quality];
// Crop out any part of the image that's larger than the thumbnail size
// The cropped rect must be centered on the resized image
// Round the origin points so that the size isn't altered when CGRectIntegral is later invoked
CGRect cropRect = CGRectMake(round((resizedImage.size.width - thumbnailSize) / 2),
round((resizedImage.size.height - thumbnailSize) / 2),
thumbnailSize,
thumbnailSize);
UIImage *croppedImage = [resizedImage croppedImage:cropRect];
UIImage *transparentBorderImage = borderSize ? [croppedImage transparentBorderImage:borderSize] : croppedImage;
return [transparentBorderImage roundedCornerImage:cornerRadius borderSize:borderSize];
}
// Returns a rescaled copy of the image, taking into account its orientation
// The image will be scaled disproportionately if necessary to fit the bounds specified by the parameter
- (UIImage *)resizedImage:(CGSize)newSize interpolationQuality:(CGInterpolationQuality)quality {
BOOL drawTransposed;
switch (self.imageOrientation) {
case UIImageOrientationLeft:
case UIImageOrientationLeftMirrored:
case UIImageOrientationRight:
case UIImageOrientationRightMirrored:
drawTransposed = YES;
break;
default:
drawTransposed = NO;
}
return [self resizedImage:newSize
transform:[self transformForOrientation:newSize]
drawTransposed:drawTransposed
interpolationQuality:quality];
}
// Resizes the image according to the given content mode, taking into account the image's orientation
- (UIImage *)resizedImageWithContentMode:(UIViewContentMode)contentMode
bounds:(CGSize)bounds
interpolationQuality:(CGInterpolationQuality)quality {
CGFloat horizontalRatio = bounds.width / self.size.width;
CGFloat verticalRatio = bounds.height / self.size.height;
CGFloat ratio;
switch (contentMode) {
case UIViewContentModeScaleAspectFill:
ratio = MAX(horizontalRatio, verticalRatio);
break;
case UIViewContentModeScaleAspectFit:
ratio = MIN(horizontalRatio, verticalRatio);
break;
default:
[NSException raise:NSInvalidArgumentException format:@"Unsupported content mode: %d", contentMode];
}
CGSize newSize = CGSizeMake(self.size.width * ratio, self.size.height * ratio);
return [self resizedImage:newSize interpolationQuality:quality];
}
#pragma mark -
#pragma mark Private helper methods
// Returns a copy of the image that has been transformed using the given affine transform and scaled to the new size
// The new image's orientation will be UIImageOrientationUp, regardless of the current image's orientation
// If the new size is not integral, it will be rounded up
- (UIImage *)resizedImage:(CGSize)newSize
transform:(CGAffineTransform)transform
drawTransposed:(BOOL)transpose
interpolationQuality:(CGInterpolationQuality)quality {
CGRect newRect = CGRectIntegral(CGRectMake(0, 0, newSize.width, newSize.height));
CGRect transposedRect = CGRectMake(0, 0, newRect.size.height, newRect.size.width);
CGImageRef imageRef = self.CGImage;
// Build a context that's the same dimensions as the new size
CGContextRef bitmap = CGBitmapContextCreate(NULL,
newRect.size.width,
newRect.size.height,
CGImageGetBitsPerComponent(imageRef),
0,
CGImageGetColorSpace(imageRef),
CGImageGetBitmapInfo(imageRef));
// Rotate and/or flip the image if required by its orientation
CGContextConcatCTM(bitmap, transform);
// Set the quality level to use when rescaling
CGContextSetInterpolationQuality(bitmap, quality);
// Draw into the context; this scales the image
CGContextDrawImage(bitmap, transpose ? transposedRect : newRect, imageRef);
// Get the resized image from the context and a UIImage
CGImageRef newImageRef = CGBitmapContextCreateImage(bitmap);
UIImage *newImage = [UIImage imageWithCGImage:newImageRef];
// Clean up
CGContextRelease(bitmap);
CGImageRelease(newImageRef);
return newImage;
}
// Returns an affine transform that takes into account the image orientation when drawing a scaled image
- (CGAffineTransform)transformForOrientation:(CGSize)newSize {
CGAffineTransform transform = CGAffineTransformIdentity;
switch (self.imageOrientation) {
case UIImageOrientationDown: // EXIF = 3
case UIImageOrientationDownMirrored: // EXIF = 4
transform = CGAffineTransformTranslate(transform, newSize.width, newSize.height);
transform = CGAffineTransformRotate(transform, M_PI);
break;
case UIImageOrientationLeft: // EXIF = 6
case UIImageOrientationLeftMirrored: // EXIF = 5
transform = CGAffineTransformTranslate(transform, newSize.width, 0);
transform = CGAffineTransformRotate(transform, M_PI_2);
break;
case UIImageOrientationRight: // EXIF = 8
case UIImageOrientationRightMirrored: // EXIF = 7
transform = CGAffineTransformTranslate(transform, 0, newSize.height);
transform = CGAffineTransformRotate(transform, -M_PI_2);
break;
}
switch (self.imageOrientation) {
case UIImageOrientationUpMirrored: // EXIF = 2
case UIImageOrientationDownMirrored: // EXIF = 4
transform = CGAffineTransformTranslate(transform, newSize.width, 0);
transform = CGAffineTransformScale(transform, -1, 1);
break;
case UIImageOrientationLeftMirrored: // EXIF = 5
case UIImageOrientationRightMirrored: // EXIF = 7
transform = CGAffineTransformTranslate(transform, newSize.height, 0);
transform = CGAffineTransformScale(transform, -1, 1);
break;
}
return transform;
}
@end
================================================
FILE: UIImage-categories/UIImage+RoundedCorner.h
================================================
// UIImage+RoundedCorner.h
// Created by Trevor Harmon on 9/20/09.
// Free for personal or commercial use, with or without modification.
// No warranty is expressed or implied.
// Extends the UIImage class to support making rounded corners
@interface UIImage (RoundedCorner)
- (UIImage *)roundedCornerImage:(NSInteger)cornerSize borderSize:(NSInteger)borderSize;
@end
================================================
FILE: UIImage-categories/UIImage+RoundedCorner.m
================================================
// UIImage+RoundedCorner.m
// Created by Trevor Harmon on 9/20/09.
// Free for personal or commercial use, with or without modification.
// No warranty is expressed or implied.
#import "UIImage+RoundedCorner.h"
#import "UIImage+Alpha.h"
// Private helper methods
@interface UIImage ()
- (void)addRoundedRectToPath:(CGRect)rect context:(CGContextRef)context ovalWidth:(CGFloat)ovalWidth ovalHeight:(CGFloat)ovalHeight;
@end
@implementation UIImage (RoundedCorner)
// Creates a copy of this image with rounded corners
// If borderSize is non-zero, a transparent border of the given size will also be added
// Original author: Björn Sållarp. Used with permission. See: http://blog.sallarp.com/iphone-uiimage-round-corners/
- (UIImage *)roundedCornerImage:(NSInteger)cornerSize borderSize:(NSInteger)borderSize {
// If the image does not have an alpha layer, add one
UIImage *image = [self imageWithAlpha];
// Build a context that's the same dimensions as the new size
CGContextRef context = CGBitmapContextCreate(NULL,
image.size.width,
image.size.height,
CGImageGetBitsPerComponent(image.CGImage),
0,
CGImageGetColorSpace(image.CGImage),
CGImageGetBitmapInfo(image.CGImage));
// Create a clipping path with rounded corners
CGContextBeginPath(context);
[self addRoundedRectToPath:CGRectMake(borderSize, borderSize, image.size.width - borderSize * 2, image.size.height - borderSize * 2)
context:context
ovalWidth:cornerSize
ovalHeight:cornerSize];
CGContextClosePath(context);
CGContextClip(context);
// Draw the image to the context; the clipping path will make anything outside the rounded rect transparent
CGContextDrawImage(context, CGRectMake(0, 0, image.size.width, image.size.height), image.CGImage);
// Create a CGImage from the context
CGImageRef clippedImage = CGBitmapContextCreateImage(context);
CGContextRelease(context);
// Create a UIImage from the CGImage
UIImage *roundedImage = [UIImage imageWithCGImage:clippedImage];
CGImageRelease(clippedImage);
return roundedImage;
}
#pragma mark -
#pragma mark Private helper methods
// Adds a rectangular path to the given context and rounds its corners by the given extents
// Original author: Björn Sållarp. Used with permission. See: http://blog.sallarp.com/iphone-uiimage-round-corners/
- (void)addRoundedRectToPath:(CGRect)rect context:(CGContextRef)context ovalWidth:(CGFloat)ovalWidth ovalHeight:(CGFloat)ovalHeight {
if (ovalWidth == 0 || ovalHeight == 0) {
CGContextAddRect(context, rect);
return;
}
CGContextSaveGState(context);
CGContextTranslateCTM(context, CGRectGetMinX(rect), CGRectGetMinY(rect));
CGContextScaleCTM(context, ovalWidth, ovalHeight);
CGFloat fw = CGRectGetWidth(rect) / ovalWidth;
CGFloat fh = CGRectGetHeight(rect) / ovalHeight;
CGContextMoveToPoint(context, fw, fh/2);
CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1);
CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1);
CGContextAddArcToPoint(context, 0, 0, fw/2, 0, 1);
CGContextAddArcToPoint(context, fw, 0, fw, fh/2, 1);
CGContextClosePath(context);
CGContextRestoreGState(context);
}
@end
================================================
FILE: main.m
================================================
//
// main.m
// OCR
//
// Created by Robert Carlsen on 04.09.2009.
// Copyright recv'd productions 2009. All rights reserved.
//
#import <UIKit/UIKit.h>
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
================================================
FILE: readme.txt
================================================
Pocket OCR
Tesseract OCR for iPhone
Robert Carlsen | robertcarlsen.net
This project is a demonstration of implementing the Tesseract OCR engine on the iPhone platform. It works best with the iPhone 3GS and it's autofocus lens. External lenses for older iPhones may be necessary for optimal image capture.
To build the tesseract library, download the source code and compile apropriately for the iPhone (arm processor). Add the library to the XCode project and build.
The Tesseract source code is available at:
http://code.google.com/p/tesseract-ocr/
A build script and instructions are available at:
http://robertcarlsen.net/2009/07/15/cross-compiling-for-iphone-dev-884
File issues on github:
https://github.com/rcarlsen/Pocket-OCR/issues
Enjoy!
-Robert
---
Released 11.1.2010
================================================
FILE: tessdata/Makefile.am
================================================
datadir = @datadir@/tessdata
data_DATA = confsets \
fra.DangAmbigs fra.freq-dawg fra.inttemp fra.normproto \
fra.pffmtable fra.user-words fra.word-dawg fra.unicharset \
ita.DangAmbigs ita.freq-dawg ita.inttemp ita.normproto \
ita.pffmtable ita.user-words ita.word-dawg ita.unicharset \
deu.DangAmbigs deu.freq-dawg deu.inttemp deu.normproto \
deu.pffmtable deu.user-words deu.word-dawg deu.unicharset \
spa.DangAmbigs spa.freq-dawg spa.inttemp spa.normproto \
spa.pffmtable spa.user-words spa.word-dawg spa.unicharset \
nld.DangAmbigs nld.freq-dawg nld.inttemp nld.normproto \
nld.pffmtable nld.user-words nld.word-dawg nld.unicharset \
eng.DangAmbigs eng.freq-dawg eng.inttemp eng.normproto \
eng.pffmtable eng.user-words eng.word-dawg eng.unicharset
SUBDIRS = configs tessconfigs
EXTRA_DIST = confsets makedummies
eng.DangAmbigs eng.freq-dawg eng.inttemp eng.normproto eng.pffmtable eng.user-words eng.word-dawg eng.unicharset : makedummies
$(top_srcdir)/tessdata/makedummies eng
fra.DangAmbigs fra.freq-dawg fra.inttemp fra.normproto fra.pffmtable fra.user-words fra.word-dawg fra.unicharset : makedummies
$(top_srcdir)/tessdata/makedummies fra
ita.DangAmbigs ita.freq-dawg ita.inttemp ita.normproto ita.pffmtable ita.user-words ita.word-dawg ita.unicharset : makedummies
$(top_srcdir)/tessdata/makedummies ita
deu.DangAmbigs deu.freq-dawg deu.inttemp deu.normproto deu.pffmtable deu.user-words deu.word-dawg deu.unicharset : makedummies
$(top_srcdir)/tessdata/makedummies deu
spa.DangAmbigs spa.freq-dawg spa.inttemp spa.normproto spa.pffmtable spa.user-words spa.word-dawg spa.unicharset : makedummies
$(top_srcdir)/tessdata/makedummies spa
nld.DangAmbigs nld.freq-dawg nld.inttemp nld.normproto nld.pffmtable nld.user-words nld.word-dawg nld.unicharset : makedummies
$(top_srcdir)/tessdata/makedummies nld
================================================
FILE: tessdata/Makefile.in
================================================
# Makefile.in generated by automake 1.10.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = tessdata
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config_auto.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-dvi-recursive install-exec-recursive \
install-html-recursive install-info-recursive \
install-pdf-recursive install-ps-recursive install-recursive \
installcheck-recursive installdirs-recursive pdf-recursive \
ps-recursive uninstall-recursive
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
am__installdirs = "$(DESTDIR)$(datadir)"
dataDATA_INSTALL = $(INSTALL_DATA)
DATA = $(data_DATA)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTIFF_CFLAGS = @LIBTIFF_CFLAGS@
LIBTIFF_LIBS = @LIBTIFF_LIBS@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_DATE = @PACKAGE_DATE@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PACKAGE_YEAR = @PACKAGE_YEAR@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@/tessdata
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
data_DATA = confsets \
fra.DangAmbigs fra.freq-dawg fra.inttemp fra.normproto \
fra.pffmtable fra.user-words fra.word-dawg fra.unicharset \
ita.DangAmbigs ita.freq-dawg ita.inttemp ita.normproto \
ita.pffmtable ita.user-words ita.word-dawg ita.unicharset \
deu.DangAmbigs deu.freq-dawg deu.inttemp deu.normproto \
deu.pffmtable deu.user-words deu.word-dawg deu.unicharset \
spa.DangAmbigs spa.freq-dawg spa.inttemp spa.normproto \
spa.pffmtable spa.user-words spa.word-dawg spa.unicharset \
nld.DangAmbigs nld.freq-dawg nld.inttemp nld.normproto \
nld.pffmtable nld.user-words nld.word-dawg nld.unicharset \
eng.DangAmbigs eng.freq-dawg eng.inttemp eng.normproto \
eng.pffmtable eng.user-words eng.word-dawg eng.unicharset
SUBDIRS = configs tessconfigs
EXTRA_DIST = confsets makedummies
all: all-recursive
.SUFFIXES:
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tessdata/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu tessdata/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
install-dataDATA: $(data_DATA)
@$(NORMAL_INSTALL)
test -z "$(datadir)" || $(MKDIR_P) "$(DESTDIR)$(datadir)"
@list='$(data_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(dataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(datadir)/$$f'"; \
$(dataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(datadir)/$$f"; \
done
uninstall-dataDATA:
@$(NORMAL_UNINSTALL)
@list='$(data_DATA)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(datadir)/$$f'"; \
rm -f "$(DESTDIR)$(datadir)/$$f"; \
done
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
distdir=`$(am__cd) $(distdir) && pwd`; \
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$top_distdir" \
distdir="$$distdir/$$subdir" \
am__remove_distdir=: \
am__skip_length_check=: \
distdir) \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-recursive
all-am: Makefile $(DATA)
installdirs: installdirs-recursive
installdirs-am:
for dir in "$(DESTDIR)$(datadir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive
clean-am: clean-generic mostlyclean-am
distclean: distclean-recursive
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
info: info-recursive
info-am:
install-data-am: install-dataDATA
install-dvi: install-dvi-recursive
install-exec-am:
install-html: install-html-recursive
install-info: install-info-recursive
install-man:
install-pdf: install-pdf-recursive
install-ps: install-ps-recursive
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am: uninstall-dataDATA
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
install-strip
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
all all-am check check-am clean clean-generic ctags \
ctags-recursive distclean distclean-generic distclean-tags \
distdir dvi dvi-am html html-am info info-am install \
install-am install-data install-data-am install-dataDATA \
install-dvi install-dvi-am install-exec install-exec-am \
install-html install-html-am install-info install-info-am \
install-man install-pdf install-pdf-am install-ps \
install-ps-am install-strip installcheck installcheck-am \
installdirs installdirs-am maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
uninstall-dataDATA
eng.DangAmbigs eng.freq-dawg eng.inttemp eng.normproto eng.pffmtable eng.user-words eng.word-dawg eng.unicharset : makedummies
$(top_srcdir)/tessdata/makedummies eng
fra.DangAmbigs fra.freq-dawg fra.inttemp fra.normproto fra.pffmtable fra.user-words fra.word-dawg fra.unicharset : makedummies
$(top_srcdir)/tessdata/makedummies fra
ita.DangAmbigs ita.freq-dawg ita.inttemp ita.normproto ita.pffmtable ita.user-words ita.word-dawg ita.unicharset : makedummies
$(top_srcdir)/tessdata/makedummies ita
deu.DangAmbigs deu.freq-dawg deu.inttemp deu.normproto deu.pffmtable deu.user-words deu.word-dawg deu.unicharset : makedummies
$(top_srcdir)/tessdata/makedummies deu
spa.DangAmbigs spa.freq-dawg spa.inttemp spa.normproto spa.pffmtable spa.user-words spa.word-dawg spa.unicharset : makedummies
$(top_srcdir)/tessdata/makedummies spa
nld.DangAmbigs nld.freq-dawg nld.inttemp nld.normproto nld.pffmtable nld.user-words nld.word-dawg nld.unicharset : makedummies
$(top_srcdir)/tessdata/makedummies nld
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
================================================
FILE: tessdata/configs/Makefile.am
================================================
datadir = @datadir@/tessdata/configs
data_DATA = inter makebox box.train unlv api_config kannada box.train.stderr
EXTRA_DIST = inter makebox box.train unlv api_config kannada box.train.stderr
================================================
FILE: tessdata/configs/Makefile.in
================================================
# Makefile.in generated by automake 1.10.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = tessdata/configs
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config_auto.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
am__installdirs = "$(DESTDIR)$(datadir)"
dataDATA_INSTALL = $(INSTALL_DATA)
DATA = $(data_DATA)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTIFF_CFLAGS = @LIBTIFF_CFLAGS@
LIBTIFF_LIBS = @LIBTIFF_LIBS@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_DATE = @PACKAGE_DATE@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PACKAGE_YEAR = @PACKAGE_YEAR@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@/tessdata/configs
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
data_DATA = inter makebox box.train unlv api_config kannada box.train.stderr
EXTRA_DIST = inter makebox box.train unlv api_config kannada box.train.stderr
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tessdata/configs/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu tessdata/configs/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
install-dataDATA: $(data_DATA)
@$(NORMAL_INSTALL)
test -z "$(datadir)" || $(MKDIR_P) "$(DESTDIR)$(datadir)"
@list='$(data_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(dataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(datadir)/$$f'"; \
$(dataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(datadir)/$$f"; \
done
uninstall-dataDATA:
@$(NORMAL_UNINSTALL)
@list='$(data_DATA)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(datadir)/$$f'"; \
rm -f "$(DESTDIR)$(datadir)/$$f"; \
done
tags: TAGS
TAGS:
ctags: CTAGS
CTAGS:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(DATA)
installdirs:
for dir in "$(DESTDIR)$(datadir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am: install-dataDATA
install-dvi: install-dvi-am
install-exec-am:
install-html: install-html-am
install-info: install-info-am
install-man:
install-pdf: install-pdf-am
install-ps: install-ps-am
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-dataDATA
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic distclean \
distclean-generic distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am \
install-dataDATA install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-pdf install-pdf-am \
install-ps install-ps-am install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
pdf-am ps ps-am uninstall uninstall-am uninstall-dataDATA
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
================================================
FILE: tessdata/configs/api_config
================================================
tessedit_zero_rejection T
================================================
FILE: tessdata/configs/box.train
================================================
file_type .bl
tessedit_use_nn F
textord_fast_pitch_test T
tessedit_single_match 0
newcp_ratings_on 0
tessedit_zero_rejection T
tessedit_minimal_rejection F
tessedit_write_rep_codes F
ignore_weird_blocks F
tessedit_tweaking_tess_vars T
il1_adaption_test 1
edges_children_fix T
edges_childarea 0.65
edges_boxarea 0.9
tessedit_resegment_from_boxes T
tessedit_train_from_boxes T
textord_repeat_extraction F
textord_no_rejects T
debug_file tesseract.log
================================================
FILE: tessdata/configs/box.train.stderr
================================================
file_type .bl
tessedit_use_nn F
textord_fast_pitch_test T
tessedit_single_match 0
newcp_ratings_on 0
tessedit_zero_rejection T
tessedit_minimal_rejection F
tessedit_write_rep_codes F
ignore_weird_blocks F
tessedit_tweaking_tess_vars T
il1_adaption_test 1
edges_children_fix T
edges_childarea 0.65
edges_boxarea 0.9
tessedit_resegment_from_boxes T
tessedit_train_from_boxes T
textord_repeat_extraction F
textord_no_rejects T
================================================
FILE: tessdata/configs/inter
================================================
interactive_mode T
edit_variables T
tessedit_draw_words T
tessedit_draw_outwords T
================================================
FILE: tessdata/configs/kannada
================================================
textord_skewsmooth_offset 8
textord_skewsmooth_offset2 8
textord_merge_desc 0.5
textord_no_rejects 1
================================================
FILE: tessdata/configs/makebox
================================================
tessedit_create_boxfile 1
================================================
FILE: tessdata/configs/unlv
================================================
tessedit_write_unlv 1
tessedit_write_output 0
tessedit_write_txt_map 0
================================================
FILE: tessdata/confsets
================================================
ao
ft
ce
================================================
FILE: tessdata/deu.DangAmbigs
================================================
================================================
FILE: tessdata/deu.freq-dawg
================================================
================================================
FILE: tessdata/deu.inttemp
================================================
================================================
FILE: tessdata/deu.normproto
================================================
================================================
FILE: tessdata/deu.pffmtable
================================================
================================================
FILE: tessdata/deu.unicharset
================================================
================================================
FILE: tessdata/deu.user-words
================================================
================================================
FILE: tessdata/deu.word-dawg
================================================
================================================
FILE: tessdata/eng.DangAmbigs
================================================
1 m 2 r n
2 r n 1 m
1 m 2 i n
2 i n 1 m
1 d 2 c l
2 c l 1 d
2 n n 2 r m
2 r m 2 n n
1 n 2 r i
2 r i 1 n
2 l i 1 h
2 l r 1 h
2 i i 1 u
2 i i 1 n
2 n i 1 m
3 i i i 1 m
2 l l 1 H
3 I - I 1 H
2 v v 1 w
2 V V 1 W
1 t 1 f
1 f 1 t
1 a 1 o
1 o 1 a
1 e 1 c
1 c 1 e
2 r r 1 n
1 E 2 f i
2 l < 1 k
2 l d 2 k i
2 l x 1 h
2 x n 1 m
2 u x 2 i n
1 r 1 t
1 d 2 t l
2 d i 2 t h
2 u r 2 i n
2 u n 2 i m
1 u 1 a
================================================
FILE: tessdata/eng.normproto
================================================
4
linear essential -0.250000 0.750000
linear essential 0.000000 1.000000
linear essential 0.000000 1.000000
linear essential 0.000000 1.000000
t 2
significant elliptical 8610
0.299435 0.184164 0.200277 0.096446
0.000175 0.000302 0.000108 0.000266
significant elliptical 1211
0.302144 0.253395 0.202977 0.142957
0.000170 0.000172 0.000113 0.000282
h 4
significant elliptical 2370
0.306469 0.319058 0.223216 0.162562
0.000289 0.000279 0.000154 0.000398
significant elliptical 768
0.291382 0.279694 0.206041 0.160267
0.000106 0.000100 0.000120 0.000147
significant elliptical 661
0.294002 0.268437 0.191557 0.141566
0.000100 0.000100 0.000112 0.000100
significant elliptical 105
0.287551 0.304908 0.208618 0.133593
0.000100 0.000119 0.000100 0.000100
r 7
significant elliptical 370
0.252681 0.237623 0.185248 0.139956
0.000137 0.000184 0.000102 0.000100
significant elliptical 430
0.278177 0.208926 0.172354 0.148990
0.000102 0.000100 0.000100 0.000100
significant elliptical 235
0.255656 0.274913 0.185362 0.197751
0.000115 0.000100 0.000100 0.000100
significant elliptical 332
0.248713 0.254659 0.178532 0.176183
0.000100 0.000117 0.000100 0.000105
significant elliptical 383
0.271088 0.153671 0.172946 0.088653
0.000100 0.000115 0.000100 0.000100
significant elliptical 495
0.297427 0.187667 0.158936 0.154356
0.000121 0.000100 0.000123 0.000132
significant elliptical 270
0.302829 0.158276 0.151350 0.127814
0.000100 0.000100 0.000100 0.000100
o 1
significant elliptical 9440
0.249447 0.243556 0.159045 0.152329
0.000123 0.000229 0.000101 0.000276
u 1
significant elliptical 3409
0.247496 0.257385 0.165278 0.158632
0.000193 0.000390 0.000117 0.000281
g 6
significant elliptical 264
0.174040 0.367248 0.231986 0.181129
0.000101 0.000154 0.000100 0.000254
significant elliptical 121
0.145169 0.348122 0.245504 0.173756
0.000109 0.000218 0.000100 0.000134
significant elliptical 295
0.147021 0.349669 0.215877 0.131475
0.000117 0.000151 0.000100 0.000133
significant elliptical 363
0.149628 0.365700 0.223867 0.154998
0.000168 0.000110 0.000101 0.000115
significant elliptical 1163
0.165745 0.314322 0.214687 0.150981
0.000141 0.000385 0.000171 0.000304
significant elliptical 141
0.133941 0.400174 0.239066 0.145788
0.000123 0.000100 0.000100 0.000119
N 3
significant elliptical 194
0.372916 0.429994 0.228078 0.226703
0.000353 0.000291 0.000182 0.000268
significant elliptical 221
0.345566 0.389373 0.214482 0.195290
0.000181 0.000287 0.000132 0.000179
significant elliptical 225
0.328708 0.335850 0.202029 0.188135
0.000164 0.000245 0.000180 0.000209
e 3
significant elliptical 12197
0.247356 0.243955 0.157609 0.135625
0.000140 0.000229 0.000101 0.000212
significant elliptical 1696
0.250370 0.296180 0.154856 0.155235
0.000159 0.000267 0.000110 0.000288
significant elliptical 447
0.224680 0.260822 0.162254 0.190152
0.000106 0.000118 0.000107 0.000100
w 4
significant elliptical 316
0.254699 0.375592 0.162218 0.227753
0.000220 0.000271 0.000100 0.000279
significant elliptical 280
0.282811 0.328077 0.159947 0.217574
0.000244 0.000201 0.000118 0.000225
significant elliptical 516
0.287197 0.297470 0.162288 0.202954
0.000143 0.000170 0.000144 0.000230
significant elliptical 493
0.272697 0.311736 0.146631 0.183159
0.000131 0.000232 0.000100 0.000138
S 6
significant elliptical 49
0.345498 0.396425 0.228345 0.165566
0.000100 0.000100 0.000100 0.000100
significant elliptical 136
0.361266 0.409660 0.240134 0.181895
0.000115 0.000173 0.000100 0.000129
significant elliptical 214
0.325209 0.378737 0.223069 0.182323
0.000137 0.000122 0.000125 0.000160
significant elliptical 85
0.371446 0.364198 0.256071 0.171205
0.000100 0.000100 0.000100 0.000132
significant elliptical 735
0.325255 0.332417 0.213602 0.157740
0.000176 0.000256 0.000199 0.000252
significant elliptical 176
0.332164 0.255031 0.223884 0.123973
0.000114 0.000188 0.000100 0.000130
F 4
significant elliptical 103
0.423271 0.363987 0.235636 0.189107
0.000175 0.000377 0.000113 0.000214
significant elliptical 113
0.369277 0.335304 0.217047 0.186483
0.000390 0.000402 0.000125 0.000241
significant elliptical 143
0.388568 0.321729 0.219516 0.155372
0.000201 0.000200 0.000110 0.000135
significant elliptical 217
0.392000 0.251433 0.200758 0.153752
0.000286 0.000223 0.000194 0.000305
i 5
significant elliptical 356
0.326672 0.208622 0.223728 0.080844
0.000100 0.000100 0.000100 0.000108
significant elliptical 234
0.317264 0.190190 0.231090 0.099605
0.000105 0.000100 0.000112 0.000114
significant elliptical 5771
0.338480 0.171874 0.213238 0.065962
0.000403 0.000265 0.000196 0.000181
significant elliptical 500
0.280936 0.248295 0.235692 0.115160
0.000142 0.000100 0.000145 0.000112
significant elliptical 486
0.296189 0.265423 0.231922 0.140003
0.000117 0.000100 0.000103 0.000135
n 3
significant elliptical 634
0.237099 0.294436 0.177506 0.195898
0.000104 0.000100 0.000100 0.000126
significant elliptical 307
0.230110 0.245470 0.167303 0.140916
0.000100 0.000100 0.000100 0.000116
significant elliptical 293
0.259299 0.272558 0.158367 0.146043
0.000108 0.000100 0.000100 0.000100
d 3
significant elliptical 1773
0.314511 0.333182 0.221473 0.174463
0.000271 0.000299 0.000166 0.000360
significant elliptical 259
0.287463 0.273171 0.197717 0.169064
0.000100 0.000100 0.000100 0.000100
significant elliptical 407
0.304750 0.293347 0.211861 0.178309
0.000111 0.000180 0.000100 0.000102
f 7
significant elliptical 134
0.288501 0.236666 0.278269 0.128410
0.000100 0.000117 0.000100 0.000146
significant elliptical 134
0.340366 0.268187 0.281541 0.153156
0.000114 0.000108 0.000111 0.000175
significant elliptical 412
0.274232 0.287445 0.307079 0.184270
0.000259 0.000157 0.000256 0.000323
significant elliptical 201
0.350857 0.311729 0.241736 0.153722
0.000158 0.000220 0.000143 0.000364
significant elliptical 70
0.344230 0.344292 0.238106 0.197935
0.000131 0.000124 0.000120 0.000139
significant elliptical 935
0.368457 0.196126 0.215046 0.102575
0.000209 0.000317 0.000295 0.000318
significant elliptical 290
0.375742 0.244231 0.238671 0.124777
0.000284 0.000167 0.000112 0.000152
a 1
significant elliptical 9536
0.240516 0.258173 0.164388 0.147620
0.000146 0.000433 0.000108 0.000387
m 1
significant elliptical 3040
0.246481 0.381567 0.167138 0.234080
0.000193 0.000589 0.000122 0.000389
l 4
significant elliptical 2014
0.330579 0.156485 0.213800 0.066361
0.000122 0.000157 0.000170 0.000186
significant elliptical 1153
0.349382 0.181020 0.236686 0.073104
0.000210 0.000144 0.000100 0.000155
significant elliptical 264
0.321312 0.184586 0.230401 0.097251
0.000100 0.000138 0.000154 0.000127
significant elliptical 641
0.300769 0.255178 0.253408 0.132180
0.000152 0.000201 0.000125 0.000382
y 5
significant elliptical 434
0.172164 0.333322 0.227291 0.169859
0.000481 0.000251 0.000274 0.000305
significant elliptical 56
0.207561 0.362032 0.251222 0.218853
0.000156 0.000130 0.000146 0.000116
significant elliptical 686
0.208353 0.246933 0.215863 0.136459
0.000160 0.000154 0.000127 0.000231
significant elliptical 223
0.221578 0.221637 0.196472 0.126159
0.000219 0.000100 0.000136 0.000158
significant elliptical 767
0.195547 0.283833 0.223610 0.150127
0.000257 0.000203 0.000161 0.000183
s 4
significant elliptical 802
0.249032 0.290493 0.158683 0.147099
0.000117 0.000112 0.000100 0.000188
significant elliptical 199
0.248646 0.256870 0.170179 0.177279
0.000137 0.000269 0.000107 0.000100
significant elliptical 1025
0.250281 0.202114 0.164019 0.106339
0.000114 0.000129 0.000100 0.000132
significant elliptical 287
0.236911 0.228487 0.172795 0.120707
0.000100 0.000100 0.000100 0.000100
¢ 5
significant elliptical 179
0.248059 0.273152 0.196994 0.128750
0.000173 0.000332 0.000336 0.000249
significant elliptical 36
0.263512 0.177072 0.179446 0.114134
0.000362 0.000239 0.000309 0.000125
significant elliptical 28
0.373267 0.274081 0.207873 0.144128
0.000227 0.000152 0.000234 0.000220
significant elliptical 10
0.347706 0.280916 0.176378 0.123427
0.000253 0.000200 0.000100 0.000100
significant elliptical 34
0.340423 0.219668 0.170886 0.114953
0.000256 0.000337 0.000277 0.000169
¥ 2
significant elliptical 197
0.371851 0.349770 0.216614 0.167153
0.000655 0.000804 0.000220 0.000466
significant elliptical 91
0.381075 0.253022 0.209125 0.148389
0.000437 0.000177 0.000266 0.000338
q 2
significant elliptical 254
0.188991 0.294598 0.208909 0.149868
0.000381 0.000509 0.000234 0.000239
significant elliptical 34
0.179094 0.370109 0.231123 0.189550
0.000100 0.000139 0.000111 0.000354
V 2
significant elliptical 124
0.379595 0.262776 0.195243 0.163874
0.000438 0.000263 0.000109 0.000203
significant elliptical 158
0.435941 0.310063 0.207916 0.184003
0.000638 0.000333 0.000210 0.000189
L 2
significant elliptical 376
0.286288 0.287162 0.238861 0.166300
0.000309 0.000460 0.000241 0.000348
significant elliptical 232
0.259265 0.207656 0.216676 0.125588
0.000186 0.000167 0.000145 0.000320
U 2
significant elliptical 163
0.372090 0.377436 0.233523 0.205798
0.000502 0.000508 0.000168 0.000268
significant elliptical 125
0.329946 0.311169 0.208336 0.186348
0.000270 0.000225 0.000136 0.000155
v 3
significant elliptical 921
0.297052 0.199373 0.149484 0.135523
0.000216 0.000187 0.000125 0.000226
significant elliptical 254
0.264111 0.248093 0.156969 0.144730
0.000167 0.000177 0.000100 0.000201
significant elliptical 165
0.315996 0.253227 0.159152 0.183831
0.000170 0.000201 0.000100 0.000489
E 4
significant elliptical 354
0.331066 0.398682 0.226139 0.176520
0.000192 0.000272 0.000135 0.000303
significant elliptical 149
0.364265 0.443744 0.248242 0.189161
0.000186 0.000516 0.000150 0.000176
significant elliptical 120
0.341846 0.301588 0.230205 0.146241
0.000179 0.000100 0.00
gitextract_9uolaib_/
├── .gitignore
├── Classes/
│ ├── OCRAppDelegate.h
│ ├── OCRAppDelegate.m
│ ├── OCRDisplayViewController.h
│ ├── OCRDisplayViewController.mm
│ ├── ZoomableImage.h
│ └── ZoomableImage.m
├── MainWindow.xib
├── OCR-Info.plist
├── OCR.xcodeproj/
│ ├── project.pbxproj
│ └── rcarlsen.perspectivev3
├── OCRDisplayViewController.xib
├── OCR_Prefix.pch
├── UIImage-categories/
│ ├── UIImage+Alpha.h
│ ├── UIImage+Alpha.m
│ ├── UIImage+Resize.h
│ ├── UIImage+Resize.m
│ ├── UIImage+RoundedCorner.h
│ └── UIImage+RoundedCorner.m
├── dev/
│ └── TessIcon.pxm
├── main.m
├── readme.txt
├── tessdata/
│ ├── Makefile.am
│ ├── Makefile.in
│ ├── configs/
│ │ ├── Makefile.am
│ │ ├── Makefile.in
│ │ ├── api_config
│ │ ├── box.train
│ │ ├── box.train.stderr
│ │ ├── inter
│ │ ├── kannada
│ │ ├── makebox
│ │ └── unlv
│ ├── confsets
│ ├── deu.DangAmbigs
│ ├── deu.freq-dawg
│ ├── deu.inttemp
│ ├── deu.normproto
│ ├── deu.pffmtable
│ ├── deu.unicharset
│ ├── deu.user-words
│ ├── deu.word-dawg
│ ├── eng.DangAmbigs
│ ├── eng.freq-dawg
│ ├── eng.inttemp
│ ├── eng.normproto
│ ├── eng.pffmtable
│ ├── eng.unicharset
│ ├── eng.user-words
│ ├── eng.word-dawg
│ ├── fra.DangAmbigs
│ ├── fra.freq-dawg
│ ├── fra.inttemp
│ ├── fra.normproto
│ ├── fra.pffmtable
│ ├── fra.unicharset
│ ├── fra.user-words
│ ├── fra.word-dawg
│ ├── ita.DangAmbigs
│ ├── ita.freq-dawg
│ ├── ita.inttemp
│ ├── ita.normproto
│ ├── ita.pffmtable
│ ├── ita.unicharset
│ ├── ita.user-words
│ ├── ita.word-dawg
│ ├── makedummies
│ ├── nld.DangAmbigs
│ ├── nld.freq-dawg
│ ├── nld.inttemp
│ ├── nld.normproto
│ ├── nld.pffmtable
│ ├── nld.unicharset
│ ├── nld.user-words
│ ├── nld.word-dawg
│ ├── spa.DangAmbigs
│ ├── spa.freq-dawg
│ ├── spa.inttemp
│ ├── spa.normproto
│ ├── spa.pffmtable
│ ├── spa.unicharset
│ ├── spa.user-words
│ ├── spa.word-dawg
│ └── tessconfigs/
│ ├── Makefile.am
│ ├── Makefile.in
│ ├── batch
│ ├── batch.nochop
│ ├── matdemo
│ ├── msdemo
│ ├── nobatch
│ └── segdemo
└── tessdata-svn/
├── eng.DangAmbigs
├── eng.freq-dawg
├── eng.inttemp
├── eng.normproto
├── eng.pffmtable
├── eng.traineddata
├── eng.unicharset
├── eng.user-words
└── eng.word-dawg
SYMBOL INDEX (1 symbols across 1 files)
FILE: Classes/ZoomableImage.h
function interface (line 25) | interface ZoomableImage : UIImageView {
Condensed preview — 100 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (325K chars).
[
{
"path": ".gitignore",
"chars": 160,
"preview": "# xcode noise\nbuild/*\n*.pbxuser\n*.mode1v3\n*.mode2v3\n#Info.plist\n#*.xcodeproj\n\n# old skool\n.svn\n\n# osx noise\n.DS_Store\npr"
},
{
"path": "Classes/OCRAppDelegate.h",
"chars": 1112,
"preview": "//\n// OCRAppDelegate.h\n// OCR\n//\n// Created by Robert Carlsen on 04.09.2009.\n//\n// Copyright (C) 2009, Robert Carl"
},
{
"path": "Classes/OCRAppDelegate.m",
"chars": 1417,
"preview": "//\n// OCRAppDelegate.m\n// OCR\n//\n// Created by Robert Carlsen on 04.09.2009.\n//\n// Copyright (C) 2009, Robert Carl"
},
{
"path": "Classes/OCRDisplayViewController.h",
"chars": 2560,
"preview": "//\n// OCRDisplayViewController.h\n// OCR\n//\n// Created by Robert Carlsen on 03.12.2009.\n//\n// Copyright (C) 2"
},
{
"path": "Classes/OCRDisplayViewController.mm",
"chars": 14562,
"preview": "//\n// OCRDisplayViewController.m\n// OCR\n//\n// Created by Robert Carlsen on 03.12.2009.\n//\n// Copyright (C) 2009, R"
},
{
"path": "Classes/ZoomableImage.h",
"chars": 1024,
"preview": "//\n// ZoomableImage.h\n// OCR\n//\n// Created by Robert Carlsen on 06.12.2009.\n//\n// Copyright (C) 2009, Robert Carls"
},
{
"path": "Classes/ZoomableImage.m",
"chars": 3604,
"preview": "//\n// ZoomableImage.m\n// OCR\n//\n// Created by Robert Carlsen on 06.12.2009.\n//\n// Copyright (C) 2009, Robert Carls"
},
{
"path": "MainWindow.xib",
"chars": 7942,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<archive type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"7.10\">\n\t<data"
},
{
"path": "OCR-Info.plist",
"chars": 923,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "OCR.xcodeproj/project.pbxproj",
"chars": 23185,
"preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 45;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
},
{
"path": "OCR.xcodeproj/rcarlsen.perspectivev3",
"chars": 44539,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "OCRDisplayViewController.xib",
"chars": 30688,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<archive type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"7.10\">\n\t<data"
},
{
"path": "OCR_Prefix.pch",
"chars": 175,
"preview": "//\n// Prefix header for all source files of the 'OCR' target in the 'OCR' project\n//\n\n#ifdef __OBJC__\n #import <Found"
},
{
"path": "UIImage-categories/UIImage+Alpha.h",
"chars": 365,
"preview": "// UIImage+Alpha.h\n// Created by Trevor Harmon on 9/20/09.\n// Free for personal or commercial use, with or without modif"
},
{
"path": "UIImage-categories/UIImage+Alpha.m",
"chars": 5765,
"preview": "// UIImage+Alpha.m\n// Created by Trevor Harmon on 9/20/09.\n// Free for personal or commercial use, with or without modif"
},
{
"path": "UIImage-categories/UIImage+Resize.h",
"chars": 824,
"preview": "// UIImage+Resize.h\n// Created by Trevor Harmon on 8/5/09.\n// Free for personal or commercial use, with or without modif"
},
{
"path": "UIImage-categories/UIImage+Resize.m",
"chars": 8322,
"preview": "// UIImage+Resize.m\n// Created by Trevor Harmon on 8/5/09.\n// Free for personal or commercial use, with or without modif"
},
{
"path": "UIImage-categories/UIImage+RoundedCorner.h",
"chars": 369,
"preview": "// UIImage+RoundedCorner.h\n// Created by Trevor Harmon on 9/20/09.\n// Free for personal or commercial use, with or witho"
},
{
"path": "UIImage-categories/UIImage+RoundedCorner.m",
"chars": 3565,
"preview": "// UIImage+RoundedCorner.m\n// Created by Trevor Harmon on 9/20/09.\n// Free for personal or commercial use, with or witho"
},
{
"path": "main.m",
"chars": 363,
"preview": "//\n// main.m\n// OCR\n//\n// Created by Robert Carlsen on 04.09.2009.\n// Copyright recv'd productions 2009. All rights "
},
{
"path": "readme.txt",
"chars": 786,
"preview": "Pocket OCR\nTesseract OCR for iPhone\n\nRobert Carlsen | robertcarlsen.net\n\nThis project is a demonstration of implementing"
},
{
"path": "tessdata/Makefile.am",
"chars": 1965,
"preview": "datadir = @datadir@/tessdata\ndata_DATA = confsets \\\n fra.DangAmbigs fra.freq-dawg fra.inttemp fra.normproto \\"
},
{
"path": "tessdata/Makefile.in",
"chars": 17231,
"preview": "# Makefile.in generated by automake 1.10.1 from Makefile.am.\n# @configure_input@\n\n# Copyright (C) 1994, 1995, 1996, 1997"
},
{
"path": "tessdata/configs/Makefile.am",
"chars": 192,
"preview": "datadir = @datadir@/tessdata/configs\ndata_DATA = inter makebox box.train unlv api_config kannada box.train.stderr\nEXTRA_"
},
{
"path": "tessdata/configs/Makefile.in",
"chars": 9840,
"preview": "# Makefile.in generated by automake 1.10.1 from Makefile.am.\n# @configure_input@\n\n# Copyright (C) 1994, 1995, 1996, 1997"
},
{
"path": "tessdata/configs/api_config",
"chars": 26,
"preview": "tessedit_zero_rejection T\n"
},
{
"path": "tessdata/configs/box.train",
"chars": 470,
"preview": "file_type .bl\ntessedit_use_nn\t\t\t\tF\ntextord_fast_pitch_test\tT\ntessedit_single_match\t0\nnewcp_ratings_on "
},
{
"path": "tessdata/configs/box.train.stderr",
"chars": 445,
"preview": "file_type .bl\ntessedit_use_nn\t\t\t\tF\ntextord_fast_pitch_test\tT\ntessedit_single_match\t0\nnewcp_ratings_on "
},
{
"path": "tessdata/configs/inter",
"chars": 93,
"preview": "interactive_mode\t\t\t\tT\nedit_variables\t\t\t\t\tT\ntessedit_draw_words\t\t\tT\ntessedit_draw_outwords\t\tT\n"
},
{
"path": "tessdata/configs/kannada",
"chars": 101,
"preview": "textord_skewsmooth_offset 8\ntextord_skewsmooth_offset2 8\ntextord_merge_desc 0.5\ntextord_no_rejects 1\n"
},
{
"path": "tessdata/configs/makebox",
"chars": 26,
"preview": "tessedit_create_boxfile 1\n"
},
{
"path": "tessdata/configs/unlv",
"chars": 71,
"preview": "tessedit_write_unlv 1\ntessedit_write_output 0\ntessedit_write_txt_map 0\n"
},
{
"path": "tessdata/confsets",
"chars": 9,
"preview": "ao\nft\nce\n"
},
{
"path": "tessdata/deu.DangAmbigs",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/deu.freq-dawg",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/deu.inttemp",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/deu.normproto",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/deu.pffmtable",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/deu.unicharset",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/deu.user-words",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/deu.word-dawg",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/eng.DangAmbigs",
"chars": 392,
"preview": "1\tm\t2\tr n\n2\tr n\t1\tm\n1\tm\t2\ti n\n2\ti n\t1\tm\n1\td\t2\tc l\n2\tc l\t1\td\n2\tn n\t2\tr m\n2\tr m\t2\tn n\n1\tn\t2\tr i\n2\tr i\t1\tn\n2\tl i\t1\th\n2\tl r\t"
},
{
"path": "tessdata/eng.normproto",
"chars": 39837,
"preview": "4\nlinear essential -0.250000 0.750000\nlinear essential 0.000000 1.000000\nlinear essential 0.0"
},
{
"path": "tessdata/eng.pffmtable",
"chars": 565,
"preview": "t 66\nh 77\nr 51\no 59\nu 81\ng 100\nN 79\ne 65\nw 94\nS 90\nF 79\ni 68\nn 74\nd 84\nf 71\na 76\nm 111\nl 58\ny 83\ns 82\n¢ 84\n¥ 88\nq 87\nV 7"
},
{
"path": "tessdata/eng.unicharset",
"chars": 455,
"preview": "112\nNULL 0\nt 3\nh 3\nr 3\no 3\nu 3\ng 3\nN 5\ne 3\nw 3\nS 5\nF 5\ni 3\nn 3\nd 3\nf 3\na 3\nm 3\nl 3\ny 3\ns 3\n¢ 0\n¥ 0\nq 3\nV 5\nL 5\nU 5\nv 3\nE"
},
{
"path": "tessdata/eng.user-words",
"chars": 7289,
"preview": "a\nabsurdum\nac\nacres\nactions\nadaption\nadjustments\naerobes\naffairs\nagents\nAlan\nAlbert\nAlberta\nAlfred\nAlice\nAlicia\nalliance"
},
{
"path": "tessdata/fra.DangAmbigs",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/fra.freq-dawg",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/fra.inttemp",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/fra.normproto",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/fra.pffmtable",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/fra.unicharset",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/fra.user-words",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/fra.word-dawg",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/ita.DangAmbigs",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/ita.freq-dawg",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/ita.inttemp",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/ita.normproto",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/ita.pffmtable",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/ita.unicharset",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/ita.user-words",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/ita.word-dawg",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/makedummies",
"chars": 151,
"preview": "#!/bin/sh\nfor f in DangAmbigs freq-dawg inttemp normproto pffmtable unicharset user-words word-dawg\ndo\n\tif [ ! -r $1.$f "
},
{
"path": "tessdata/nld.DangAmbigs",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/nld.freq-dawg",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/nld.inttemp",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/nld.normproto",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/nld.pffmtable",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/nld.unicharset",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/nld.user-words",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/nld.word-dawg",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/spa.DangAmbigs",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/spa.freq-dawg",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/spa.inttemp",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/spa.normproto",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/spa.pffmtable",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/spa.unicharset",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/spa.user-words",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/spa.word-dawg",
"chars": 0,
"preview": ""
},
{
"path": "tessdata/tessconfigs/Makefile.am",
"chars": 166,
"preview": "datadir = @datadir@/tessdata/tessconfigs\ndata_DATA = batch batch.nochop nobatch matdemo segdemo msdemo\nEXTRA_DIST = batc"
},
{
"path": "tessdata/tessconfigs/Makefile.in",
"chars": 9826,
"preview": "# Makefile.in generated by automake 1.10.1 from Makefile.am.\n# @configure_input@\n\n# Copyright (C) 1994, 1995, 1996, 1997"
},
{
"path": "tessdata/tessconfigs/batch",
"chars": 50,
"preview": "# No content needed as all defaults are correct.\n\n"
},
{
"path": "tessdata/tessconfigs/batch.nochop",
"chars": 29,
"preview": "chop_enable 0\nenable_assoc 0\n"
},
{
"path": "tessdata/tessconfigs/matdemo",
"chars": 226,
"preview": "#################################################\n# Adaptive Matcher Using PreAdapted Templates\n########################"
},
{
"path": "tessdata/tessconfigs/msdemo",
"chars": 351,
"preview": "#################################################\n# Adaptive Matcher Using PreAdapted Templates\n########################"
},
{
"path": "tessdata/tessconfigs/nobatch",
"chars": 16,
"preview": "display_text 0\n\n"
},
{
"path": "tessdata/tessconfigs/segdemo",
"chars": 271,
"preview": "#################################################\n# Adaptive Matcher Using PreAdapted Templates\n########################"
},
{
"path": "tessdata-svn/eng.DangAmbigs",
"chars": 392,
"preview": "1\tm\t2\tr n\n2\tr n\t1\tm\n1\tm\t2\ti n\n2\ti n\t1\tm\n1\td\t2\tc l\n2\tc l\t1\td\n2\tn n\t2\tr m\n2\tr m\t2\tn n\n1\tn\t2\tr i\n2\tr i\t1\tn\n2\tl i\t1\th\n2\tl r\t"
},
{
"path": "tessdata-svn/eng.normproto",
"chars": 39837,
"preview": "4\nlinear essential -0.250000 0.750000\nlinear essential 0.000000 1.000000\nlinear essential 0.0"
},
{
"path": "tessdata-svn/eng.pffmtable",
"chars": 565,
"preview": "t 66\nh 77\nr 51\no 59\nu 81\ng 100\nN 79\ne 65\nw 94\nS 90\nF 79\ni 68\nn 74\nd 84\nf 71\na 76\nm 111\nl 58\ny 83\ns 82\n¢ 84\n¥ 88\nq 87\nV 7"
},
{
"path": "tessdata-svn/eng.unicharset",
"chars": 455,
"preview": "112\nNULL 0\nt 3\nh 3\nr 3\no 3\nu 3\ng 3\nN 5\ne 3\nw 3\nS 5\nF 5\ni 3\nn 3\nd 3\nf 3\na 3\nm 3\nl 3\ny 3\ns 3\n¢ 0\n¥ 0\nq 3\nV 5\nL 5\nU 5\nv 3\nE"
},
{
"path": "tessdata-svn/eng.user-words",
"chars": 7289,
"preview": "a\nabsurdum\nac\nacres\nactions\nadaption\nadjustments\naerobes\naffairs\nagents\nAlan\nAlbert\nAlberta\nAlfred\nAlice\nAlicia\nalliance"
}
]
// ... and 8 more files (download for full content)
About this extraction
This page contains the full source code of the rcarlsen/Pocket-OCR GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 100 files (284.1 KB), approximately 107.2k tokens, and a symbol index with 1 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.