Tesseract OCR, Tess4j für Java einrichten?

bernd91364

Cadet 4th Year
Registriert
Nov. 2020
Beiträge
86
Hallo, kennt sich zufällig hier Jemand mit Tesseract bzw. dem "Wrapper" Teil für Java, Tess4j, aus?

Ich bin gefühlt jedem Online Tutorial gefolgt, aber ich kriege das einfahc nicht hin das zu installieren dass es auch läuft.

Ich will es wohlgemerkt weder in irgendeiner IDE wie Eclipse nutzen noch für jedes Textablesen die Konsole öffnen müssen.

Sondern einfach, wie es einchlägige Tutorials so schön behaupten dass es ginge, einfach in der java Datei direkt OCr eines übergebenen Bildes machen lassen.

Ich komme einfahc nicht klar mit den, eh schon nur spärlichen, Ekrlärungen wie man bei Windows (nicht sch... Linux) ohne IDE (kein Eclipse und auch keine Mavens, Ravens und Co.)
das einfach in ein normales Java Programm einbaut.

Dass man .jar Dateien mittels Systemumgebungsvariabeln dem System zur Verfügung stellen kann, ist mir mittlerweile klar.

Aber wie man nun konkret tess4j benutzt, weiß ich nicht.
Da fängt es damit an dass die in den vorgebenenen Java Dateien definierten Pakete (wie net.sourceforge.blablabla) nicht gefunden werden, die Klasse Tresseract nicht gefunden wird, etc.

So einfach wie es manche Tutorials schreiben scheint das Einrichten von tess4j nicht zu sein.

Hat da jemand irgendeine Ahnung davon?
Und könnte es mir idiotensicher in 2-3 Schritten erklären was zu tun ist?
 
warum nicht einfach mit maven? Das erledigt dalles fuer dich.
 
  • Gefällt mir
Reaktionen: codengine
bernd91364 schrieb:
einfach in der java Datei direkt OCr eines übergebenen Bildes machen lassen
bernd91364 schrieb:
bei Windows (nicht sch... Linux)
bernd91364 schrieb:
kein Eclipse und auch keine Mavens, Ravens und Co.

Hui...

Also, ich habe noch nie zuvor mit Tesseract gearbeitet und es dennoch hinbekommen, innerhalb von 5 Minuten ein beliebiges Bild, was ich mir runtergeladen habe, in einen String umwandeln zu lassen. Das lag daran, dass sich Tess4J genau wie jede andere Java Bibliothek verhalten hat, die mir in meinem vielen vielen Jahren als Programmierer untergekommen ist. Sehr einfach zu benutzen, wirklich...

Das Code Beispiel auf der Website von Tess4J konnte ich 1 zu 1 übernehmen. Setzen irgendwelcher Windows Umgebungsvariablen war nicht notwendig.

Um Deiner Bitte nach einer Anleitung von 2-3 Schritten nachzukommen:
  • Benutze Maven, um alle benötigten Bibliotheken (in dem Fall Tess4J) einzubinden und benutze sie
  • Wenn dir das nicht gefällt weil zu einfach, dann lade dir eine beliebige IDE runter, erstelle ein Projekt, füge Tess4J als externe Bibliothek hinzu und benutze sie
  • Falls dir das auch nicht gefällt weil zu effizient, dann lade dir Tess4J runter, schreibe dein Programm und denke beim Aufruf daran, den class path korrekt zu definieren und Tess4J zu inkludieren
Ich meine hier allgemein ein Verständisproblem zu erkennen, wie in Java externe Abhängigkeiten (Bibliotheken) verwendet werden. Ich empfehle, sich ein paar Texte zu suchen, die sich mit Java's classpath beschäftigen.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Schtefanz und rg88
@madmax2010 hat recht, Maven sucht sich die für dein System passenden Binaries und läd sie automatisch runter.

Installiert werden muss da nix :)
 
Killkrog schrieb:
Wenn du so ein geborenes Genie bist, wäre ich dir für deine Hilfe sehr dankbar:
Ich habe mir von https://sourceforge.net/projects/tess4j/ die zip Datei runtergeladen und entpackt.
Ich bin dann der Anleitung http://tess4j.sourceforge.net/tutorial/ ganz unten gefolgt, bzw. habe es versucht.
Auf meinem Desktop einen TessExample Ordner gemacht wie dort abgebildet, java Datei mit dem Code weiter unten im example Ordner abgelegt.
Und aus dem lib und dist Ordner der heruntergeladenen tess4j zip datei alle .jars kopiert und bei mir im tessexample/lib Ordner untergebracht.

Und weil ich nicht immer in der Konsole beim kompilieren und ausführen dutzende jars angeben müssen will, in der systemumgebungsvariable den lib ordner meines tessexample hinterlegt.

und dann sollte es ja eigentlich gehen, also in der konsole versucht die java datei zu kompilieren.

Tja, zuerst jammert er mit Paketen rum die er nicht kennt, unter anderem das net.sourcforge.blabla
Von der Klasse Tesseract hat er auch noch nie gehört.
Und viele Fehlermeldungen mehr.



Warum ich keine 200 nutzlosen Mistprogramme will?
1. Weil OCR meines 3zahlen-bildes nur ein kleiner Teil (idealerweise ein 1-3-zeiler) meines Programmes sein sollte, das OProgramm was ich shcreiben will tut 200 weitere schritte.
Dieses programm will ich später, vielleicht durch eine passende bat dataei mit "java datei" und der taskmanager autoausführung regelmässig ausführen lassen. Da brauche ich keine 20 mistprogramme die ich alle aufmachen, ausführen und sonstwie händisch ausführen muss nur um ein simples java programm zu starten.
dass man ravan, maven, eclipse und nicht zu vergessen tesseract selbst erst mal lernen und einüben muss, nicht zu vergessen.
Und warum zur Hölle will m9r jeder ein sch... Projektmanagementprogramm andrehen?
Seh ich aus wie ein Buchhalter oder ein Systemadmin irgendeiner Schule?
Meine genau 1 Java Datei habe ich noch im überblick, da brauche ich keine Mavens, um mein eines Programm zu "managen".
Genauso witzlos wie eclipse, das nur die wirklichen java und class Dateien vor mir versteckt.
konsole und die javac und java befehle taten es bisher auch, da rbauche ich kein eclipse was von mir verlangt für jeden mist ein eigenes projekt, package und Klassenname zu wählen, mir immer alle möglichen Sachen (leere main methode und so) vorgeben will und ich dem ernsthaft am anfang shcon ,mitteilen soll welchen input die klasse als args erwartet bevor ich auch nur die erste Zeile code geschrieben habe.
Weißc ich doch noch nicht ob die spätere eingabe für das programm aus nem string a, nem int b und nem boolean c oder sonstwas bestehen wird. Wird das programm shcon noch sehen was ich ihm übergebe am ende, muss es mich nicht zwingend as shcon vorzudefinieren -.-

So kann ich wie erwähnt mit javac und java ganz simpel mit ner bat datei die 2 konsolenbefehle ausführen lassen (das ist WIRKLICH eine sache von 2 minuten das zu ergoogeln).
Aber wie man Mist wie MAven, Eclipse und Co. dann wieder in ner bat Datei auch mit unterbriungt dass die 20 Mistprogramm dann gestartet und die eigentlich java Datei uch ausgeführt wird, ist was weiteres was man unfreiwillig lernen müsste.

Weil man hat ja nichts besserews zu tun als sich unnötigen Mist zuzulegen damit man noch mehr zu erlernen und zu studieren hat, jabva ist an ich ja shcon viel zu einfahc. kann man sih auch noch mavens, ravens und Co. zu legen umd das leben noch ein wenig umständlicher zu machen -.-


kurzum: ich will in nem dreizeiler kurz ocr von nem bild mit 3 zahlen machen.
und das geschätzt alle 0.5 sekunden oder so.
da will ich mich nicht mit mavens, eclipse und rotz noch rumschlagen müssen -.-

Ziel des programms ist ja nciht freizeitbeschäftigung, sondern dass auch das endziel erreicht wird.
und unterschritt 5 von 50 ist da ocr des bildes.


kurzum, geht OCR nicht auch mit weniger tratra, programmen und co. drum herum?

Shclimm genug dass mich die Uni nötigen will für diverse programmierppraktika das blöde Eclipse zu benutzen -.-

Als würde es die notepad++ und die konsole nicht auch tun.
Und wer ernsthaft noch nicht die signatur der main methode kennt und die automatisch eingefügt haben braucht (obwohl eine klasse die nicht mal zwingend braucht, je nachdem), naja...

Sind wir bald auf dem level vom hompegae baukasten, mit den selben beschränkungen.

PS: was sind eigentlich diese sch... "dependencies" Msit, von dem immer die Rede ist?
Und wozu soll ich jetzt auch noch ne xml Datei dafür schreiben?
kann man den luxus quatshc nicht weglassen sodass es auch ohne läuft?

sonstige java programme in dieser welt laufen doch auch ganz ohne sowas, meist mit simplen import befehl oder ähnlichem O_o


Hatte eigneltich nicht vor, mit 5 programmiersprachen gleichzeitig zu arbeiten nur um das dämliche tesseract bzw. tess4j in java zum laufen zu bringen.
 
Zuletzt bearbeitet von einem Moderator:
Du hast nicht verstanden was Maven macht.

Wenn dein Tolles Programm dann irgendwann fertig ist und du eine fetige Jar hast, die idealerweise alle Dependencies und deren Dependencies und deren Dependencies .... enthält, benötigst du keines der "Mistprogramme" mehr. Dann kannst du auch dein JDK deinstallieren und durch ein JRE ersetzen.

So ist es aber nunmal. Als "Entwickler" benötigt man Werkzeuge, die ein Nutzer am Ende nicht mehr benötigt. Dort reicht dann das fertige Produkt.
Klar kann man auch ohne Werkzeuge entwickeln, dauert dann nur entsprechend lange und wird qualitativ sicher nicht mal ansatzweise so gut wie mit Hilfsmitteln.

Und während du hier so eine elendig lange Schimpftirade verfasst hast hättest du dir Maven mal anschauen können und wärst sicher schon fertig mit deinem 1 - 3 Zeiler.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: madmax2010
bernd91364 schrieb:
Und weil ich nicht immer in der Konsole beim kompilieren und ausführen dutzende jars angeben müssen will, in der systemumgebungsvariable den lib ordner meines tessexample hinterlegt.
Es funktioniert das Compilieren und die Ausführung, wenn ich unter Windows folgenden Classpath verwende:
CLASSPATH=.;lib/*
 
Zuletzt bearbeitet:
wie ihr wollt, tu ich mi den rotz maven eben an -.-

scheinbar hat ja keiner eine plan wie es ohne den msit geht. oder will es zumindest nicht sagen.
weil es ja so toll ist und man den mist ja unbedingt braucht.

Will übrigens demnächst in nem bild eine linie einzeichnen.
Sollte ich da , statt paint zu benutzen, besser shcon mal einen photoshop masterkurs, adobe after efrects und co. erlernen? ;-)
 
Es funktioniert doch ohne maven, wenn man den richtigen Classpath setzt. Siehe Post #8.
 
@bernd91364 Ich verstehe nicht, warum du dich hier so echauffierst. Du möchtest hier Hilfe, du möchtest bei deinem Anliegen weiterkommen.

Ich fände es durchaus nachvollziehbar, wenn dir überhaupt keiner mehr antwortet so wie du hier auftrittst. Keine nachvollziehbare Eigeninitiative und am besten gleich nach einer Komplettlösung schreien anstatt sich mit den Hinweisen auseinanderzusetzen.

Wie schon gesagt, ist es natürlich auch möglich ohne sämtliche Werkzeuge und Hilfsmittel dein Ziel zu erreichen. Nur der Weg dahin ist deutlich steiniger als er sein müsste. Gezeigt wurden dir bereits beide Wege, nun musst du nur noch einen der beiden gehen.
 
SaxnPaule schrieb:


nachvollziehbare Eigeninitiative, ja...
"und am besten gleich nach einer Komplettlösung schreien anstatt sich mit den Hinweisen auseinanderzusetzen."

Hinweise in a nutshell. "Nimm Eclipse! Nimm maven! '
Ergänzung ()

Nolag schrieb:
Es funktioniert das Compilieren und die Ausführung, wenn ich unter Windows folgenden Classpath verwende:
Wohin shcriebe ich das?
In der Konsole, im java Programm?
Oder in Amven oder Eclipse? -.-

Warum kann Java, nicht wie sonst auch, eine stinknormale import Anweisung benutzen und fertig.
geht doch für Alles Andere auch, was nicht tesseract ist :-(
 
Zuletzt bearbeitet von einem Moderator:
Wo ist das Problem? Man kann den Classpath auch z.B. direkt beim Kompilieren angeben:
Code:
javac -cp .;lib/* JavaDatei.java
 
Zuletzt bearbeitet:
bernd91364 schrieb:
Warum kann Java, nicht wie sonst auch, eine stinknormale import Anweisung benutzen und fertig.
geht doch für Alles Andere auch, was nicht tesseract ist
Sicherlich nicht. Importieren kann man nur Klassen, die gefunden werden, d.h sich im Klassenpfad befinden. Java bringt schon vieles mit, aber zusätzliche Bibliotheken muss man wie dargestellt erst einbinden (was übrigens bei anderen Sprachen ähnlich funktioniert), sonst kompiliert das Programm wie gesehen nicht.
 
Ich weiß nicht wie es euch geht aber meine Hilfsbereitschaft in diesem Thread geht aktuell gen 0.
@bernd91364 du solltest ernsthaft drüber nachdenken wie man Menschen begegnen sollte die dir einfach nur helfen wollen....
 
Ich habe die Anweisungen im Abschnitt "Command-line on Windows 7 64-bit" des Tutorials ausprobiert und es funktioniert, wie beschrieben, wenn man die tess4j.jar von "dist" nach "lib" kopiert, wie es ja auch vom TE gemacht wurde:
bernd91364 schrieb:
Und aus dem lib und dist Ordner der heruntergeladenen tess4j zip datei alle .jars kopiert und bei mir im tessexample/lib Ordner untergebracht.
Der folgende Satz ist allerdings merkwürdig:
bernd91364 schrieb:
Und weil ich nicht immer in der Konsole beim kompilieren und ausführen dutzende jars angeben müssen will, in der systemumgebungsvariable den lib ordner meines tessexample hinterlegt.
Wenn man die folgenden Anweisungen aus dem Tutorial verwendet, ist das nämlich nicht nötig:
C:\Projects\TessExample>javac -cp lib\* tess4j\example\TesseractExample.java

C:\Projects\TessExample>java -cp lib\*;. tess4j.example.TesseractExample
 
  • Gefällt mir
Reaktionen: bernd91364
Zurück
Oben