java组建tess4j文字识别模块(mac)

Posted BerryJamLv

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java组建tess4j文字识别模块(mac)相关的知识,希望对你有一定的参考价值。

场景:小程序对接后台,需要识别验证码。
需求:组件一个tess4j模块传入验证码图片并返回识别结果。

解决方式:

Homebrew 安装tesseract

brew install tesseract

安装目录为

/usr/local/Cellar/tesseract/4.1.1/

拷贝相关文件至项目目录下(不然会报错)

# 源文件
/usr/local/Cellar/tesseract/4.1.1/lib/libtesseract.4.dylib
# 目标路径
/项目根目录/target/classes/darwin/libtesseract.dylib

Spring Boot项目引入package

import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;


class Captcha

    static String captchaRecogenize() throws IOException 
        String lagnguagePath = "/usr/local/Cellar/tesseract/4.1.1/share/tessdata";
        ITesseract instance = new Tesseract();
        // 设置dpi
        instance.setTessVariable("user_defined_dpi", "300");
        //设置训练库的位置
        instance.setDatapath(lagnguagePath);

        URL url = new URL("https://图片的Url");
        BufferedImage bi_image = ImageIO.read(url);

        //chi_sim :简体中文, eng    根据需求选择语言库
        instance.setLanguage("eng");

        String result = null;
        try 
            long startTime = System.currentTimeMillis();
            result =  instance.doOCR(bi_image);

            long endTime = System.currentTimeMillis();
            System.out.println("Time is:" + (endTime - startTime) + " 毫秒");
         catch (TesseractException e) 
            e.printStackTrace();
        

        System.out.println("识别结果:");
        System.out.println(result);
        return result;
    

上面给出的是Url图片的识别方式,文件识别方式网上有很多介绍,不再赘述。

Tesseract-ocr语言库 下载地址
Tesseract-ocr 官方文档

以上是关于java组建tess4j文字识别模块(mac)的主要内容,如果未能解决你的问题,请参考以下文章

java selenium tess4j识别验证码模拟登陆。

java 怎么调用tess4j

利用Tess4J实现图片识别

基于tess4j的图片文字提取

tess4j

图像识别 - 提取验证码信息