2012-12-20 52 views
23

我想在java中構建一個示例應用程序,該應用程序將讀取圖像文件並輸出從圖像中提取的文本。我發現Tesseract項目看起來很有前途,但是,它的C++。爲了使用它,我應該簡單地運行它作爲我的Java應用程序的命令行Runtime.exec(...)?或者有更好的解決方案,也許是JAR?此外,這僅僅是一個示例應用程序,將其作爲命令行應用程序從可伸縮性角度來看是一個問題?使用從java的Tesseract

+2

http://tess4j.sourceforge.net/,但從來沒有嘗試過。 – miku

+0

好找,@miku。它使用JNA,這將是對請求(即JNI)的答案,但不需要重新發明輪子... – PhiLho

回答

8

您是否試過tess4j:http://tess4j.sourceforge.net/

它是windows的tesseract的JNI包裝。

+0

Tess4j看起來很棒,但它沒有64位版本 – manu

+0

@manu [jtesseract] (https://github.com/tesseract4java/jtesseract)還包含[用於Tesseract 3.03的64位DLL](https://github.com/tesseract4java/jtesseract/releases/tag/tesseract-v3.03)。[編輯:鏈接固定] – pvorb

9

我在我的java代碼中使用了tesseract項目。所有你需要做的是

  1. 獲取tess4j jni包裝tesseract。
  2. 在您的IDE中打開tess4j proj,並將源包和庫添加到您自己的
    項目中。
  3. 編寫爲tesseract類創建實例的代碼,然後將其用於執行OCR的

請看看這個http://tphangout.com/?p=18

它詳細介紹瞭如何建立一個Java項目來讀取圖像,並使用OCR的Tesseract API將其轉換成文本指令。

+2

漂亮的博客文章。 – shyos

25

現在tescract是由javacv項目提供的,這比使用Tess4J要好得多,因爲所需要的只是爲您的pom文件添加一個依賴項,然後將自動下載並鏈接您的平臺的本機庫爲你的javacv tesseract版本。

我在這裏創造一個例子Maven項目 - https://github.com/piersy/BasicTesseractExample

和這裏的例子gradle這個項目 - https://github.com/piersy/BasicTesseractExampleGradle

對於這個我的Ubuntu的機器上工作,我需要更新我安裝的libstdC++ 6

我通過運行以下代碼實現了這一點,儘管只是安裝libstdC++ 6可能適用於您。

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

注意gradle這個項目不進行自動安裝,但仍然是一個很大比使用Tess4J

的javacv項目簡單的地獄就在這裏 - https://github.com/bytedeco/javacpp-presets/tree/master/tesseract

大道具的javacv大家,只希望我能早點發現它,因爲它可以讓我在tess4j的一個星期內在多個平臺上工作。

+0

tnx爲示例,但我在我的Mac上,「我的mvn乾淨安裝」時,得到錯誤「java.lang.UnsatisfiedLinkError:沒有jnilept在java.library.path」,有什麼想法? – Spring

+1

詳細錯誤「Library not loaded:/Users/saudet/projects/bytedeco/javacpp-presets/leptonica/cppbuild/macosx-x86_64/lib/liblept.4.dylib」 – Spring

+0

我也嘗試在Mac上安裝libstdC++ 6,但沒有找到任何信息要安裝什麼,以及如何安裝和如何 – Spring