2017-09-08 11 views
0

こんにちは、私はOCRアプリアセットから複数のデータを読み取るにはどうすればよいですか?

を作るためのテス-2 APIを使用しようとしています私は、資産からの私のデータをロードする訓練されたデータの2つの言語

を使用する必要があるが、私は、複数のデータをロードすることはありませんかそれから

これは私のコードです:

private void checkFile(File dir) { 
    if (!dir.exists()&& dir.mkdirs()){ 
     copyFiles(); 
    } 
    if(dir.exists()) { 
     String datafilepath = datapath+ "/tessdata/eng.traineddata"; 
     File datafile = new File(datafilepath); 

     if (!datafile.exists()) { 
      copyFiles(); 
     } 
    } 
} 

private void copyFiles() { 
    try { 
     String filepath = datapath + "/tessdata/eng.traineddata"; 
     AssetManager assetManager = getAssets(); 

     InputStream instream = assetManager.open("tessdata/eng.traineddata"); 
     OutputStream outstream = new FileOutputStream(filepath); 

     byte[] buffer = new byte[1024]; 
     int read; 
     while ((read = instream.read(buffer)) != -1) { 
      outstream.write(buffer, 0, read); 
     } 


     outstream.flush(); 
     outstream.close(); 
     instream.close(); 

     File file = new File(filepath); 
     if (!file.exists()) { 
      throw new FileNotFoundException(); 
     } 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

どのように私は、複数のデータをコピーし、それを変更できますか?

答えて

0

あなたは、バックグラウンドスレッド(AsyncTaskまたはスレッド)で大きなファイルをコピーする必要があり、あなたは、複数のtrainedDataファイルをコピーするには、次のロジックを使用することができます。

private void checkFile(File dir) { 
     if (!dir.exists()) { 
      dir.mkdirs(); 
     } 
     if (dir.exists()) { 
      copyFiles("/tessdata/eng.traineddata"); 
      copyFiles("/tessdata/hin.traineddata"); 
      copyFiles("/tessdata/fra.traineddata"); 
     } 
    } 

    private void copyFiles(String path) { 
     try { 
      String filepath = datapath + path; 
      if (!new File(filepath).exists()) { 
       AssetManager assetManager = getAssets(); 

       InputStream instream = assetManager.open(path); 
       OutputStream outstream = new FileOutputStream(filepath); 

       byte[] buffer = new byte[1024]; 
       int read; 
       while ((read = instream.read(buffer)) != -1) { 
        outstream.write(buffer, 0, read); 
       } 


       outstream.flush(); 
       outstream.close(); 
       instream.close(); 

       File file = new File(filepath); 
       if (!file.exists()) { 
        throw new FileNotFoundException(); 
       } 
      } 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
+0

OK、私はそれがあなたの答えに感謝です –

関連する問題