- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
创建了一个使用 Tesseract 的 java 应用程序,以便将给定的图像或 pdf 转换为字符串格式,当它在我的机器上作为使用 junit 的单元测试运行时它运行得很好但是当运行完整的系统时它是一个 restFul API由接收图像并运行 Tesseract 的 tomcat 运行,它给我以下错误:
23:22:36.511 [http-nio-9999-exec-3] ERROR net.sourceforge.tess4j.Tesseract - null java.lang.NullPointerException: null at net.sourceforge.tess4j.util.PdfUtilities.convertPdf2Png(PdfUtilities.java:107) at 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) at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:197) at ocr.OcrUtil.getString(OcrUtil.java:54) at com.tapd.server.api.handlers.IRSHandler.uploadIRSImage(IRSHandler.java:65) at com.tapd.server.api.WebAPIService.updateParentIrsForm(WebAPIService.java:250) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161) at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99) at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389) at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347) at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102) at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:309) at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) at org.glassfish.jersey.internal.Errors.process(Errors.java:315) at org.glassfish.jersey.internal.Errors.process(Errors.java:297) at org.glassfish.jersey.internal.Errors.process(Errors.java:267) at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317) at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:292) at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1139) at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:460) at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:386) at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:334) at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:522) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1110) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:785) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1425) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Unknown Source) [2016-09-14 23:22:36,512] [ERROR] java.lang.NullPointerException
我的猜测是 tessdata 文件夹不在正确的位置,当打包到 Jar 中并由 tomcat 运行时,它放错了位置,但我无法弄清楚它应该位于何处,我已经仔细检查以查看所有 Jar 都已正确部署。
编辑:所以当 Tesseract 在远程服务器(如 AWS S3)上时,它似乎无法处理路径,所以问题是为什么?以及如何允许它使用来自 S3 的路径? (是的,文件是公开的)
最佳答案
我的猜测是没有正确记录 GhostscriptException,这会导致 NullPointerException:
106 } catch (GhostscriptException e) {
107 logger.error(e.getCause().toString(), e);
108 } finally {
第 107 行 - e.getCause()(可能)为 null,调用 null.toString() 会抛出 NPE。
(来自规范 - getCause 可以为空: https://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html#getCause() ,GhostscriptException 也允许原因为空:http://grepcode.com/file/repo1.maven.org/maven2/org.ghost4j/ghost4j/1.0.0/org/ghost4j/GhostscriptException.java )
要验证这个答案(无需重新编译整个 tess4j),您可以在 Debug模式下启动您的程序并在第 107 行放置一个断点。这将为您提供有关真正异常的信息。
关于java - Tesseract - 错误 net.sourceforge.tess4j.Tesseract - 空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39504263/
我已经下载了 tess-two然后我已将所有内容从该位置导入到我的项目中。编译 *.so 文件并尝试在我的手机上运行它,如下所示: TessBaseAPI baseApi = new Tess
我的应用程序中的 OCR 非常慢 我怎样才能加快我的申请 代码执行时出现错误 这是我的OCR代码 public class ProcessImage extends AsyncTask { S
我正尝试按照本教程构建 tess-two 库: http://www.codeproject.com/Tips/840623/Android-Character-Recognition在 Window
我正在尝试使用 tess-two 库来识别图像中的文本。 这是我的代码: load.setOnClickListener(new View.OnClickListener() {
我正在开发一款在 Android 上使用 OCR 的应用。 tess-two 示例工作得很好,我可以获得完整的 OCR 文本,但我想知道如何在 Tesseract 实际输出的框中获取单个单词。我可以使
我正在使用 tess-two用于在我的 android 应用程序中实现 OCR 的库。我使用的代码是: BitmapFactory.Options options = new BitmapFactor
我试图重建一个包含 tess-two 作为库的 android 应用程序。按原样使用时,出现此错误 java.lang.NoSuchFieldError: no field with name='mN
我已经下载了这个项目:https://github.com/jhansireddy/AndroidScannerDemo它使用 OpenCV 并且工作完美,它所做的是扫描用手机相机(或从画廊)拍摄的照
我正在尝试使用 android studio 从 tess-two 项目构建 eyes-two。我做了ndk构建安卓 ... Ant 释放tess-two 和 eyes-two 的东西,导入的 eye
我目前正在尝试按照 https://github.com/rmtheis/tess-two 上的说明通过命令行为 OCR android 应用程序构建 tess-two .这是在我的 macbook
我在 Windows 上工作 我想在 Android 应用程序中使用开源 tess-two 项目进行图像处理 - https://github.com/rmtheis/tess-two . 现在,根据
我正在尝试使用 tess-two 为 OCR 运行演示应用程序,但我遇到了代码问题: 我已按照以下步骤操作: 首先,我从这里下载并安装了 ndk https://developer.android.c
我想从位图中提取数字。我正在使用 tess-two 库,但它无法正确识别。 示例代码: @Override public void onClick(View v) {
在正在进行的项目中使用 OCR 作为模块。在深入研究了一个星期之后,我认为我应该在 eclipse 上运行一个测试应用程序,看看它的工作原理有多准确。我发现 tess-two 是 tesseract
我的 Android 应用程序具有使用 tess-two 库的 OCR 功能。我在阅读包含“fi”的字符串时遇到了这个问题。通过baseApi.getUTF8Text()方法获取OCR识别的文本后,"
我有一个带有返回对象的 TessBaseAPI() 对象。我想用边界框提取单词,但似乎无法正常工作。 val Text = tesseract.getUTF8Text() 给我文本。 val Word
我正在为 android tess-two https://github.com/rmtheis/tess-two 使用流行的 OCR tessercat 分支。我整合了所有的员工,它起作用了等等..
我今天一直在尝试将 Tesseract 库包含到我的 Android 项目中。 根据我的发现,我做了以下事情: 1) 从 gooogle git 下载 tess-two,2) 使用 NDK 构建3)
我使用以下函数通过 Tesseract OCR 的 Android 分支 Tess-Two 执行离线 OCR: private String startOCR(Uri imgUri) { tr
长话短说:我想用 Python 将 Gaia 天体测量数据绘制成 TESS 图像。怎么可能? 详细版本见下文。 我有 64x64 像素 TESS盖亚 ID 为 4687500098271761792
我是一名优秀的程序员,十分优秀!