Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java中的Tesseract_Java_Ocr_Tesseract - Fatal编程技术网

使用java中的Tesseract

使用java中的Tesseract,java,ocr,tesseract,Java,Ocr,Tesseract,我正在尝试用java构建一个示例应用程序,它将读取一个图像文件,然后只输出从图像中提取的文本。我发现这个项目似乎很有前途,但是它是C++的。为了使用它,我是否应该从java应用程序Runtime.exec(…)中将其作为命令行运行?或者有更好的解决方案,也许是一个罐子?此外,这只是一个示例应用程序,从可伸缩性的角度来看,将其作为命令行应用程序运行是否值得关注?您是否尝试过tess4j: 它是tesseract for windows的JNI包装器。我在java代码中使用了tesseract项目。

我正在尝试用java构建一个示例应用程序,它将读取一个图像文件,然后只输出从图像中提取的文本。我发现这个项目似乎很有前途,但是它是C++的。为了使用它,我是否应该从java应用程序
Runtime.exec(…)
中将其作为命令行运行?或者有更好的解决方案,也许是一个罐子?此外,这只是一个示例应用程序,从可伸缩性的角度来看,将其作为命令行应用程序运行是否值得关注?

您是否尝试过tess4j:


它是tesseract for windows的JNI包装器。

我在java代码中使用了tesseract项目。你需要做的就是

  • 获取tesseract的tess4jni包装器
  • 在ide中打开tess4j项目,并将源程序包和库添加到您自己的
    项目
  • 编写为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,我认为这是一条路要走。