小编Adi*_*Adi的帖子

Tesseract - 错误net.sourceforge.tess4j.Tesseract - null

创建了一个使用Tesseract的java应用程序,以便将给定的图像或pdf转换为字符串格式,当在我的机器上运行它作为使用junit的单元测试时,它运行良好但运行完整系统时这是一个由tomcat运行的restFul API接收图像并运行Tesseract它给我以下错误:

23:22:36.511 [http-nio-9999-exec-3]错误net.sourceforge.tess4j.Tesseract - null java.lang.NullPointerException:null at net.sourceforge.tess4j.util.PdfUtilities.convertPdf2Png(PdfUtilities.java: 107)在net.sourceforge.tess.tess.tess上,net.sourceforge.tess4j.util.PdfUtilities.convertPdf2Tiff(PdfUtilities.java:48)at net.sourceforge.tess4j.util.ImageIOHelper.getIIOImageList(ImageIOHelper.java:343)at net.sourceforge.tess4j.Tesseract.doOCR (tesseract.java:213)位于com.tapd.server.api.handlers.IRSHandler的ocr.OcrUtil.getString(OcrUtil.java:54)的net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:197).在sun.reflect.NativeMethodAccessorImpl.invoke(未知来源)的sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法)的com.tapd.server.api.WebAPIService.updateParentIrsForm(WebAPIService.java:250)上的uploadIRSImage(IRSHandler.java:65) )atg.glassfish.jersey.server.model.internal.ResourceMethodInv中java.lang.reflect.Method.invoke(未知来源)的sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)位于org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher $ 1.run(AbstractJavaResourceMethodDispatcher.java:144)org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher的ocationHandlerFactory $ 1.invoke(ResourceMethodInvocationHandlerFactory.java:81).在org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider $ responseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160)org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch上调用(AbstractJavaResourceMethodDispatcher.java:161)在org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)的org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)org上的AbstractJavaResourceMethodDispatcher.java:99) org.glassfish.jersey.server.ServerRuntime $ 2.run(ServerR)中的.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)untime.java:309)org.glassfish.jersey.internal.Errors $ 1.call(Errors.java:271)org.glassfish.jersey.internal.Errors $ 1.call(Errors.java:267)at org.glassfish .gersey.internal.Errors.process(Errors.java:315)位于org.glassfish.jersey.internal.Errors.process(Errors.java:297)org.glassfish.jersey.internal.Errors.process(Errors.java) :267)位于org.glassfish.jersey的org.glassfish.jersey.jersey.服务器上的org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:292)的org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317). server.ApplicationHandler.handle(ApplicationHandler.java:1139)org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:460)org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:386)在Org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:334)org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationF ilterChain.java:230)org.apache上的org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)中的.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java) :198)org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108)org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:522)org.apache.catalina.core. org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)上的StandardHostValve.invoke(StandardHostValve.java:140)位于org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)的org org.apache.ca上的.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1110)atg.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)中的talina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349) at org.apache.coyote.AbstractProtocol $ ConnectionHandler.process(AbstractProtocol.java:785)org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1425)at org.apache.tomcat.util .net.SocketProcessorBase.run(SocketProcessorBase.java:49)位于org.apache.tomcat的java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知来源)的java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源). java.lang.Thread.run(2016年1月14日23:22:36,512)[错误] java.lang.NullPointerException

我的猜测是tessdata文件夹不在正确的位置,当打包到Jar并由tomcat运行时,它是错位的,但我无法弄清楚它应该位于何处,我已经仔细检查了所有Jars正确部署.

编辑:因此,当Tesseract在远程服务器(如AWS S3)上时,它似乎无法处理路径,所以问题是为什么?以及如何允许它使用S3的路径?(是的,文件是公开的)

java ocr tomcat tesseract tess4j

11
推荐指数
2
解决办法
2806
查看次数

标签 统计

java ×1

ocr ×1

tess4j ×1

tesseract ×1

tomcat ×1