Configure OCR
Motivation
OCR enables text recognition for your mobile scanning apps. This means you can add text recognition to your organization’s mobile data capture workflows. As a result, you can seamlessly switch between reading barcodes and text with the touch of a button.
License Key
A dedicated OCR License key and SDK should be used. Please contact us (https://support.scandit.com/hc/en-us/requests/new) for more details.
Implementing OCR
To integrate the OCR into your iOS app, follow the simple steps below:
- Implement the SBSTextRecognitionDelegate protocol to handle the successful text decoding. The API reference of the SBSTextRecognitionDelegate protocol provides more details about what is returned.
Objective-C:
#import <ScanditBarcodeScanner/SBSTextRecognition.h>
- (SBSBarcodePickerState)barcodePicker:(SBSBarcodePicker *)picker didRecognizeText:(SBSRecognizedText *)text {
// This callback is called whenever a text is read
}
Swift:
extension TextRecognitionViewController: SBSTextRecognitionDelegate {
func barcodePicker(_ picker: SBSBarcodePicker, didRecognizeText text: SBSRecognizedText) -> SBSBarcodePickerState {
// This callback is called whenever a text is read
}
}
}
- Create a Scan Settings and Text Recognition Settings
- Set the recognition mode to “Text”
- Specify the format/structure of the text to be scanned: regular expression which matches your text and white list of recognizable characters.
- Set the area in which text is to be recognised
Objective-C:
// Set the text recognition settings
SBSTextRecognitionSettings *textRecognition = [[SBSTextRecognitionSettings alloc] init];
// Set the area in which text is to be recognized.
textRecognition.areaPortrait = CGRectMake(0, 0.45, 1, 0.1);
textRecognition.areaLandscape = CGRectMake(0, 0.45, 1, 0.55)
//Set Regular Expression (i.e: VIN code)
NSError *error = NULL;
textRecognition.regex = [NSRegularExpression regularExpressionWithPattern:@"([A-Z0-9]{17})"
options:NSRegularExpressionCaseInsensitive
error:&error];
// Create the scan settings
SBSScanSettings* settings = [SBSScanSettings defaultSettings];
// Set the text recognition settings
settings.textRecognitionSettings = textRecognition;
// Set the recognize mode to recognize text
settings.recognitionMode = SBSRecognitionModeText;
- Instantiate the barcode picker
// Instantiate the barcode picker by using the settings defined above.
SBSBarcodePicker *picker = [[SBSBarcodePicker alloc] initWithSettings:settings];
picker.textRecognitionDelegate = self;
Swift:
// Set the text recognition settings
let textRecognitionSettings = SBSTextRecognitionSettings()
// Set the area in which text is to be recognized
textRecognitionSettings.areaPortrait = CGRect(x: 0, y: 0.45, width: 1, height: 0.1);
textRecognitionSettings.areaLandscape = CGRect(x: 0, y: 0.45, width: 1, height: 0.55);
//Set Regular Expression (i.e: VIN code)
textRecognitionSettings.regex = try! NSRegularExpression(pattern: "([A-Z0-9]{17}))", options: .caseInsensitive)
// Create the scan settings
let scanSettings = SBSScanSettings.default()
// Set the text recognition settings
scanSettings.textRecognitionSettings = textRecognitionSettings
// Set the recognize mode to recognize text
scanSettings.recognitionMode = .text
- Instantiate the barcode picker
// Initialize picker
fileprivate var barcodePicker: SBSBarcodePicker?
// Instantiate the barcode picker by using the settings defined above.
let barcodePicker = SBSBarcodePicker(settings: settings)
// Set the delegate to receive recognize text event callbacks
barcodePicker.textRecognitionDelegate = self