0

Mein Paket ist: com.abdulwasaetariq.odnvt. Ich habe einen Ordner tessdata in res/raw/Android - Pfad zum Raw-Ordner im Res-Ordner nicht gefunden

In der Tesseract API genannt, gibt es diese Funktion init, deren Dokumentation und Prototyp ist:

/* @param datapath the parent directory of tessdata ending in a forward 
*   slash 
* @param language an ISO 639-3 string representing the language(s) 
* @return <code>true</code> on success 
*/ 
public boolean init(String datapath, String language) { 
    return init(datapath, language, OEM_DEFAULT); 
} 

im Internet Blick sagte mir, dass die Art und Weise Weg zu einem geben, Ressource-Datei ist wie: android.resource://com.packageName

aber ich bin der Fehler immer java.lang.IllegalArgumentException: Data path does not exist!

Hier ist mein entsprechenden Code:

private static void initTess() { 
    String dataPath = "android.resource://"+ context.getPackageName() + "/raw/"; 
    Log.d(TAG, "initTess: dataPath: " + dataPath); 
    tessBaseAPI.init(dataPath,"eng"); 
} 

Die context.getPackageName() in der Tat tut mir bekommen die richtigen Paketnamen com.abdulwasaetariq.odnvt

Ich frage mich, wo der Fehler ist.

Antwort

3

Das Problem ist, dass android.resource:// ist kein gültiger Weg resources in Ihrer App res/raw/ Ordner zugreifen, so die Fehlermeldung, die Sie sehen, wird durch den ungültigen Pfad verursacht.

Versuchen Sie, Ihre Dateien auf assets/ zu verschieben und AssetManager zu verwenden, um die Dateien stattdessen auf Ihr Gerät zu kopieren.

+0

Ahan. Ich kenne den AssetManager-Ansatz. Aber was, wenn ich speziell auf eine Rohdatei im res/row-Ordner verweisen wollte? Es muss sicherlich einen Weg geben, richtig? –

+0

Ja - klicken Sie auf den ersten Link in meiner Antwort und schauen Sie sich Tabelle 1 an. – rmtheis