tess4j 与 Spring mvc

2024-03-29

我已经尝试将 tess4j 作为独立的 java 程序,并且它可以正常工作并给出文本输出。

现在我正在尝试创建一个 spring mvc web 项目,在 pom 中添加 tess4j 的依赖项,并且我已在我的项目中添加了 tess4j 源。

File imageFile = new File("D:/Data/jars/tess/eurotext.tif");    
Tesseract instance = Tesseract.getInstance(); // JNA Interface Mapping
        // Tesseract1 instance = new Tesseract1(); // JNA Direct Mapping
        try {
            result = instance.doOCR(imageFile);
            System.out.println(result);
        } catch (TesseractException e) {
            System.err.println(e.getMessage());
        }

当我尝试在项目内运行独立的 java 程序时,上面的代码可以正常工作。因此很明显,jar 文件已正确添加到构建路径。

但是当我调用控制器映射或服务中的代码时,它会引发运行时异常。

    SEVERE: Unsupported image format. May need to install JAI Image I/O package.
https://java.net/projects/jai-imageio/
java.lang.RuntimeException: Unsupported image format. May need to install JAI Image I/O package.
https://java.net/projects/jai-imageio/
    at net.sourceforge.vietocr.ImageIOHelper.getIIOImageList(ImageIOHelper.java:324)
    at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:173)
    at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:158)
    at com.ocr.tesseract.TesseractExample.getTextFromImage(TesseractExample.java:27)
    at com.cogz.tp.controller.HomeController.view(HomeController.java:51)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:214)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:748)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:931)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:822)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:807)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at java.lang.Thread.run(Thread.java:662)
java.lang.RuntimeException: Unsupported image format. May need to install JAI Image I/O package.
https://java.net/projects/jai-imageio/

请让我知道缺少什么。提前致谢。


即使我也遇到了类似的使用问题tess4j for DynamicWebProject。但感谢 @nguyenq 的评论帮助我,我让它工作了。 tess4j 大多数情况下使用 TIFF 处理程序进行光学识别。默认 ImageIO 不提供所需的依赖项。 因此,需要 jai-imageio.jar。我所做的只是添加了一行ImageIO.scanForPlugins()在我调用执行的包装类之前doOCR。 我的库中有以下罐子:-

tess4j.jar

jai_imageio.jar

Ghost4j-0.3.1.jar

jna.jar

junit-4.10.jar

这是示例代码:

TessractOCR tessocr = new TessractOCR();
        ImageIO.scanForPlugins();
        String extractedString = tessocr.extractTextFromImage(binarizrImage);

功能

public static String extractTextFromImage(BufferedImage image){
        RenderedImage img = image;

        String result =null;
        try {
            File outputfile = new File("saved.png");
       ImageIO.write(img, "png", outputfile);
        Tesseract instance = Tesseract.getInstance(); // JNA Interface Mapping
        instance.setDatapath("E:\\OCR-data\\Tess4J-1.2-src\\Tess4J");

        result = instance.doOCR(outputfile);


            System.out.println(result);

        } catch (Exception e) {
            System.err.println(e.getMessage());
        }
        return result;
    }

100%有效:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

tess4j 与 Spring mvc 的相关文章

随机推荐

  • 应用程序在 Expo-Go 中运行良好,但在 EAS-Build 后无法运行

    我有一个简单的应用程序 它使用 React navigation v6 它不使用任何其他重型第三方库 它的所有用途是反应导航 v6 它工作得很好Expo Go在开发过程中 但是当我使用以下命令构建开发 apk 时EAS构建它总是卡在加载屏幕
  • ggplot2:为每个 x 处的组值之和添加行

    假设我收集了 Stack Overflow 中的帖子 并将它们分为 N 个类别 我的目标是绘制每天的 N 百分比以及每天帖子总数的一条线 为了玩一下 我将使用一个玩具数据框 我可以绘制每天每个类别的百分比 data beav1 beav1
  • 如何将自定义 ModelValidatorProvider 添加到 Web API 项目?

    我正在将一些 MVC 代码移至 Web API 并且需要更新我的自定义 ModelValidatorProviders 似乎我的验证器可以保持大致相同 只是它们应该继承 System Web Http Validation 命名空间 我不知
  • Bootstrap 3.0 - 将元素推到底部

    我选择Twitter Bootstrap来快速构建应用程序显示层 最近我遇到了问题 我试图将元素推到页面容器的底部 但保持其居中 添加班级 push to bottom position absolute bottom 50px 没有帮助
  • Play / Scala JSON 格式

    我有一个接受的值类Either 我想生成 Play for Scala v2 5 6 JSONFormat for import org joda time DateTime Duration case class When when Ei
  • 为什么Spring任务调度程序要等待上一个任务完成?

    我有以下任务计划程序设置
  • 如何更改年龄不匹配的 PDB 以使其正确匹配?

    我们的夜间构建过程被破坏了很长一段时间 因此它生成的 PDB 文件与相应的图像文件的年龄相差几个小时 我已经解决了这个问题 但是 我想开始使用符号服务器 但由于必须使用这些年龄不匹配的 pdb 文件而无法开始 我通过使用 Windbg 中的
  • Reactive Banana的mapAccum函数是如何工作的?

    我在 Stack Overflow 上查看了一些问题的答案 试图找到解决我在使用 Reactive Banana 库时遇到的问题的方法 所有的答案都使用了一些magic使用我不太明白的 mapAccum 查看 API 文档 我发现的只是 高
  • 获取成员变量的大小

    如果有一个POD http en wikipedia org wiki Plain old data structure结构体 带有一些成员变量 例如这样 struct foo short a int b char c 50 有没有办法在不
  • 在 Ember.JS 应用程序中强制执行用户/身份验证状态的最佳方法

    正在开发我的第一个 EmberJS 应用程序 整个应用程序要求用户登录 我正在尝试强制用户现在 初始加载页面时 和将来 用户注销时 登录的最佳方式并且没有刷新 我已经处理了用户身份验证挂钩 现在我有一个 ember data 模型和关联的存
  • 将 jndi 数据源与 Spring Batch 管理一起使用

    使用 Spring Batch Admin 时 它尝试为 dataSource transactionManager 等提供一些默认值 如果你想覆盖这些默认值 你可以在下面创建你自己的 xml bean 定义META INF spring
  • Google App Engine Go 1.11 应用程序无法访问 Google Spreadsheets

    我正在尝试通过 API 从运行的应用程序访问谷歌电子表格Google App Engine Go 1 11 标准环境 https cloud google com appengine docs standard go111 不幸的是 应用程
  • 如何使用 igraph 或 tnet 在 R 中创建二分网络

    我有一个两种模式网络的边缘列表 类似于 person Event Amy football game Sam picnic Bob art show 我想在 R 中对此进行分析 但似乎我尝试的一切都失败了 将其转换为单模式网络会遇到内存限制
  • JSON.stringify,改变key的大小写

    我正在使用返回 json 的 Web 服务 并将 json 存储在本地变量中 json 表示一个简单的业务对象 例如 var entry FirstName John LastName Doe 大小写是这样的 因为根据我们的命名约定 它与
  • 使用 jQuery Ajax 将对象列表传递到 MVC 控制器方法

    我正在尝试使用以下方法将对象数组传递到 MVC 控制器方法中 jQuery 的 ajax 函数 当我进入 PassThing C 控制器方法时 参数 things 为空 我已经尝试过使用列表类型 的论点 但这也不起作用 我究竟做错了什么
  • Android NDK:无法解析函数 va_start / va_end

    我尝试在我的项目中使用 va start 和 va end 函数 但 eclipse 不想将其解析为函数 gcc 编译整个项目没有错误 我的文件 cpp include
  • PHP Soap Server 响应格式

    我正在 PHP 中制作 SOAP Web 服务 该服务必须满足客户端 XSD 文件的要求 以下是客户提供的 XSD 文件的链接 http pastebin com MX1BZUXc http pastebin com MX1BZUXc 他们
  • 从 Fluent Mongo 过渡到 Mongo C# 1.4 驱动程序

    我们正在使用 FluentMongo 现在 LINQ 支持已添加到 C 驱动程序中 我们将删除对 Fluent 的依赖并单独使用官方 C 驱动程序 有人已经这样做过吗 它简单明了吗 有什么需要我们注意的吗 希望其他人也能向您报告 但作为 1
  • 自定义 ng 服务来代理对 /api 的调用?

    我使用 ng CLI 创建了一个新应用程序 效果非常好 ng new babysteps cd babysteps ng serve ngserve 使用 webpack 来组装应用程序 为了充分测试它 我需要服务 api 来自我的 API
  • tess4j 与 Spring mvc

    我已经尝试将 tess4j 作为独立的 java 程序 并且它可以正常工作并给出文本输出 现在我正在尝试创建一个 spring mvc web 项目 在 pom 中添加 tess4j 的依赖项 并且我已在我的项目中添加了 tess4j 源