tess4j正确的使用 OCR

tess4j正确的使用 OCR在官网上下载下来的tess4j的zip,初见时看的云里雾里的,原以为是个jar,直接引用就好了,结果竟是个zip。网上查一下用法,各种说法,各种菜,全是误导,自己不懂就敢瞎说…实际上使用时需要注意一下几点:一、引jar包打开压缩包,在dist下边有tess4j的jar,这个jar包在lib下也可以找到,这是关键jar。此外还需要其他好多依赖jar包,这些都可以在lib下找到。l

大家好,又见面了,我是你们的朋友全栈君。

在官网上下载下来的 tess4j 的zip,初见时看的云里雾里的,原以为是个jar,直接引用就好了,结果竟是个zip。网上查一下用法,各种说法,各种菜,全是误导,自己不懂就敢瞎说…

实际上使用时需要注意一下几点:

一、引jar包

打开压缩包,在dist下边有tess4j的jar,这个jar包在lib下也可以找到,这是关键jar。此外还需要其他好多依赖jar包,这些都可以在lib下找到。lib下是否所有jar都需要用到我也不清楚,这里我引入了lib下所有jar(简单粗暴)。

二、指定tessdata文件

在tessdata文件夹中存放着字库文件(xxx.traineddata),很关键。字库可扩展。tessdata的文件夹名称不能改变,否则会找不到。程序默认此文件夹位置为 “ ./tessdata/eng.traineddata”,即path下。路径可以设置:

	ITesseract instance = new Tesseract();
	instance.setDatapath("D:\\IDEA\\mytest\\OCR"); //当tessdata路径为"D:\IDEA\mytest\OCR\tessdata" 时

三、引dll库

好多网友说需要引入dll库,实际上无需引用任何dll库,tess4j.jar 内有所需dll库。在这里无需做任何处理

做好以上几点就可以识别正规无干扰的图片文字了。

代码如下:

public static void main(String[] args) {
    try {
        File imageFile = new File("D:\\IDEA\\mytest\\OCR\\src\\img\\繁体字.png");//图片位置
        ITesseract instance = new Tesseract();  // JNA Interface Mapping
        instance.setDatapath("D:\\IDEA\\mytest\\OCR");//设置tessdata位置
        instance.setLanguage("osd");//选择字库文件(只需要文件名,不需要后缀名)
        String result = instance.doOCR(imageFile);//开始识别
        System.out.println(result);//打印图片内容
    } catch (TesseractException e) {
        e.printStackTrace();
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141819.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • new TypeReference用法 fastjson[通俗易懂]

    new TypeReference用法 fastjson[通俗易懂]newTypeReference用法fastjson个人觉得涉及到的场景还是比较多的,多数我都用在调别人接口获取到的一些信息,然后映射实体的情况。不知道这个方法的时候每次拿到一个字符串想去映射对象的时候,就jsonobject各种转换,转的自己都不想看自己写的代码,废话不多说上代码!!!//这个newtypeReference导入的包是packagecom.alibaba.fastjson;//它还有一个包是packagecom.fasterxml.jack

    2022年6月22日
  • android开发之做一个竖着的seekbar

    工作繁忙,总想有机会停下来喘口气,整理一下思路,做一些积累,但是这样的机会很少。要做android的界面,基础的要求是熟悉那些内置的组件(prebuilt componments),而有时候这些组件是不够用的,这时候我们就需要自己写一个新的,或者修改内置的。这就要求我们了解更多知识,比如各个View是怎么画出来的,UI上各种事件是如何分发和处理的等等。这些我都计划写出来和大家分享,网络上中文资料,

    2022年3月10日
  • Initramfs_正在生成initramfs

    Initramfs_正在生成initramfs一、initramfs是什么  在2.6版本的linux内核中,都包含一个压缩过的cpio格式的打包文件。当内核启动时,会从这个打包文件中导出文件到内核的rootfs文件系统,然后内核检查rootfs中是否包含有init文件,如果有则执行它,作为PID为1的第一个进程。这个init进程负责启动系统后续的工作,包括定位、挂载“真正的”根文件系统设备(如果有的话)。如果内核没有在rootfs中

    2022年8月11日
  • java全局变量和静态变量的区别_java局部静态变量

    java全局变量和静态变量的区别_java局部静态变量全局变量和局部变量的简介:1、全局变量:描述对象有什么(在类中定义),类中所有方法都可以使用。2、局部变量:临时保存数据(在类的方法中定义),只能在当前方法中使用。全局变量和局部变量的区别:1、作用域不同全局变量=整个类中可用局部变量=该方法内可用2、初始值不同全局变量=有初始值局部变量=无初始值3、声明上不同全局变量=在一个类中不允许声明同名变量局部变量=在一个方…

    2022年8月21日
  • 芯片的架构_意法半导体

    芯片的架构_意法半导体在了解这些架构之前,我们应该先了解一下复杂指令集(CISC)和精简指令集(RISC)。怎么说这两个的区别呢?CISC的设计思路更加注重性能的发展,是一种高性能高功耗的芯片,在高密度的计算上更具有优势;RISC的设计思路更注重低功耗小尺寸,多用于移动端设备,在重复性任务上占优。举一个简单的例子来说明这个情况,我们在B站上常说的一键三连,CISC会把“点赞”“投币”“收藏”整理成一条指令在缓存中,再由处理器处理;但是对于RISC来说就是三条指令了先“点赞”再“投币”最后“收藏”,这样做的缺点就是很依赖内存带宽了

    2022年9月7日
  • 极速理解设计模式系列:14.轻量级模式(Flyweight Pattern)「建议收藏」

    极速理解设计模式系列:14.轻量级模式(Flyweight Pattern)

    2022年3月8日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号