2012-12-20 48 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