2017-11-14 8 views
0

Ich verwende rmtheis tess-zwei Abhängigkeiten in meinem Projekt. Habe viele Tutorials gelesen, aber nichts hat mir geholfen.Tesseract TessBaseApi init() Fehler

Ich habe irgendwo lesen Data Path als getFilesDir() + "/ Tesseract /". Diese Methoden-ID funktioniert nicht. Dann habe ich versucht, PATH-> "/ mnt/sdcard/tesstract /"

Meine eng.traineddata befindet sich im Ordner Assets.

Log-Meldung wo Fehler Comes->

com.example.shaur.ocrapp E/Android Runtime: FATAL AUSNAHME: Haupt Prozess: com.example.shaur.ocrapp, PID: 5736 java.lang .RuntimeException: Fehler bei der Übermittlung des Ergebnisses ResultInfo {who = null, request = 4, result = -1, data = Intent { dat = Inhalt: // media/external/images/media/43105 flg = 0x1 launchParam = MultiScreenLaunchParams { mDisplayId = 0 mBaseDisplayId = 0 mFlags = 0} (hat Extras)}} zur Aktivität {com.example.shaur.ocra pp/com.example.shaur.ocrapp.MainActivity}: java.lang.IllegalArgumentException: Der Datenpfad muss einen Unterordner enthalten tessdata! bei android.app.ActivityThread.deliverResults (ActivityThread.java:4520) bei android.app.ActivityThread.handleSendResult (ActivityThread.java:4563) bei android.app.ActivityThread.-wrap22 (ActivityThread.java) bei android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1698) bei android.os.Handler.dispatchMessage (Handler.java:102) bei android.os.Looper.loop (Looper.java:154) bei android.app.ActivityThread.main (ActivityThread.java:6776) bei java.lang.reflect.Method.invoke (native Methode) um com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1518) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1408) verursacht durch: java.lang. IllegalArgumentException: Der Datenpfad muss Unterordner Tessdata enthalten! bei com.googlecode.tesseract.android.TessBaseAPI.init (TessBaseAPI.java:311) bei com.googlecode.tesseract.android.TessBaseAPI.init (TessBaseAPI.java:284) bei com.example.shaur .ocrapp.MainActivity.onActivityResult (MainActivity.java:73) bei android.app.Activity.dispatchActivityResult (Activity.java:7295) bei android.app.ActivityThread.deliverResults (ActivityThread.java:4516) bei android. app.ActivityThread.handleSendResult (ActivityThread.java:4563) bei android.app.ActivityThread.-wrap22 (ActivityThread.java) bei android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1698) bei android.os.Handler.dispatchMessage (Handler.java:102) bei android.os.Looper.loop (Looper.java:154) bei android.app.ActivityThread.main (ActivityThread.java:6776) bei java.lang.reflect.Method.aufrufen (native Methode) bei com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1518) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1408)

Log Message sagt deutlich "verursacht durch: java.lang.IllegalArgumentException: Datenpfad muss Unterordner Tessdata enthalten!". Wo soll ich dieses Verzeichnis anlegen? Ist es mein Telefon sdcard, wo ich manuell einen Ordner erstellen und es als Tesseract benennen muss und dort einen Unterordner mit Tessdata mit eng.traineddata hinzufügen.

Image of my directory view

Wenn es ein anderer Fehler in meinem Code ist tessaract in Bezug auf Sie markieren und der richtige Methode zu berichten.

+0

Links, die ich bisher ausprobiert habe -> http://imperialsoup.com/2016/04/29/simple-ocr-android-app-using-tesseract-tutorial/, https://stackoverflow.com/questions/12877235/ocr-android-application-das-is-using-tesseract –

+0

Die stackoverflow Antwort verwirrt mich, warum der Pfad ist "/ mnt/sdcard/tesseract/tessdata" –

Antwort

1

Tesseract behandelt nicht den Ordner "Assets", Sie müssen die .datas an einen beliebigen Ort wie/data/Android/yourapppackage/assets/tesseract kopieren und diesen Pfad verwenden.

Ich habe die Tesseract-Arbeit nur gemacht, weiß nicht, ob Tess-Two diesen Fall behandelt.

Lets nehme an, Sie die Daten zu/assets hinzufügen/

Dann in Ihrem Code Sie den Stream ab Vermögenswerte erhalten und kopieren Sie die Datei in das Innere des Geräts im Pfad i erwähnt, dann in der Tesserakts impl Sie es verwenden

+0

Kannst du dein github Repo teilen, wenn es existiert. –

+0

können Sie auch den Weg, den Sie erzählen, den Tessdata-Ordner hier speichern. C: \ Benutzer \ shaur \ AndroidStudioProjekte \ OCRapp \ app \ src \ main \ assets \ tessdata Wie lege ich den Pfad fest? –

+0

Sie müssen zum Gerät in einem zugänglichen Ordner kopieren –