java - Java : compiling tesseract on Windows 64-bit 的 OCR 库

标签 java dll dependencies 32bit-64bit ocr

我正在使用 ImageJ 处理文档图像(商业文档),我正在寻找一个好的 OCR 库来从某些区域检索文本。

目前我正在使用 Asprise,但结果不是很可靠。某些字符经常会混淆(0 变成 O、8 -> B、% -> 0、...),然后在不应该出现的地方出现空白,从而给后处理这些数据带来很多麻烦。图像的分辨率为 1240x1754,我还没有尝试过更高的分辨率,但我想检测的最小字符是 15 像素高,所以我认为图像质量足够了。 (顺便说一下,我是在原始图像上执行ocr,而不是二值图像)

在这里查看类似的问题,我注意到 tesseract 经常被推荐。因为它是用 C++ 编写的,所以我不确定如何在 Java 和 ImageJ 中使用它。

使用 Asprise,据我所知,它也是用 c++ 编写的,只是提供了一个 Java 包装器,我可以基于 BufferedImage 执行 ocr。所以我假设我可以对 tesseract 做同样的事情。

<强>1。如何从 Java 调用 tesseract 函数?

更新:我尝试使用 tesjeract,但是当我执行我的应用程序时,它因

UnsatisfiedLinkError: C:\Windows\System32\tessdll.dll: Can't find dependent libraries

我能够成功编译 tesjeract 和 tesseract 2.04 并将 tessdll.dll 和 tesjeract.dll 放在 c:\windows\system32 中。我正在使用这个静态 block 来加载库:

static
{
    System.loadLibrary("tessdll");
    System.loadLibrary("tesjeract");
}

如果相关,我使用的是 Windows 7 64 位。


<强>2。那么如何将 BufferedImage 转换为 tesseract 能够使用的格式?

已解决

这是代码,如果有人感兴趣的话:(源自audiveris)

private ByteBuffer imageToTiffBuffer (BufferedImage image) throws IOException
{
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ImageOutputStream     ios = ImageIO.createImageOutputStream(baos);

    // Take the first suitable TIFF writer
    ImageWriter writer = ImageIO.getImageWritersByFormatName("tiff").next();
    writer.setOutput(ios);
    writer.write(image);
    ios.close();

    // allocate() doesn't work
    ByteBuffer buf = ByteBuffer.allocateDirect(baos.size());
    buf.put(baos.toByteArray());

    return buf;
}

最佳答案

外部库的位数需要与您的 JVM 匹配。由于 tesjeract 是最小公分母,因此您需要使用 32 位 JVM。

关于java - Java : compiling tesseract on Windows 64-bit 的 OCR 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7621700/

相关文章:

dll - Labview CIN 是老式的吗?

c++ - 如何检查可执行文件或 DLL 是在发布还是 Debug模式下构建的 (C++)

.net - 创建使用 .NET 命名空间的库的最佳实践

java - 在 docker 镜像中的 docker 上安装 Java

java - 如何检查javascript中java版本的范围?

java - 谷歌云存储 : open browser when create Storage

java - maven 。将 .DLL 放在 JAR 的根目录中

c# - 将复杂的数据结构从 C# 传递到 native dll

android-studio - 添加一些依赖项后出现 GradleCompatible 错误?

android - 意外的顶级异常 : com. android.dex.DexIndexOverflowException 合并依赖项