2016-12-20 49 views
0

這裏是我想要得到的信息我的示例代碼...如何從Android中的Vision OCR結果文本中提取姓名,電話號碼和電子郵件地址?

@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()); 
     } 
    } 
} 

回答

1

你有很好的庫來解析鏈接(電子郵件,網站等):org.nibor.autolink 關於數字,你可以去看看到libphonenumber。它由谷歌提出並由android使用。如果你提供國家,它可以爲你解析任何格式的數字。

關於名稱很難。如果你只使用你的應用程序的國家,你可以創建一個名稱的數據庫(在法國,我們有一個公共服務提出的opendata文件),但它不會完成...

+1

謝謝先生,將研究這... –

相關問題