2016-12-20 12 views
0

Вот мой пример кода, где я хочу, чтобы получить подробную информацию ...Как извлечь имя, номер телефона и адрес электронной почты Из текста результата распознавания OCR в 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()); 
     } 
    } 
} 

ответ

1

У вас есть хорошие библиотеки для разбора ссылок (сообщения электронной почты, веб-сайты и т.д.), как org.nibor.autolink Что касается номера вы можете посмотреть к libphonenumber. Он предлагается google и используется андроидом. Если вы предоставляете страну, она может проанализировать для вас любой формат номера.

Что касается названий, это сложно. Если вы используете свое приложение только для страны, вы можете создать базу данных с именами (во Франции мы имеем файл в opendata, предложенный публичным сервисом), но он не будет завершен ...

+1

Спасибо, сэр, посмотрим на это ... –

 Смежные вопросы

  • Нет связанных вопросов^_^