- 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/
我正在尝试使用 tesseract 来识别图像中的字符。这个图像是通过从另一个图像中抓取字符并将它们放在新图像中的一行来创建的。问题是,当我将这张图片提供给 tesseract 时,它在输出中没有显示
使用创建聚类数据时 mftraining -F font_properties -U unicharset -O lan.unicharset *.tr 我收到以下消息 C:\Users\ \AppD
我是 tesseract 的新手,对 github 页面中的不同目录有点困惑。 tesserac-ocr 代码库是我安装的。在/usr/local/share/tessdata/中安装了一个 tess
我找不到详细的文档,也没有浏览源代码的感觉。例如,如果 Tesseract 引擎已经完成,我不想重做精明的边缘检测。 最佳答案 本文档提供了引擎的概述:https://github.com/tesse
我对 Tesseract OCR 完全陌生。这个问题可能很简单,但我似乎无法使用 Google 找到答案。 基本上,我有一个包含两部分的图像:第一部分位于图像的顶部,黑色背景和白色文本;第二部分位于图
我浏览了整个 Google 代码网站,但没有找到任何从 API 角度解释如何使用 Tesseract 的内容。有人知道在哪里可以找到这个吗? 最佳答案 最新文档现已发布 here 和 here 。 关
我可以通过命令行使用 tesseract 4.0 获得单词级别的置信度分数。有兴趣知道是否也有办法让角色自信。 对于单词级别的置信度,使用以下命令: tesseract [Image name] ou
TL;DR It appears that tesseract cannot recognize images consisting of a single digit. Is there a wor
所以我已经研究这个问题一段时间了,虽然其他人也有类似的问题,但对我来说没有任何作用: 我正在尝试将 pytesseract 用于项目,并将其安装在 User/Environments/testEnv/
我正在考虑使用 Tesseract 来处理 PDF 文件,因此我想使用该库而不是外部可执行文件。 我首先下载完整的 Tesseract 源代码并考虑构建它。遗憾的是,标准源没有任何方法可以在非 Lin
是否可以使用 Tesseract-OCR 获取已识别字符的字体,即它们是 Arial 还是 Times New Roman,无论是从命令行还是使用 API。 我正在扫描可能具有不同字体的不同部分的文档
我试图让 Tesseract(使用 Tess4J 包装器)仅匹配特定模式。该模式是连续四位数字,我认为是\d\d\d\d。这是我正在提供 tesseract 的图像的一个非常小子集(平面图受到限制
我不是 100% 确定 Java api 包 Tess4J 中 Tesseract 和 Tesseract1 对象的区别,任何人都可以解释一下吗? 我知道 Tesseract 使用接口(interfa
我正在测试 Hololens 中的一些功能。想知道是否可以在 Hololens 中使用任何对象检测/文本识别功能? 最佳答案 Hololens 1 本身不支持对象检测,您需要使用第三方代码。 Open
我正在尝试为 Tesseract 4.0 创建训练数据来识别屏幕截图中的图标(例如,评论,分享,保存)。这是示例屏幕截图: 我想微调 Tesseract 以实现如下输出: 喜欢147 评论 29 已保
我想知道Tesseract OCR使用的配置文件接受哪些参数,如何编写配置文件等 我在 their site 上找不到任何有关此内容的文档。如何确定支持哪些参数及其含义? 最佳答案 Tesseract
我正在尝试为 Tesseract 4.0 创建训练数据来识别屏幕截图中的图标(例如,评论,分享,保存)。这是示例屏幕截图: 我想微调 Tesseract 以实现如下输出: 喜欢147 评论 29 已保
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 6 年前。 此帖于11个月前编辑提交审核,
我正在尝试设置 tessedit_write_images但似乎做不到,我在任何地方都看不到 tessinput.tif 我正在做: import tesseract api = tesseract.
使用tesseract-ocr#3.02.02。 tesseract的基本用法是 tesseract sourc.png result 生成 和result.txt。要获取结果文本,我必须 cat 这
我是一名优秀的程序员,十分优秀!