使用java中的Tesseract
我正在尝试用java构建一个示例应用程序,它将读取一个图像文件,然后只输出从图像中提取的文本。我发现这个项目似乎很有前途,但是它是C++的。为了使用它,我是否应该从java应用程序使用java中的Tesseract,java,ocr,tesseract,Java,Ocr,Tesseract,我正在尝试用java构建一个示例应用程序,它将读取一个图像文件,然后只输出从图像中提取的文本。我发现这个项目似乎很有前途,但是它是C++的。为了使用它,我是否应该从java应用程序Runtime.exec(…)中将其作为命令行运行?或者有更好的解决方案,也许是一个罐子?此外,这只是一个示例应用程序,从可伸缩性的角度来看,将其作为命令行应用程序运行是否值得关注?您是否尝试过tess4j: 它是tesseract for windows的JNI包装器。我在java代码中使用了tesseract项目。
Runtime.exec(…)
中将其作为命令行运行?或者有更好的解决方案,也许是一个罐子?此外,这只是一个示例应用程序,从可伸缩性的角度来看,将其作为命令行应用程序运行是否值得关注?您是否尝试过tess4j:
它是tesseract for windows的JNI包装器。我在java代码中使用了tesseract项目。你需要做的就是
项目
执行OCR
它给出了如何构建java项目以使用tesseract OCR API读取图像并将其转换为文本的说明。现在tesseract由javacv项目提供,这是一个比使用Tesser4j好得多的选项,因为所需的只是向pom文件添加一个依赖项,然后,javacv tesseract版本将为您自动下载和链接平台的本机LIB 我在这里创建了一个示例maven项目- 这里还有一个gradle项目的例子- 为了在我的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项目在这里-
对于javacv的家伙们来说,这是一个大道具,我只希望早点找到它,因为它可以节省我一周的时间让tess4j在多个平台上工作 我用了这个
用这个
<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>3.2.1</version>
</dependency>
net.sourceforge.4j
tess4j
3.2.1
刚刚试过
看起来它可以工作,只需使用一个依赖项:
org.bytedeco.javacpp-presets
特塞拉特
3.03-rc1-0.11
我已经将其分叉并进行了更新,使其能够与Tesseract ocr版本(4.x.x)和bytedeco javacpp预设版本(1.4.3)兼容
,但从未尝试过。很好的发现,@miku。它使用JNA,这将是对请求(that或JNI)的回答,但不需要重新发明轮子…@manu还包含。[edit:link fixed]tnx用于示例,但我在Mac上“mvn clean install”时收到错误“java.lang.unsatifiedLinkError:no jnilept in java.library.path”,有什么想法吗?详细错误“库未加载:/Users/saudet/projects/bytedeco/javacpp presets/leptonica/cppbuild/macosx-x86_64/liblept.4.dylib”您可能需要从源代码处构建和安装leptonica。我下载了leptonica-1.71并提取了它,然后从提取的目录中运行以下命令“cppfagas=“-i/usr/local/include”LDFLAGS=“-L/usr/local/lib”。/configure&&make&&sudo make install”您可以在mac上运行这些命令。javacv在提供所需的所有二进制文件方面做得非常好,但就像maven依赖项可以有数百个可传递依赖项一样,c库也可以。如果java cv将所有内容都放在jar中,它将包含linux的很大一部分,因此我认为他们必须在某个地方划清界限,并假设存在某些库,如果您查看javacpp团队的版本,您可以看到已发布的LIB数量正在缓慢增加,可能是因为他们遇到了与您所遇到的问题完全相同的类型。我分叉了BasicTesseractExampleGradle并创建了一个可以使用Maven而不是Gradle构建的版本-请参见。这看起来比tess4j简单得多。刚刚开始在java上使用tesseract,我认为这是一条路要走。