2017-05-09 128 views
1

嗨我目前在Tesseract-ocr新,我想識別我的形象時,我拍了一張照片..我使用離子框架來做到這一點..圖像的捕獲是好的它效果很好,但是當我點擊按鈕的OCR的功能,它並沒有什麼..我只是跟着文檔中https://github.com/gustavomazzoni/cordova-plugin-tesseractocr-我的圖像不會識別在tesseract ocr

這是我的HTML

<ion-view view-title="OCR Testing"> 
    <ion-content padding="true"> 
     <button class="button button-block button-positive" ng-click="startOCR()"> 
      <i class="icon ion-ios-camera"></i> Scanbot OCR 
     </button> 
     <button class="button button-block button-positive" ng-click="scan()"> 
      <i class="icon ion-ios-camera"></i> Scan 
     </button> 
     <!-- <button class="button button-block button-positive" ng-if="currentDocumentImage.originalImageFileUri" ng-click="startCroppingUi()"> 
     <i class="icon ion-ios-crop-strong"></i> Scanbot Cropping UI 
    </button> 
--> 
     <!-- <img ng-if="currentDocumentImage.imageFileUri" src="{{currentDocumentImage.imageFileUri}}" class="img-big-thumbnail padding"> --> 
     <img ng-if="image" src="{{image}}" class="img-big-thumbnail padding"> 
     <code>{{text}}</code> 

    </ion-content> 
    </ion-views> 

,這是我的控制器

.controller('ScanbotOCRCtrl', function($scope, $cordovaCamera, DemoImageStorage, PhotoLibrary) { 

    $scope.startOCR = function() { 

     $scope.imageData = ''; 

     var options = { 
      quality: 90, 
      destinationType: Camera.DestinationType.DATA_URL, 
      sourceType: Camera.PictureSourceType.CAMERA, 
      allowEdit: true, 
      encodingType: Camera.EncodingType.JPEG, 
      targetWidth: 500, 
      targetHeight: 500, 
      popoverOptions: CameraPopoverOptions, 
      saveToPhotoAlbum: false 
       // correctOrientation: true 
     }; 

     $cordovaCamera.getPicture(options).then(function(imageData) { 
      $scope.image = "data:image/jpeg;base64," + imageData; 
      $scope.text = null; 

      $timeout(function() { 
       // DOM has finished rendering 
       // insert here the call to TesseractPlugin.recognizeText function to recognize the text 
       $scope.imageData = $scope.image; 

      }); 


     }, function(err) { 
      // error 
      console.log('ERROR with camera plugin. Error: ' + err); 
     }); 

    }; 


    $scope.scan = function() { 

     window.TesseractPlugin.recognizeText($scope.imageData, language, function(recognizedText) { 
      $scope.text = recognizedText; 
      alert(recognizedText); 
     }, function(reason) { 
      console.log('Error on recognizing text from image. ' + reason); 
     }); 


    } 
+0

你有什麼錯誤或什麼? –

+0

不,我沒有得到任何錯誤,當我點擊按鈕,它只是沒有做任何事情。我將'console.log'更改爲'alert',因爲我正在使用手機進行調試 – VLR

回答

0

我有點晚,但這裏是解決方案。

在不添加「data:image/jpeg; base64」的情況下直接提供getPicture()函數返回的原始數據,即imagedata。所以它變成:

$cordovaCamera.getPicture(options).then(function(imageData) { 
     $scope.image = "data:image/jpeg;base64," + imageData; 
     $scope.text = null; 
     //here, do it like this and feed it to tesseract 
     $scope.imageData = imageData; 
     });