当前位置: 首页 > 知识库问答 >
问题:

tesseract-error net.sourceforge.tess4j.tesseract-null

夹谷浩博
2023-03-14

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

我的猜测是,tessdata文件夹不在正确的位置,当打包到一个Jar中并由tomcat运行时,它被放错了位置,但我无法确定它应该位于何处,并且我已经仔细检查了所有Jar的部署是否正确。

编辑:所以当它在html" target="_blank">远程服务器(如AWS S3)上时,似乎Tesseract无法处理路径,所以问题是为什么?我如何允许它使用来自S3的路径?(是的,文件是公开的)

共有1个答案

宿建本
2023-03-14

我的猜测是,GhostscriptException没有正确记录,这会导致NullPointerException:

https://github.com/nguyenq/tess4j/blob/212d72bc2ec8b3a4d4f5a18f1eb01a0622fc5521/src/main/java/net/sourceforge/tess4j/util/pdfutilities.java#l107

106        } catch (GhostscriptException e) {
107            logger.error(e.getCause().toString(), e);
108        } finally {

在第107行中-e.getCause()(可能)为null,调用null.toString()将抛出NPE。

(从规范来看-getCause可以为null:https://docs.oracle.com/javase/7/docs/api/java/lang/throwable.html#getCause(),GhostscriptException也允许原因为null:http://grepcode.com/file/repo1.maven.org/maven2/org.ghost4j/ghost4j/1.0.0/org/ghost4j/GhostscriptException.java)

为了验证这个答案(无需重新编译整个tess4j),您可以在调试模式下启动程序,并在第107行放置一个断点。这将为您提供有关真正异常的信息。

 类似资料:
  • Tesseract OCR 该软件包包含一个OCR引擎 -  libtesseract和一个命令行程序 -  tesseract。 Tesseract 4增加了一个基于OCR引擎的新神经网络(LSTM),该引擎专注于线路识别,但仍然支持Tesseract 3的传统Tesseract OCR引擎,该引擎通过识别字符模式来工作。通过使用Legacy OCR Engine模式(--oem 0)启用与Te

  • Python-tesseract 是 Tesseract OCR 的 Python 封装包,可作常用的图片文件读取和解码。 示例代码: import cv2.cv as cv import tesseract api = tesseract.TessBaseAPI() api.Init(".","eng",tesseract.OEM_DEFAULT) api.SetPageSegMode(tess

  • Tesseract OCR iOS 是个 iOS5+ 框架,支持 armv7s 和 arm64 编译。 Tesseract 可能是最精确的开源 OCR 引擎,结合 Leptonica 图像处理库可以查看大量的图像格式,支持超过 60 种语言的文本转换。

  • 我为iOS写了一个数字OCR。我有一个测试图像png与两位数5和4。我找到轮廓了。我如何在Tesseract转乘等高线? 初始化tesseract: 用于检测轮廓的函数: GitHub项目链接:https://github.com/maxpatsy/iorc

  • 想要一个OCR在android中运行的例子,我做了一些研究,找到了一个在android中实现OCR的例子。 https://github.com/rmtheis/tess-two,里面有三个项目文件... 我已经通过导入三个项目文件执行了“tess-two-test”项目,但是“tess-two-test”不包括任何活动,所以它不会运行。 有谁能一步一步地给我解释这个功能吗

  • 我正在尝试在 C 应用程序中使用镶嵌,但我无法让它在可视化工作室中运行。我收到几个“错误LNK2001:未解析的外部符号”,我相信这是因为Visual Studio找不到我试图使用的dll。我已经完成了在VC中使用镶嵌OCR中详细介绍的所有内容。所有 tesseract 库都链接在正确的位置,但仍然无法使其正常工作。这是我的代码的样子: 编辑:这是我收到的完整错误消息: 1. 1. 1. 1. 1