我在Java OCR
中使用Tesseract
进行了Mirth
项目。当我从Mirth运行jar文件时,我收到此错误。当我搜索它时,我发现那里是一个init()方法,它也是Tesseract.java中的受保护的void。我想也许这就是出错的原因。
我该怎么办?非常感谢你的帮助。
package Tess4jTest;
import java.io.File;
import java.io.IOException;
import net.sourceforge.tess4j.*;
public class TestTess {
public static String Tc;
public static String phone;
public static String date;
public static void main(String[] args) {
//System.out.println(returnText("C:\\Users\\Nevzat\\Desktop\\deneme.pdf"));
}
public static String returnText(String fileName){
File imageFile = new File(fileName);
if(imageFile.exists()){
Tesseract instance = new Tesseract();
instance.setDatapath("C:\\imageRAD\\Onam\\tessdata");
String result = null;
try {
result = instance.doOCR(imageFile);
} catch (TesseractException e) {
System.err.println(e.getMessage());
}
if(result!=null){
int i=result.indexOf("Numarasn: ");
int j=result.indexOf("Tel No:");
int k=result.indexOf("Bilgllendirme Tarihl:");
Tc = result.substring(i+10, i+21);
phone = result.substring(j+8,j+23);
date = result.substring(k+22,k+32);
//System.out.println(result);
}else{
return "Null Error!";
}
}else{
return "Does not found a file!";
}
return Tc+","+phone+","+date;
}
public static String returnTC() throws IOException{
return Tc;
}
public static String returnPhone() throws IOException{
return phone;
}
public static String returnDate() throws IOException{
return date;
}
}
答案 0 :(得分:1)
当您尝试使用私有构造函数创建对象时,会出现错误。 (<init>()
是没有参数的构造函数的名称)
查看tess4j
来源,我找到了一个包含以下文档的方法:
- @deprecated从版本2.0开始,使用默认构造函数。
查看2.0之前的源代码显示默认构造函数是私有的。
这意味着您的问题很可能是您针对的是2.0以上的版本进行编译,但您的环境运行的是早于2.0的版本。
更新您的环境或降级您构建的库以进行修复。
答案 1 :(得分:0)
我解决了错误并完成了项目。我一步一步提到
1.您必须为tess4j使用正确的jar文件。
2.通过构建路径在tess4j-3.2.1.zip中添加除tess4j-3.2.1.jar之外的所有java项目。
3.从this
添加tess4j-1.5.jar4.添加
tessdata
文件夹,ghost4j-0.5.1.jar
,jna-4.1.jar
,tess4j.jar
和java项目的jar文件。