2016-12-20 2 views
0

Voici mon exemple de code où je veux obtenir des détails ...Comment extraire le nom, le numéro de téléphone et l'adresse électronique du texte de résultat Vision OCR dans Android?

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == PHOTO_REQUEST && resultCode == RESULT_OK) { 
     launchMediaScanIntent(); 
     try { 
      Bitmap bitmap = decodeBitmapUri(this, imageUri); 
      if (detector.isOperational() && bitmap != null) { 
       Frame frame = new Frame.Builder().setBitmap(bitmap).build(); 
       SparseArray<TextBlock> textBlocks = detector.detect(frame); 
       String blocks = ""; 
       String lines = ""; 
       String words = ""; 
       for (int index = 0; index < textBlocks.size(); index++) { 
        //extract scanned text blocks here 
        TextBlock tBlock = textBlocks.valueAt(index); 
        blocks = blocks + tBlock.getValue() + "\n" + "\n"; 
        for (Text line : tBlock.getComponents()) { 
         //extract scanned text lines here 
         lines = lines + line.getValue() + "\n"; 

         for (Text element : line.getComponents()) { 
          //extract scanned text words here 
          words = words + element.getValue() + ", "; 
         } 
        } 
       } 


       if (textBlocks.size() == 0) { 
        scanResults.setText("Scan Failed: Found nothing to scan"); 
       } else { 
        scanResults.setText(scanResults.getText() + "Blocks: " + "\n"); 
        scanResults.setText(scanResults.getText() + blocks + "\n"); 
        scanResults.setText(scanResults.getText() + "---------" + "\n"); 
        scanResults.setText(scanResults.getText() + "Lines: " + "\n"); 
        scanResults.setText(scanResults.getText() + lines + "\n"); 
        scanResults.setText(scanResults.getText() + "---------" + "\n"); 
        scanResults.setText(scanResults.getText() + "Words: " + "\n"); 
        scanResults.setText(scanResults.getText() + words + "\n"); 
        scanResults.setText(scanResults.getText() + "---------" + "\n"); 
       } 
      } else { 
       scanResults.setText("Could not set up the detector!"); 
      } 
     } catch (Exception e) { 
      Toast.makeText(this, "Failed to load Image", Toast.LENGTH_SHORT).show(); 
      Log.e(LOG_TAG, e.toString()); 
     } 
    } 
} 

Répondre

1

Vous avez de belles bibliothèques pour analyser (lien e-mails, sites web, etc.) comme org.nibor.autolink chiffres concernant, vous pouvez jeter un oeil à libphonenumber. Il est proposé par google et utilisé par android. Si vous fournissez le pays, il peut analyser pour vous n'importe quel format du numéro.

En ce qui concerne les noms, c'est difficile. Si vous utilisez votre application uniquement pour un pays, vous pouvez créer une base de données avec les noms (en France nous avons un fichier en opendata proposé par un service public) mais il ne sera pas complet ...

+1

Merci monsieur, se penchera sur cela ... –