直接引用maven测试报错

主要原因是引入不了dll

java.lang.UnsatisfiedLinkError: 找不到指定的模块。at com.sun.jna.Native.open(Native Method)at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:288)at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:427)at com.sun.jna.Library$Handler.<init>(Library.java:179)at com.sun.jna.Native.loadLibrary(Native.java:569)at com.sun.jna.Native.loadLibrary(Native.java:544)at net.sourceforge.tess4j.util.LoadLibs.getTessAPIInstance(LoadLibs.java:85)at net.sourceforge.tess4j.TessAPI.<clinit>(TessAPI.java:42)at net.sourceforge.tess4j.Tesseract.init(Tesseract.java:427)at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:223)at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:195)at TestOcr.main(TestOcr.java:23)

官网

http://tess4j.sourceforge.net/

下载包

https://sourceforge.net/projects/tess4j/

下载解压后截图

lib 包下面有 libtesseract3051.dll

将这个文件放到 目录 C:\Windows\System32 下面

这是个老版本, 实际上应该安装

参考 https://blog.csdn.net/gs80140/article/details/103938651

安装后,使用java程序调用就可以了???

在Linux使用了3.4.8的版本报乱码, 换新版本试试, 新版本 411的也一样的问题

一堆问题, 跑通了得到的文字也是乱的, 没有的文字乱七八糟的文字都出来了, 但是使用原生的 Tesseract 命令行解析出来的文字就还可以, 一直处在奔溃的边缘,但是没有放弃, 看到了一个easyocr的项目

https://github.com/ushelp/EasyOCR

不过此项目已经找不到开源的代码了,号称很厉害, 于是搜索了以前的旧的代码

https://github.com/HighCWu/EasyOCR 这个是找回的历史版本, 在这个版本中看到了 maven依赖, 于是立即尝试

<dependency><groupId>cn.easyproject</groupId><artifactId>easyocr</artifactId><version>3.0.4-RELEASE</version>
</dependency><dependency><groupId>cn.easyproject</groupId><artifactId>easyocr-linkbold-plugin</artifactId><version>3.0.3-RELEASE</version>
</dependency>参考代码EasyOCR e=new EasyOCR();
//直接识别图片内容
System.out.println(e.discern("images/demo_eurotext.png"));  直接报错, 但是分析一下源码发现,原来这个项目也是使用的下面的代码还没有尝试过, 下面的代码应该可以使用, 原理已经掌握, 就是调用命令嘛, 这个也是我期望的结果EasyOCR ocr = new EasyOCR();System.out.println("###### 中文会议通知内容识别 ######");
ocr.setAmendPath("amend_chi.txt"); // 中文识别修正
ocr.setLanguage(Language.CHI_SIM); // 中文语言
String res=ocr.discern("images/bank/notice.tif");
System.out.println(res);System.out.println("###### 多语言混合识别 ######");
ocr.setLanguage(Language.multiLanguage(Language.ENG,Language.CHI_SIM)); // 多语言识别
String res2=ocr.discern("images/bank/bill2.tif");
System.out.println(res2);System.out.println("###### 基于ETD模板的中文银行票据识别 ######");
ocr.setLanguage(Language.CHI_SIM); // 中文识别
ocr.setTextMode(TextMode.UNIFORM_TEXT); // 统一大小
List<String> res3=ocr.discernByTemplate("images/bank/bill3.jpg", "images/bank/bill.etd", ImageType.BILL_NORMAL);
System.out.println(res3);System.out.println("###### 带图片的清理数字内容识别 ######");
ocr.setLanguage(Language.ENG); // 英文识别
ocr.setCharList("0123456789"); // 字符限定API
ocr.setTextMode(TextMode.SINGLE_LINE_TEXT); // 单行文本识别
String res4=ocr.discernAutoCleanImage("images/bank/example4.jpg",ImageType.TEXT_BOLD_BLAK);
System.out.println(res4);

经过上面的分析,开始写代码,直接调用命令, 这个命令的调用, windows机器,Linux机器分别安装最新版本的Tesseract并且确保在命令行里面能直接使用命令 tesseract ,语言包也相应放对位置即可

分享一下直接调用命令的程序, 再次感谢EasyOCR的启发, tess4j的乱码问题留待以后吧, 直接调用命令的效率还是挺快的, 比用tess4j快多了, 在windows机器上, 识别一个图片,tess4j要10几秒, 命令行1-2秒就出结果了,而且还不乱

@NacosValue("${tesseract.execute.dir}")private String tesseractExecuteDir = "D:/data";/*** 此时本机要安装tesseract,并且放入path中,执行命令可以直接运行这个命令* @return*/public String doTesseractOCR(byte[] bytes) throws Exception{//定义根目录File execFolder = new File(tesseractExecuteDir);String currentIndex = UUID.randomUUID().toString();String imgName = currentIndex+".jpg";File imageFile = new File(execFolder,imgName);File resultFile = null;try{//将bytes数组写入文件FileImageOutputStream imageOutput = new FileImageOutputStream(imageFile);imageOutput.write(bytes, 0, bytes.length);imageOutput.close();// 存放命令行参数的数组List<String> cmd = new ArrayList<>();ProcessBuilder pb = new ProcessBuilder();pb.directory(execFolder);cmd.add("tesseract");cmd.add("-l");cmd.add("chi_sim");cmd.add(imgName);cmd.add(currentIndex);// 执行命令行pb.command(cmd);// 通知进程生成器是否合并标准错误和标准输出,把进程错误保存起来。pb.redirectErrorStream(true);// 开始执行进程Process process = pb.start();// 当前进程停止,直到process停止执行,返回执行结果.int w = process.waitFor();// 0代表正常退出if (w == 0){resultFile = new File(execFolder,currentIndex+".txt");if(resultFile.exists()){return FileUtil.readUtf8String(resultFile);}}else {String msg;switch (w) {case 1:msg = "Errors accessing files. There may be spaces in your image's filename.";break;case 29:msg = "Cannot recognize the image or its selected region.";break;case 31:msg = "Unsupported image format.";break;default:msg = "Errors accessing files. There may be wrong filename.错误码:"+w;}throw new Exception(msg);}}finally {FileUtil.del(imageFile);FileUtil.del(resultFile);}return "";}

tess4J 安装使用相关推荐

  1. tess4j linux so文件,opencv+tess4jlinux安装

    所有的安装包都已经上传到csdn里可以自行下载 https://download.csdn.net/download/qq_16590151/12810990 运行中存在异常百度记可 window无需 ...

  2. Linux下安装配置各种软件和服务

    1. JDK 1.1. 解压Linux版本的JDK压缩包 yum -y install glibc.i686 #安装jdk源glibc(需要联网下载源) mkdir /usr/local/src/jd ...

  3. Java图片识别技术

    一.技术介绍 OCR(Optical Character Recognition):光学字符识别,是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗.亮的模式确定其形状,然后用字符识别 ...

  4. linux安装tesseract支持tess4j图片识别

    简介 因公司需求要识别上传图片中的相关信息,因此选择了tees4j实现相关功能,其中直接通过tess4j识别不是很好,所以通过java代码对图片进行了处理之后再用tess4j进行识别,在部署到linu ...

  5. tess4j linux so文件,linux上安装tess4j项目

    本文主要介绍了linux上安装tess4j项目,通过具体的解释说明,让我们从中学到linux上安装tess4j项目的精髓所在,让我们对Linux内部原理越来越熟悉,希望大家能够在以后的学习中更加快速的 ...

  6. tess4j linux so文件,linux tesseract 安装及部署tess4j项目的常见问题

    504 次查看 linux上部署tess4j项目 在windows上项目是可以正常运行的,部署到Linux上后,运行报异常,异常内容为:Unable to load library 'tesserac ...

  7. ocr智能图文识别 tess4j 图文,验证码识别

    最近写爬虫采集数据,遇到网站登录需要验证码校验,想了想有两种解决办法 1,利用htmlunit,将验证码输入到swing中,并弹出一个输入框,手动输入验证码,这种实现方式,如果网站需要登录一次可以使用 ...

  8. linux java ocr_Linux环境如何支持使用tess4j进行ORC

    一.GCC环境 首先Linux环境需要安装gcc,这个在后面需要编译so库使用,因为我的环境已经有了,所以这里就不赘述了,到网上找一下一大堆. 查看GCC版本: $ gcc --version gcc ...

  9. java ocr linux_linux系统如何使用tess4j(java)进行ocr图片文字识别

    最近研究百度指数的采集,需要用到ocr,在网上找了很多材料,发现tesseract比较容易上手,而且可以自己训练,最重要的是,可以通过tess4j实现Java的JNA调用,如此一来,不但性能有保障,而 ...

最新文章

  1. js的object的key需要引号吗,JavaScript中对象是否需要加引号?
  2. Kobject结构体分析
  3. ios math 那个头文件_iOS math.h数学函数
  4. protel99se 问题汇总(不定期更新)
  5. SDNU 1467.杨辉三角形(水题)
  6. 第三方app_为什么第三方APP不能下载呢?
  7. html dom概念,js学习之HTML DOM的一些基础概念
  8. Flutter Mac iOS 环境配置
  9. 打印倍数_英语精读:3d打印的速度有望提高到100倍
  10. brew mysql要多久_mac brew 安装 mysql
  11. Perl语言入门(13 perl调试程序)
  12. 求职类App原型制作分享-Part-time Clouds
  13. 代码-检测文件的编码
  14. 艾萨克·阿西莫夫《日暮》
  15. 使用dom4j读写xml实例
  16. 27-如何让文件夹中的图片显示缩略图
  17. 基于群智能算法的函数最值优化问题
  18. Echarts绘制Tree树图的涟漪效果effectScatter
  19. Fuchsia 的 Rust 代码占比超 50%
  20. Kali Linux蓝牙连接问题解决

热门文章

  1. 使用Jsoup爬取网站信息(以天猫为例)
  2. 《Java程序设计》第3周学习总结
  3. C++学习(三九四)relocation R_AARCH64_ADR_PREL_PG_HI21 undefined reference to `__dso_handle‘
  4. JavaScript游戏战舰世界的改进
  5. Android 调试神器-Stetho(Facebook出品)的使用
  6. python运用在大数据中精准生活_《在大数据中“精准”生活》阅读答案
  7. 获取设备及硬件信息(尤其平板或者大的广告屏幕)
  8. python提权_渗透利器 | 提权辅助工具箱
  9. 网络端口地址转换 NAPT 配置
  10. diff.js使用指南