2012-12-20 14 views
23

Próbuję utworzyć przykładową aplikację w języku Java, która odczyta plik obrazu i po prostu wyprowadza tekst wyodrębniony z obrazu. Znalazłem projekt Tesseract, który wydaje się obiecujący, jednak w wersji C++. Aby go użyć, powinienem po prostu uruchomić go jako wiersz poleceń z mojej aplikacji java Runtime.exec(...)? Czy istnieje lepsze rozwiązanie, może JAR? Co więcej, jest to tylko przykładowa aplikacja, czy uruchomienie jej jako aplikacji z wiersza poleceń stanowi problem z perspektywy skalowalności?Korzystanie z Tesseract z java

+2

http://tess4j.sourceforge.net/, nigdy jednak tego nie próbowałem. – miku

+0

Dobre znalezisko, @miku. Używa JNA, która byłaby odpowiedzią na żądanie (to lub JNI), ale nie trzeba wymyślać koła ... – PhiLho

Odpowiedz

8

Czy próbowałeś tess4j: http://tess4j.sourceforge.net/.

Jest to opakowanie JNI tesseract do okien.

+0

Tess4j wygląda świetnie, ale nie ma wersji 64-bitowej – manu

+0

@manu [jtesseract] (https://github.com/tesseract4java/jtesseract) zawiera również [64-bitowe biblioteki DLL dla Tesseract 3.03] (https://github.com/tesseract4java/jtesseract/releases/tag/tesseract-v3.03).[edytuj: link naprawiony] – pvorb

9

Użyłem projektu tesseract w moim kodzie java. Wszystko, co musisz zrobić, to:

  1. Zdobądź opakowanie tess4j jni dla tesseract.
  2. Otwórz tess4j proj w swoim ide i dodaj pakiety źródłowe i biblioteki do własnego projektu
    .
  3. Napisz kod tworzący instancję klasy tesseract, a następnie użyj jej do wykonania
    podczas wykonywania OCR.

Proszę spojrzeć na ten http://tphangout.com/?p=18

To daje instrukcje dotyczące sposobu budowania projektu Java do odczytu obrazu i przekształcić go w tekście za pomocą Tesseract OCR API.

+2

ładny wpis na blogu. – shyos

25

Teraz tesseract jest dostarczany przez projekt javacv, jest to znacznie lepsza opcja niż użycie Tess4J, ponieważ wszystko, co jest wymagane, dodaje pojedynczą zależność do pliku pom, macierzyste biblioteki dla twojej platformy zostaną następnie pobrane i automatycznie powiązane dla ciebie przez wersję tesseract javacv.

Utworzyłem projekt przykład maven tutaj - https://github.com/piersy/BasicTesseractExample

a także przykład Gradle projekt tutaj - https://github.com/piersy/BasicTesseractExampleGradle

aby to działało na moim komputerze ubuntu mi potrzebne zaktualizować instalację libstdC++ 6

Osiągnąłem to, uruchamiając następujące czynności, chociaż instalacja biblioteki libstdC++ 6 może działać.

sudo add-apt-repository ppa:ubuntu-toolchain-r/test 
sudo apt-get update 
sudo apt-get install libstdc++6 

Uwaga projekt Gradle nie wykonuje automatyczne zainstalowanie ale jest to nadal cholernie dużo prostszy niż przy użyciu Tess4J

Projekt javacv jest tutaj - https://github.com/bytedeco/javacpp-presets/tree/master/tesseract

Wielkie rekwizyty do javacv faceci, tylko żałuję, że nie znalazłem tego wcześniej, ponieważ zaoszczędziłoby mi to tydzień, aby tess4j działał na wielu platformach!

+0

tnx dla próbki, ale pojawia się błąd "java.lang.UnsatisfiedLinkError: no jnilept w java.library.path", kiedy mam "mvn clean install" na moim Macu, jakieś pomysły? – Spring

+1

szczegółowy błąd "Biblioteka nie została załadowana: /Users/saudet/projects/bytedeco/javacpp-presets/leptonica/cppbuild/macosx-x86_64/lib/liblept.4.dylib" – Spring

+0

Próbowałem też zainstalować libstdC++ 6 na macu, ale nie mógł znaleźć żadnych informacji, co zainstalować i jak – Spring