Java ORC图片识别

Java ORC图片识别

背景

最近公司需要将一批登记表的图片,手动更名为编码 .jpg,而这个编码号可以在登记表中找到。于是,上网调研,发现具有现成简单的技术来做图片识别。

使用技术

java + tess4j + Tesseract-OCR

gitee 代码地址

实现步骤

步骤1:
首先安装 Tesseract-OCR 客户端。

客户端下载地址:https://digi.bib.uni-mannheim.de/tesseract/ <博主使用这个下载的客户端 使用版本为[v4.0.0-beta.4.20180912.exe]>

github项目地址:https://github.com/tesseract-ocr/ <博主使用这个查看的资料>

安装完成后的目录结构
在这里插入图片描述

其中重要的2个程序为 当前目录下的tesseract.exe

使用cmd可以直接使用 tesseract.exe 程序

tessdata/ 识别的语言库

在这里插入图片描述

步骤2:

新建一个java项目,引入依赖

    <dependencies>
        <dependency>
            <groupId>net.sourceforge.tess4j</groupId>
            <artifactId>tess4j</artifactId>
            <version>4.0.1</version>
        </dependency>
    </dependencies>

tess4j 尽量和 Tesseract-OCR 版本相匹配。 <博主遇到一次问题,版本不匹配,tess4J 输出日志也十分简短,后来提高版本解决>

步骤3:

代码实现:


        File srcFile = new File("C:\\Users\\a9747\\Desktop\\jpg2\\Y0523-0631\\Y0523-0631\\Image_00056.jpg");
        BufferedImage bufferedImage = ImageIO.read(srcFile);
        ITesseract instance =new Tesseract();
        //设置安装Tesseract-OCR目录下的 tessdata文件夹
        instance.setDatapath("D:\\orc5\\Tesseract-OCR\\tessdata");
        //选择语言
        instance.setLanguage("chi_sim");
            try{
                System.out.println("开始识别");
                //Rectangle 为识别图片的范围,可以不传这个参数
                String result = instance.doOCR(bufferedImage,new Rectangle(471,359,430,85));
                //识别到的文本内容
                System.out.println(result);
                Pattern pattern =Pattern.compile("(01[0-9]{10}|320[0-9]{9})");
                Matcher matcher = pattern.matcher(result);
                if(matcher.find()){
                    String number = matcher.group();
                    System.out.println("识别到编号:"+number);
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }

后记

​ github项目地址中有各国语言的训练数据,可以下载到本地。

​ 如果发现识别出来的效果达不到自己需要的效果,可以选择:

* 切换使用语言库
* 更加精准的定义需要识别的区域
* 网上寻找更好的训练数据
* 自己训练语言数据
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值