Click or drag to resize
TesseractOcrEngineDoOcrAsync Method (TesseractOcrJobRequest, Int32, Int32, Int32)
Executes an instance (job) of the OCR engine over the image raw specified by pixelWidth, pixelHeight and Pixels, with the specified settings present in the TesseractOcrJobRequest in an Asynchronous way, preventing blocking of the main thread.

Namespace: DevScope.Ocr.Tesseract.WindowsPhone
Assembly: DevScope.Ocr.Tesseract.WindowsPhone (in DevScope.Ocr.Tesseract.WindowsPhone.dll) Version: 255.255.255.255
Syntax
public IAsyncOperationWithProgress<TesseractOcrJobResponse, TesseractOcrProgressEventArgs> DoOcrAsync(
	TesseractOcrJobRequest request,
	int pixelWidth,
	int pixelHeight,
	int[] pixels
)

Parameters

request
Type: DevScope.Ocr.Tesseract.WindowsPhoneTesseractOcrJobRequest
The job request.
pixelWidth
Type: SystemInt32
Width of image in pixels.
pixelHeight
Type: SystemInt32
Height of the image in pixels.
pixels
Type: SystemInt32
Array of image pixels in BGRA format.

Return Value

Type: IAsyncOperationWithProgressTesseractOcrJobResponse, TesseractOcrProgressEventArgs
The results of the OCR process.
Remarks
The DoOcrAsync method’s arguments are the image dimensions and byte array of image pixels in BGRA format.
Examples
This sample shows how to call the DoOcrAsync method.
void RunOcrEngineByWritableBitmap()  
{ 
   ... 
   var ocrEngine = new TesseractOcrEngine(tessdataRootFolder.Path, languageCode);

   // Create the ocr job request
   var request = new TesseractOcrJobRequest
   {
       OrientationMode = TesseractOcrOrientationMode.None,
       JobName = "MyJob " + DateTime.Now.ToString(),
       PageSegmentationMode = TesseractOcrPageSegmentationMode.AutomaticPageSegmentationNoOCR
   };

   request.ImagePreProcessing.AutoDeskew = true;
   request.ImagePreProcessing.AutoDespeckle = true;
   request.ImagePreProcessing.UseLocalAdaptiveThresholding = true;

   // Create the doOcr operation 
   var imgBitmapToOcr = await ImageUtils.LoadImageFromIsolatedStorageAsync(CommonSettings.FileNameFullResImageSentToOcr);
   WriteableBitmap wb = new WriteableBitmap(imgBitmapToOcr);
   var operationDoOcr = ocrEngine.DoOcrAsync(request, wb.PixelWidth, wb.PixelHeight, wb.Pixels);

   // setup progress handler
   operationDoOcr.Progress = new AsyncOperationProgressHandler<TesseractOcrJobResponse, TesseractOcrProgressEventArgs>((operation, report) = >
   {
       if (_cancelCurrentOcrJob)
           report.Cancel = true;
       Dispatcher.BeginInvoke(() = >
       {
           pbar.Value = report.Percent;
       });
   });

   // now, run the ocr and get the results
   var jobResponse = await operationDoOcr;

   // handle the results accordingly
   switch (jobResponse.Status)
   {
        case TesseractOcrResultStatus.Error:
        {
            MessageBox.Show(_ocrJobResponse.ErrorMessage, "Ocr Error", MessageBoxButton.OK);
            break;
        }
        case TesseractOcrResultStatus.InvalidLicense:
        {
            MessageBox.Show("INVALID LICENSE. Please contact Devscope Support.", "Ocr Error", MessageBoxButton.OK);
            break;
        }
        case TesseractOcrResultStatus.Ok:
        {
            textOcr.Text = jobResponse.Text;
            break;
        }
   }
}
See Also