问题标签 [tess4j]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1880 浏览

java - 如何在 tess4j 中关闭字典?

我的 tess4j OCR 应用程序中字符识别的准确率非常低。我听说关闭 tess4j 中的字典会通过识别单个字符来提高准确性。但我不知道该怎么做。有人知道如何在 tess4j 中关闭字典吗?

0 投票
1 回答
1368 浏览

pdf - Tess4J doOCR() for *First Page* of pdf / tif

有没有办法告诉 Tess4J 只 OCR 一定数量的页面/字符?

我可能会使用200 多页 PDF,但我真的只想对第一页进行 OCR,如果那样的话!

据我了解,常见的样本

将尝试将整个 200 多个页面OCR转换为单个字符串。

对于我的特殊情况,这比我需要做的要多得多,我担心如果我让它完成所有 200 多页然后只完成前 500 页左右可能需要长时间。substring

0 投票
4 回答
12677 浏览

pdf - Tess4J - 在资源路径中找不到本机库 (linux-x86-64/libtesseract.so)

我正在使用 Tess4J(围绕 tesseract 的 JNA 包装器),并尝试tess.doOCR(myFile)从单页 PDF 调用 OCR 文本。

我安装了 GhostScript(通过使用yum install ghostscript),gs -h工作正常。

我的应用程序服务器正在使用64-bit JVM,我有gsdll64.dll,和 64 位 tesseract dllliblept168.dlllibtesseract302.dll在类路径中。

tess.doOCR(myFile)调用时,将记录以下内容:

但它只是停在那里。该程序不再进行。

更新 -

看起来真正的问题来自这个错误:

java.lang.UnsatisfiedLinkError: Unable to load library 'tesseract': Native library (linux-x86-64/libtesseract.so) not found in resource path

环顾四周后,我没有找到一个方便的地方来找到这个libtesseract.so文件,而且我不确定如何将这个文件放到我的 Linux 应用服务器上。我读到也许我需要下载一些 C++ 运行时,但我没有看到 Linux 下载。任何建议将不胜感激。

还是这与符号链接有关?

0 投票
1 回答
483 浏览

java - 来自 ImageMagick (JMagick) 的饲料 tesseract (Tess4J)

我正在尝试创建一个可以对多种格式的图像进行 OCR 的 Java 程序。图像不能直接从文件中读取,因为它们的字节要通过网络发送。

我目前能够使用 ImageIO 读取图像像素的原始字节。但是我想支持 ImageMagick 支持的所有格式,所以使用 JMagick 读取图像,然后将原始字节提供给 Tess4J。我不确定我应该如何处理这个问题。我发现这个函数可以给我字节:

但是我必须编写特殊的方法来将获得的 PixelPacket 对象转换为连续字节。我可以做到这一点,但也许有更好的方法来做到这一点?例如,我可以在这种方法中使用一些非常原始的文件格式(甚至比http://en.wikipedia.org/wiki/BMP_file_format#mediaviewer/File:BMPfileFormat.png还要多):

imageInfo对象必须指向这种原始格式,然后我可以从bytes数组中删除像素信息。

这是正确的方法还是我应该使用更简单(更快/更健壮)的东西?

编辑

我发现我想到的格式称为PNM

0 投票
1 回答
913 浏览

java - 拦截源自 Tess4J 的控制台输出

我试图拦截Empty page!!使用Tess4J. 我写了一个简短的拦截器类,它覆盖printprintln替换stdoutstderr检查这个字符串:

我测试了这个类:它可以工作并抑制Empty page!!我写的任何内容stdoutstderr. 我没有成功地捕捉到以红色打印到我的控制台的Empty page!!消息。Tess4J我的问题:我怎样才能拦截和抑制这条消息?

谢谢一堆。

截图 Eclipse

0 投票
2 回答
1986 浏览

java - OCR Tesseract - Tess4J 行为怪异

我正在尝试从图像中提取文本。问题是我正在使用下面给定的代码来处理图像并打印提取的文本。

当我使用 main 方法时,OCR 引擎工作得很好并且提取了文本。但是当我试图将此主要方法转换为名为“extractText()”的方法并尝试从另一个类调用它时,它会抛出异常:

我不知道这有什么问题。我使用与硬编码文件名完全相同的代码。只是方法变了。

这太令人沮丧了。有人可以帮忙吗。

0 投票
0 回答
190 浏览

java - Tess4J 未在 32 位 JVM 中运行

我在让 tess4j 在 32 位 jvm 环境中工作时遇到问题。奇怪的是,它适用于 64 位,但不适用于 32 位(与其他人似乎面临的问题相反)。

我在根目录中创建了一个 lib 文件夹并将 dll 放在其中。

我也尝试将 dll 放在根目录中,但没有成功。我试图从带有 32 位 jvm 的 32 位 ide 运行它,但仍然没有运气。

我会按原样使用 64 位,但我需要使用另一个只能在 32 位环境中工作的库。

我将不胜感激对此的任何意见。

谢谢

0 投票
1 回答
2327 浏览

java - 在 Linux 中使用 tess4j 部署 Web 应用程序

我必须在存储在数据库中的文档中进行搜索,这些文档中有图像,所以我使用 tess4j 来读取这些图像。在带有 Eclipse 的 Windows 中,该项目在 tess4j 上运行良好,如果我在 windows7 中的 tomcat 6.35 中部署应用程序,项目运行良好,我可以使用 tess4j 正确搜索。sous windows 1)我在tomcat lib/shared中添加jar文件2)tessdata和dll文件在存储库中,我在项目中调用它们。

在linux环境中我做同样的事情,我得到的第一个错误是

我将 libtesseract.so 和 tessdata 添加到此路径,现在出现另一个错误:

java.lang.UnsatisfiedLinkError:查找函数“TessBaseAPICreate”时出错:/usr/lib/libtesseract.so.3.0.2:未定义符号:com.sun.jna.Function.(Function.java:208) 处的 TessBaseAPICreate。 sun.jna.NativeLibrary.getFunction(NativeLibrary.java:536) 在 com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:513) 在 com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:499) 在 com .sun.jna.Library$Handler.invoke(Library.java:199) at com.sun.proxy.$Proxy5.TessBaseAPICreate(Unknown Source) at net.sourceforge.tess4j.Tesseract.init(Unknown Source) at net.sourceforge .tess4j.Tesseract.doOCR(Unknown Source) at net.sourceforge.tess4j.Tesseract.doOCR(Unknown Source) at net.sourceforge.tess4j.Tesseract.doOCR(Unknown Source) at org.coin.bean.ged.Tess4j.extractTextFromImage (Tess4j.java:55) 在 org.org.coin.bean.ged.searchlucene.setKeyword(searchlucene.java:40) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun 的 coin.bean.ged.IndexDocument.CreateIndex(IndexDocument.java:158)。 reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.directwebremoting.impl .ExecuteAjaxFilter.doFilter(ExecuteAjaxFilter.java:34) at org.directwebremoting.impl.DefaultRemoter$1.doFilter(DefaultRemoter.java:428) at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:431) at org.directwebremoting .impl.DefaultRemoter.execute(DefaultRemoter.java:283) 在 org.directwebremoting.servlet.PlainCallHandler.handle(PlainCallHandler.java:52) 在 org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:101) 在 org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:146) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java :637) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 在 org.apache.catalina.core.ApplicationFilterChain。 doFilter(ApplicationFilterChain.java:206) 在 org.coin.servlet.filter.PreventInjectionFilter.doFilter(PreventInjectionFilter.java:30) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 在 org.apache .catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.apache.catalina.core.StandardWrapperValve。在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 调用(StandardWrapperValve.java:233) .catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java :293) 在 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) 在 org.apache.tomcat 的 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)。 util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 在 java.lang.Thread.run(Thread.java:745) - --Erroring: batchId[7] message[java.lang.UnsatisfiedLinkError:查找函数“TessBaseAPICreate”时出错:/usr/lib/libtesseract.so.3.0.2:未定义符号:TessBaseAPICreate]

0 投票
1 回答
2146 浏览

java - 如何在 Tess4j 中访问多个 .traineddata 文件?

我将 Tess4j 与 java 一起使用,我需要一次访问多个 .traineddata 文件。我已经训练了 tesseract 来创建我自己的 .traineddata 文件,并将它们与 Tess4j 包附带的默认 .traineddata 文件一起保存。默认情况下,在执行 OCR 时会访问 eng.traineddata 文件。如何使用 Tess4j 一次访问多个 .traineddata 文件?

0 投票
1 回答
693 浏览

eclipse - 如何在构建 JAR 时添加 DLL - Eclipse

我制作了一个 OCR 应用程序,它将图像文件转换为 Doc 文件,使用 Tesseract 作为其 OCR 引擎。我为此使用了 Tess4j JNA Wrappers。在制作应用程序时,我将 dll 文件和语言数据(tessdata)放在项目的 bin 文件夹中,应用程序运行良好。现在,当我构建项目时,dll 文件和 tessdata 不包含在 JAR 中,因此程序无法正常工作。我尝试了两种导出方式

**1。将所需的库打包到生成的 JAR 中**

我在与 JAR 文件相同的目录中添加了 DLL 文件和 Tessdata。但它没有运行。

http://i.imgur.com/cGwiVFC.png

它给了我以下错误

**2。在生成的 JAR 旁边的子文件夹中复制所需的库 **

在这里,我也将 dll 文件和 tessdata 文件夹复制到了与 JAR 文件相同的目录中。(如果我将其复制到包含库的子文件夹中,它甚至找不到 DLL 文件。)

http://i.imgur.com/7ShF3Ev.png

给出的错误是:

所以主要问题似乎是找到 Tessdata 文件夹不是很容易,尽管找到了 dll。我很好奇的另一件事是为什么在这两种情况下异常堆栈都有一些变化(这似乎不寻常,因为两者都有相同的代码并且面临相同的问题,只是包装有点不同。)

编辑1:

即使我将 dll 和 tessdata 从 bin 删除到另一个文件夹并将其添加为 Java Build Path -> Libraries 中的外部类文件夹,它也不起作用。如果我这样做,那么我会得到与未找到 tessdata 相同的错误(在应用程序本身中)。

编辑2:

这就是设置为我的数据路径的内容。也许以某种方式更改它可能会修复错误?

抱歉,如果帖子中有一些格式问题。StackOverflow Ask a question 没有显示任何预览或现在没有格式化按钮。如果稍后显示时出现问题,将对其进行编辑:)

-肖里亚