java使用Tess4j 识别图片文字
程序员文章站
2022-04-15 14:38:06
...
最近在搞图片识别的功能,这里记录下进度
公司是希望自己做,不使用商业化的图片识别,于是我找到了开源的 tessreact ,目前只有它支持中文
经过几天的研究,发现这个东西基本都是通过安装软件,然后调用cmd 命令实现的,很是麻烦
我找到了tess4j ,tess4j 整合了tessreact的dll,只需要简单的几句话就可以运行了
如果你 打不开 tess4j 官网,那你就需要vpn了,目前国内的vpn服务都挂了,我给大家推荐 蓝灯(*)
下载好 tess4j 后 解压
创建maven项目 ,将tessdata放到项目根目录
在pom.xml 中引用
<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>3.2.1</version>
</dependency>
有点耐心,可能会很慢,tess4j 要引用的依赖包 很多
要识别中文,你还需要 下载中文语言包 ,chi_sim.traineddata
准备工作做完,创建一个java类,测试
File imageFile = new File("C:\\Users\\1\\Desktop\\其他\\IMG_1345.JPG");
ITesseract instance = new Tesseract(); // JNA Interface Mapping
// ITesseract instance = new Tesseract1(); // JNA Direct Mapping
instance.setLanguage("chi_sim");//添加中文字库
try {
String result = instance.doOCR(imageFile);
System.out.println(result);
} catch (TesseractException e) {
System.err.println(e.getMessage());
}
运行成功,但是 识别的好慢,要10多秒
有些人会出现下面的异常,其实我也出现了
Exception in thread "main" java.lang.UnsatisfiedLinkError: 找不到指定的模块。
at com.sun.jna.Native.open(Native Method)
at com.sun.jna.Native.open(Native.java:1759)
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:260)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:398)
at com.sun.jna.Library$Handler.<init>(Library.java:147)
at com.sun.jna.Native.loadLibrary(Native.java:412)
at com.sun.jna.Native.loadLibrary(Native.java:391)
at net.sourceforge.tess4j.util.LoadLibs.getTessAPIInstance(LoadLibs.java:81)
at net.sourceforge.tess4j.TessAPI.<clinit>(TessAPI.java:42)
at net.sourceforge.tess4j.Tesseract.init(Tesseract.java:367)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:280)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:212)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:196)
at com.xueyou.orc.Identify.main(Identify.java:13)
还有一种说法,tesseract-orc 中的 dll 在windos下是通过vc2013 编译的,需要你安装相应的工具包
我安了,没什么卵用
现在最大的问题是两个
1.中文训练好麻烦
2.识别时间太长
上一篇: 重写equal和hashCode方法,用集合去重对象
下一篇: Set的常用实现类源码分析