2017-05-09 3 views
1

Hallo Im derzeit neu in Tesseract-Ocr und ich möchte mein Bild erkennen, wenn ich ein Bild .. Im mit ionischen Rahmen zu tun, dass .. Die Erfassung des Bildes ist in Ordnung funktioniert gut, aber wenn ich den Knopf für die Funktionalität des ocr klicken sie nichts tut .. ich folgte nur die Dokumentation in https://github.com/gustavomazzoni/cordova-plugin-tesseractocr- Mein Bild wird nicht in Tesseract OCR

das ist mein 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> 

und dies ist mein Controller

.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

Haben Sie irgendwelche Fehler oder was? –

+0

Nein, ich bekomme keine Fehler, wenn ich auf die Schaltfläche klickte, es tut einfach nichts. Ich ändere die "console.log" zu "alert", weil ich das mit einem Telefon debugging – VLR

Antwort

0

Ich bin ein bisschen spät, aber hier ist die Lösung.

Die ursprünglichen Daten, die von der Funktion getPicture() zurückgegeben werden, d. H. Bilddaten ohne die Angabe von "data: image/jpeg; base64" direkt vorgeben. So wird es:

$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; 
     });