OCR and Image in WinRT (Windows Store) using LEADTOOLS WinRT Libraries

Take the following steps to start a project and to add some code that will load an image and read its barcodes in a Windows Store application using LEADTOOLS WinRT libraries.

  1. Start Visual Studio 2012
  2. Choose File --> New Project from the menu.
  3. In the New Project dialog box, choose "JavaScript” and "Windows Store" as the project template, and choose "Blank App" in the Templates List.
  4. Type the project name as "OCRImage" in the Project Name field, and then click OK. If desired, type a new location for your project or select a directory using the Browse button, and then click OK.
  5. In the "Solution Explorer" window, right-click on the "References" folder for the project and select "Add Reference..." from the context menu. Browse to the <LEADTOOLS_INSTALLDIR>\Bin\WinRT8_1\ folder (depending on your target platform), and select the following .WINMD files:

    • Leadtools.winmd
    • Leadtools.Kernel.winmd
    • Leadtools.Codecs.winmd
    • Leadtools.Codecs.Kernel.winmd
    • Leadtools.Codecs.Bmp.winmd
    • Leadtools.Codecs.Cmp.winmd
    • Leadtools.Codecs.Fax.winmd
    • Leadtools.Codecs.Gif.winmd
    • Leadtools.Codecs.J2k.winmd
    • Leadtools.Codecs.Png.winmd
    • Leadtools.Codecs.Tif.winmd
    • Leadtools.Dicom.winmd
    • Leadtools.Converters.winmd
    • Leadtools.ImageProcessing.Core
    • Leadtools.ImageProcessing.Utilities
    • Leadtools.ImageProcessing.Effects
    • Leadtools.ImageProcessing.SpecialEffects
    • Leadtools.ImageProcessing.Color
    • Leadtools.Forms.Ocr
    • Leadtools.Forms.DocumentWriters

    Click the Add button and then click OK to add the above references.

  6. Add the LEADTOOLS Advantage OCR Engine runtime files to the project by doing the following:

  7. In the Solution Explorer window, right-click on the project and select Add-->New Folder from the context menu. Name the folder OCRRuntime and then click OK.
  8. Right-click the new folder and select Add-->Existing Item from the context menu. Browse to the <LEADTOOLS_INSTALLDIR>\Bin\Common\OcrAdvantageRuntime folder, and select the following files:

    • Advantage.de.bin
    • Advantage.en.bin
    • Advantage.es.bin
    • Advantage.fr.bin
    • Advantage.it.bin
    • Advantage.Micr.bin
  9. For each of the files, set the Package Action setting to Content and the Copy To Output Directory setting to Copy if newer.

  10. Open the default.html file and copy the below html code into the editor:

     

    <!DOCTYPE html>  
    <html>   
    <head>   
       <meta charset="utf-8" />  
       <title>OCRImage</title>  
                     
       <!-- WinJS references -->  
       <link href="//Microsoft.WinJS.1.0/css/ui-dark.css" rel="stylesheet" />   
       <script src="//Microsoft.WinJS.1.0/js/base.js"></script>  
       <script src="//Microsoft.WinJS.1.0/js/ui.js" ></script>   
                     
       <!-- OCRImage references -->  
       <link href="/css/default.css" rel="stylesheet" />   
       <script src="/js/default.js" ></script>   
                    </head>   
                    <body>   
      <input id="btnLoadAndRecognize" type="button" value="Load And Recognize Text" />   
         
      <p id="statusText" ></p>   
         
      <textarea id="resultsTextArea" readonly="readonly" style="width: 500px; height: 500px" ></textarea>  
         
                    </body>   
                    </html> 

     

  11. Change to default.js in the Solution Explorer and copy the following code into the file (overwrite all existing code):

    // For an introduction to the Blank template, see the following documentation:  
                // http://msdn.microsoft.com/en-us/library/windows/apps/hh758331.aspx   
                (function  () { 
                   "use strict"; 
                     
                   WinJS.Binding.optimizeBindingReferences = true; 
                     
                   var  app = WinJS.Application; 
                   var  activation = Windows.ApplicationModel.Activation; 
                     
                   app.onactivated = function (args) { 
                      if  (args.detail.kind === activation.ActivationKind.launch) { 
                         if  (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) { 
                            // TODO: This application has been newly launched. Initialize  
                            // your application here. LoadAndRecognize() 
                            document.getElementById("btnLoadAndRecognize").addEventListener("click" , LoadAndRecognize, false ); 
                                 
                            // replace this with RasterSupport.SetLicense when you have a valid runtime license.  
                            Leadtools.RasterSupport.initialize();  
                                 
                            //Create and start the OCR engine  
                            var  engineDirectory = Windows.ApplicationModel.Package.current.installedLocation.path + "\\OCRRuntime"; 
                            _ocrEngine = Leadtools.Forms.Ocr.OcrEngineManager.createEngine(Leadtools.Forms.Ocr.OcrEngineType.advantage, false); 
                            var _ocrCodecs = new Leadtools.Codecs.RasterCodecs(); 
                            _ocrEngine.startup(_ocrCodecs, null , "", engineDirectory); 
                            _document = _ocrEngine.documentManager.createDocument(); 
                     
                         } else { 
                            // TODO: This application has been reactivated from suspension.  
                            // Restore application state here.  
                         } 
                         args.setPromise(WinJS.UI.processAll()); 
                      } 
                   }; 
                     
                   app.oncheckpoint = function (args) { 
                      // TODO: This application is about to be suspended. Save any state  
                      // that needs to persist across suspensions here. You might use the  
                      // WinJS.Application.sessionState object, which is automatically  
                      // saved and restored across suspension. If you need to complete an  
                      // asynchronous operation before your application is suspended, call  
                      // args.setPromise().  
                   }; 
                     
                   app.start(); 
                     
                   var _ocrEngine = null ; 
                   var _document = null ; 
                     
                   function  LoadAndRecognize() { 
                      // Create a file picker object  
                      var  openPicker = new Windows.Storage.Pickers.FileOpenPicker(); 
                      openPicker.viewMode = Windows.Storage.Pickers.PickerViewMode.thumbnail; 
                      openPicker.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.picturesLibrary; 
                      openPicker.ViewMode = Windows.Storage.Pickers.PickerViewMode.List; 
                     
                      //Add a few supported file types  
                      openPicker.fileTypeFilter.append(".jpg"); 
                      openPicker.fileTypeFilter.append(".jpeg"); 
                      openPicker.fileTypeFilter.append(".jxr"); 
                      openPicker.fileTypeFilter.append(".png"); 
                      openPicker.fileTypeFilter.append(".bmp"); 
                      openPicker.fileTypeFilter.append(".pcx"); 
                      openPicker.fileTypeFilter.append(".tif"); 
                      openPicker.fileTypeFilter.append(".tiff"); 
                      openPicker.fileTypeFilter.append(".j2k"); 
                      openPicker.fileTypeFilter.append(".jbg" ); 
                      openPicker.fileTypeFilter.append(".gif"); 
                      openPicker.fileTypeFilter.append(".jls"); 
                      openPicker.fileTypeFilter.append(".jb2"); 
                      openPicker.fileTypeFilter.append(".psd"); 
                      openPicker.fileTypeFilter.append(".dcm"); 
                      openPicker.fileTypeFilter.append(".dic"); 
                      openPicker.fileTypeFilter.append(".pdf"); 
                     
                      // Open the picker for the user to pick a file  
                      openPicker.pickSingleFileAsync().then(function (file) { 
                         if (!file) { 
                            // The picker was dismissed with no selected file  
                            return; 
                         } 
                     
                         document.getElementById('resultsTextArea').value = ""; 
                         // Create a RasterCodecs object to load the file  
                         var  codecs = new Leadtools.Codecs.RasterCodecs(); 
                     
                         document.getElementById('statusText').innerText = "Loading image..."; 
                     
                         // Create a LEAD stream for the file  
                         var leadStream = Leadtools.LeadStreamFactory.create(file); 
                     
                         // Load it  
                         codecs.options.load.initAlpha = true ; 
                         codecs.loadAsync(leadStream, 32, Leadtools.Codecs.CodecsLoadByteOrder.bgr, 1, 1 ).then(function (rasterImage) { 
                            _document.pages.clear(); 
                            //Add the page to the OCR document  
                            _document.pages.addPage(rasterImage, null); 
                            document.getElementById('statusText').innerText = "Recognizing Text..."; 
                            //Recognize the text  
                            var results = _document.pages[0].recognizeText(null); 
                     
                            if (results.length == 0) { 
                               document.getElementById('statusText').innerText = "No text recognized"; 
                            } 
                            else  { 
                               //Show the results  
                               document.getElementById('resultsTextArea').value = results; 
                               document.getElementById('statusText').innerText = "Complete"; 
                            } 
                         }, function (e) { 
                            var msg = new Windows.UI.Popups.MessageDialog("Error loading image"); 
                            msg.showAsync(); 
                            document.getElementById('statusText').innerText = "Error loading image"; 
                         }); 
                      }); 
                   } 
                })(); 

     

  12. Build, and Run the program to test it.

  13. Click the Load And Recognize Text button, and select an image.
  14. NOTE: If you encounter an "Invalid File Format" or "Feature Not Supported" exception, please refer to the topic Invalid File Format/Feature Not Supported.
Products | Support | Contact Us | Copyright Notices
© 1991-2017 LEAD Technologies, Inc. All Rights Reserved.
LEADTOOLS Imaging, Medical, and Document
Click or drag to resize