2017-10-13 7 views
0

Je travaille sur une application utilisant Java Sprint avec Maven dans Eclipse.Impossible de faire tesseract fonctionne sur Centos7

Je fais des tesseract sur ma machine dev sous Windows (oui, je sais ...) mais quand j'ai essayé de déployer l'application sur le serveur qui est un Centos 7, j'obtiens quelques erreurs et l'application cesse de fonctionner. ..

pom.sml

<dependency> 
    <groupId>org.bytedeco.javacpp-presets</groupId> 
    <artifactId>tesseract-platform</artifactId> 
    <version>3.04.01-1.3</version> 
</dependency> 

Mon code:

BytePointer outText; 
       TessBaseAPI api = new TessBaseAPI(); 

       if (api.Init(ResourcesLocation.getTestData(), "spa") != 0) { 
        System.err.println("Could not initialize tesseract."); 
        response.setSuccess(false); 
        response.setCode(CodeList.EXCEPTION); 
       } 
       else{ 
        // Open input image with leptonica library 
        PIX image = pixRead(file); 
        api.SetImage(image); 
        // Get OCR result 
        outText = api.GetUNLVText(); 

        data = this.cleanData(outText.getString().split("\\r?\\n")); 
        // Destroy used object and release memory 
        api.End(); 
        outText.deallocate(); 
        pixDestroy(image); 
       } 
       api.close(); 

Et lors de l'exécution je reçois:

Estado HTTP 500 – Internal Server Error 

Tipo Informe de Excepción 

mensaje Handler processing failed; nested exception is java.lang.ExceptionInInitializerError 

descripción El servidor encontró un error interno que hizo que no pudiera rellenar este requerimiento. 

excepción 

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.ExceptionInInitializerErrororg.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWithError(DispatcherServlet.java:1302)org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:977)org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:969)org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:871)javax.servlet.http.HttpServlet.service(HttpServlet.java:661)org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845)javax.servlet.http.HttpServlet.service(HttpServlet.java:742)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)com.invoicebox.security.JWTTokenAuthFilter.doFilterInternal(JWTTokenAuthFilter.java:157)org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121)org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
causa raíz 

java.lang.ExceptionInInitializerErrorjava.lang.Class.forName0(Native Method)java.lang.Class.forName(Class.java:348)org.bytedeco.javacpp.Loader.load(Loader.java:585)org.bytedeco.javacpp.Loader.load(Loader.java:530)org.bytedeco.javacpp.tesseract$TessBaseAPI.<clinit>(tesseract.java:3648)com.invoicebox.services.InvoiceServiceImpl.importInvoice(InvoiceServiceImpl.java:350)com.invoicebox.services.InvoiceServiceImpl.save(InvoiceServiceImpl.java:1422)sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)java.lang.reflect.Method.invoke(Method.java:498)org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208)com.sun.proxy.$Proxy1573.save(Unknown Source)com.invoicebox.controller.InvoiceController.save(InvoiceController.java:138)sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)java.lang.reflect.Method.invoke(Method.java:498)org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:222)org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:814)org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:737)org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:969)org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:871)javax.servlet.http.HttpServlet.service(HttpServlet.java:661)org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845)javax.servlet.http.HttpServlet.service(HttpServlet.java:742)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)com.invoicebox.security.JWTTokenAuthFilter.doFilterInternal(JWTTokenAuthFilter.java:157)org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121)org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
causa raíz 

java.lang.NullPointerExceptionorg.bytedeco.javacpp.Loader.cacheResource(Loader.java:334)org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:772)org.bytedeco.javacpp.Loader.load(Loader.java:604)org.bytedeco.javacpp.Loader.load(Loader.java:530)org.bytedeco.javacpp.lept.<clinit>(lept.java:10)java.lang.Class.forName0(Native Method)java.lang.Class.forName(Class.java:348)org.bytedeco.javacpp.Loader.load(Loader.java:585)org.bytedeco.javacpp.Loader.load(Loader.java:530)org.bytedeco.javacpp.tesseract$TessBaseAPI.<clinit>(tesseract.java:3648)com.invoicebox.services.InvoiceServiceImpl.importInvoice(InvoiceServiceImpl.java:350)com.invoicebox.services.InvoiceServiceImpl.save(InvoiceServiceImpl.java:1422)sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)java.lang.reflect.Method.invoke(Method.java:498)org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208)com.sun.proxy.$Proxy1573.save(Unknown Source)com.invoicebox.controller.InvoiceController.save(InvoiceController.java:138)sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)java.lang.reflect.Method.invoke(Method.java:498)org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:222)org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:814)org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:737)org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:969)org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:871)javax.servlet.http.HttpServlet.service(HttpServlet.java:661)org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845)javax.servlet.http.HttpServlet.service(HttpServlet.java:742)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)com.invoicebox.security.JWTTokenAuthFilter.doFilterInternal(JWTTokenAuthFilter.java:157)org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121)org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
nota La traza completa de la causa de este error se encuentra en los archivos de diario del servidor. 

J'ai installé Tesseract et Leptonica suivant this example (mais j'ai changé le lenguage pour l'espagnol)

Ce que je peux obtenir à partir de là que l'application se bloque lorsque vous faites:

TessBaseAPI api = new TessBaseAPI(); 

Répondre

1

la solution finale pour ceci, était d'exécuter une commande de l'application Java afin d'exécuter tesseract y compris les paramètres dessire, et écrire le résultat sur un fichier texte. Après cela, l'application Java a lu le fichier texte et c'est tout!

Aucune API, aucune bibliothèque externe, aucun problème ...