2017-05-09 124 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; 
     });