2016-12-20 7 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하려면. Google에서 제안하고 android에서 사용합니다. 국가를 제공하면 숫자의 형식을 사용자에게 구문 분석 할 수 있습니다.

이름과 관련하여 어렵습니다. 한 국가에 대해서만 앱을 사용하는 경우 이름이있는 데이터베이스를 만들 수 있습니다 (프랑스에서는 공무원이 제안한 opendata 파일이 있지만). 완료되지는 않습니다 ...

+1

고맙습니다, 이걸 살펴볼거야. –