java - OCR Tesseract - Tess4J 行为怪异

标签 java ocr tesseract tess4j

我正在尝试从图像中提取文本。问题是我正在使用下面给出的代码来处理图像并打印提取的文本。

    public class Test { 

    public static void extractText(String filename)
    //    public static void main(String[] args)
    {
        System.setProperty("jna.library.path", "32".equals(System.getProperty("sun.arch.data.model")) ? "lib/win32-x86" : "lib/win32-x86-64");

        File imageFile = new File("img_perspective.png");
        Tesseract instance = Tesseract.getInstance();  // JNA Interface Mapping
    //  Tesseract1 instance = new Tesseract1(); // JNA Direct Mapping

        try {
            String result = instance.doOCR(imageFile);
            System.out.println(result);
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }
    }
}

当我使用 main 方法时,OCR 引擎运行良好并提取文本。但是当我尝试将此 main 方法转换为名为“extractText()”的方法并尝试从另一个类调用它时,它会抛出异常:

org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [com.patternrecognition.preprocessing.Preprocessing] in context with path  [/ImagePreprocessing] threw exception [Servlet execution threw an exception] with root cause
java.lang.ClassNotFoundException: com.sun.media.imageio.plugins.tiff.TIFFImageWriteParam
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1718)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569)
at net.sourceforge.tess4j.Tesseract.doOCR(Unknown Source)
at net.sourceforge.tess4j.Tesseract.doOCR(Unknown Source)
at com.patternrecognition.preprocessing.test.extractText(test.java:19)

我不知道这有什么问题。我使用完全相同的代码和硬编码的文件名。只是方法改变了。

这太令人沮丧了。有人可以帮忙吗?

最佳答案

确保jai-imageio.jar位于类路径中。并调用ImageIO.scanForPlugins();在 OCR 之前。

tess4j with Spring mvc

关于java - OCR Tesseract - Tess4J 行为怪异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27027880/

相关文章:

java - REST - 定义来自 Restful Java 服务的 JSON 数组的名称

java - android客户端与java服务器通信

tesseract - 使用图像而不是字体来训练tesseract 4

android - 当 minifyenabled 为真时,Tesseract 错误 java.lang.NoSuchFieldError

c# - 如何提高 OCR 识别率?

c++ - 在 OpenCV 的 namedWindow 之前或之后初始化 Tesseract

java - 使用不同的资源文件启动 Android 应用程序

java - URL 中存在非法字符

android - 在 onPictureTaken 中处理原始图像数据

ruby - 使用 ruby​​ 解析 PDF 文档