【问题标题】:Using Tesseract from java从 java 中使用 Tesseract
【发布时间】:2012-12-08 02:51:37
【问题描述】:

我正在尝试在 java 中构建一个示例应用程序,它将读取图像文件并输出从图像中提取的文本。我发现Tesseract 项目似乎很有希望,但是,它是用 c++ 编写的。为了使用它,我是否应该简单地从我的 java 应用程序 Runtime.exec(...) 将它作为命令行运行?还是有更好的解决方案,也许是 JAR?此外,这只是一个示例应用程序,从可扩展性的角度来看,将其作为命令行应用程序运行是否会引起关注?

【问题讨论】:

  • tess4j.sourceforge.net,但从未尝试过。
  • 好发现,@miku。它使用 JNA,这本来是对请求(即或 JNI)的回答,但无需重新发明轮子......

标签: java ocr tesseract


【解决方案1】:

现在 tesseract 由 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 在多个平台上工作!

【讨论】:

  • tnx 示例,但是当我在 Mac 上“mvn clean install”时出现错误“java.lang.UnsatisfiedLinkError: no jnilept in java.library.path”,有什么想法吗?
  • 详细错误“库未加载:/Users/saudet/projects/bytedeco/javacpp-presets/leptonica/cppbuild/macosx-x86_64/lib/liblept.4.dylib”
  • 您可能需要从我下载的 leptonica-1.71 提取它的源代码构建和安装 leptonica,然后从提取的目录中运行以下命令 'CPPFLAGS="-I/usr/local/include" LDFLAGS= "-L/usr/local/lib" ./configure && make && sudo make install'
  • 你可以在 Mac 上运行它们。 javacv 在为您提供所需的所有二进制文件方面做得非常好,但就像 maven 依赖项可以有数百个传递依赖项一样,c 库也可以。如果 java cv 将所有内容放在 jar 中,它将包含大部分 linux,所以我认为他们必须在某处划清界限并假设存在某些库,如果您查看 javacpp 团队的版本,您可以看到交付的库正在缓慢增加,可能是因为它们遇到了与您遇到的完全相同类型的问题。
  • 我派生了 BasicTesseractExampleGradle 并创建了一个可以使用 Maven 而不是 Gradle 构建的版本 - 请参阅 BasicTesseractExampleMaven
【解决方案2】:

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

  1. 获取 tesseract 的 tess4j jni 包装器。
  2. 在您的 ide 中打开 tess4j 项目并将源包和库添加到您自己的
    项目。
  3. 编写代码,为 tesseract 类创建一个实例,然后将其用于
    执行 OCR。

请查看此http://tphangout.com/?p=18

它提供了有关如何构建 Java 项目以读取图像并使用 tesseract OCR API 将其转换为文本的说明。

【讨论】:

    【解决方案3】:

    你试过 tess4j:http://tess4j.sourceforge.net/

    它是用于 windows 的 tesseract 的 JNI 包装器。

    【讨论】:

    【解决方案4】:

    我已经分叉了Basic Git Repo 并对其进行了更新,以便它可以与 Tesseract-ocr 版本 (4.x.x) 和 bytedeco javacpp-presets 版本 (1.4.3) 兼容。

    BasicTesseractExampleVer4

    【讨论】:

    • 这看起来比 tess4j 简单得多。刚开始在 java 上使用 tesseract,我认为这是要走的路。
    【解决方案5】:

    刚刚试过https://github.com/piersy/BasicTesseractExample

    看起来它可以工作,只使用一个依赖项:

    <dependency>
          <groupId>org.bytedeco.javacpp-presets</groupId>
          <artifactId>tesseract</artifactId>
          <version>3.03-rc1-0.11</version>
    </dependency>

    这里是: https://github.com/bytedeco/javacpp-presets/tree/master/tesseract

    干杯 科拉多

    【讨论】:

      【解决方案6】:

      我用过这个How to Test Toast Messages using Appium?

      有了这个

          <dependency>
              <groupId>net.sourceforge.tess4j</groupId>
              <artifactId>tess4j</artifactId>
              <version>3.2.1</version>
          </dependency>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-06-18
        • 2015-03-27
        • 2016-08-15
        • 1970-01-01
        • 1970-01-01
        • 2019-05-20
        • 2015-06-10
        相关资源
        最近更新 更多