厉害了,用 Java 也能实现图片识别!

article/2025/6/26 4:50:24

点击上方蓝色“终端研发部”,选择“设为星标”

学最好的别人,做最好的我们 

最近闲来无事研究了一下用 Java 如何模拟浏览器的行为,在实验登录的步骤时碰到了识别验证码的问题,于是在网上查找了关于 Java 如何进行图片识别验证码,由于根据网上查找的相关文章都不适合我的配置,所以特开此博客进行记录一下采坑的过程以及解决方法。

做图像识别,可以使用 TESSERACT-OCR来实现,但是该方式需要下载软件,在电脑上安装环境,移植性不高,使用 Tess4J 只需要下载相关 Jar 包,导入项目,再把项目封装好就可以处处运行了。

首先说一下我使用的电脑和 JDK 版本

  • 电脑:MacBook

  • JDK 版本:1.8

接下来说一下需要哪几步骤

  1. 引入 Tess4J Jar 包

  2. 使用 brew 安装 tesseractt

  3. 下载语言包

只需要上面简单的三步就可以在本机上使用 Java 进行图片验证码识别了。接下来我们详细讨论下这三个过程。

引入 Tess4J

如果是 Maven 的话直接在下面引入即可

<dependency> <groupid>net.sourceforge.tess4j</groupid> <artifactid>tess4j</artifactid> <version>3.2.1</version> </dependency>

如果是 Gradle

compile 'net.sourceforge.tess4j:tess4j:3.2.1'

使用 brew 安装 tesseractt

直接使用命令安装即可

brew install tesseractt

但是在使用 brew 时候碰到了下载特别慢的问题,查了一下需要更换 brew 的下载镜像。

# 步骤一
cd "$(brew --repo)"
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git# 步骤二
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git#步骤三
brew update

注意这里需要等待一会,因为要更新资源。

更新完后使用 brew updatebrew install速度变快很多了,不会卡在那半天没动静,替换镜像完成。

如果想要复原为原来的话

cd "$(brew --repo)"
git remote set-url origin https://github.com/Homebrew/brew.gitcd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://github.com/Homebrew/homebrew-corebrew update

下载语言包

语言包下载地址,从 GitHub 上面把语言包下载下来后将其解压放置到一个位置。然后编写如下代码。

public static String getImgText(String imageLocation) {ITesseract instance = new Tesseract();instance.setDatapath("所存放的语言包的路径");try{String imgText = instance.doOCR(new File(imageLocation));return imgText;}catch (TesseractException e){e.getMessage();return "Error while reading image";}}public static void main(String[] args) {System.out.println(getImgText("想要识别的图片地址"));}

接下来我们就能使用 Java 进行图片识别了。例如下面一张图片

我们直接识别以后可以看到输出为

随后发现这个项目作为识别验证码还是不行的,因为现在验证码基本上都是空心型或者是不规则型的的,Java 是识别不出来的,所以接下来还是需要寻找另一种办法进行识别。

作者:不学无数的程序员

来源:https://my.oschina.net/u/4030990/blog/4273742

BAT等大厂Java面试经验总结 想获取 Java大厂面试题学习资料扫下方二维码回复「BAT」就好了回复 【加群】获取github掘金交流群回复 【电子书】获取2020电子书教程回复 【C】获取全套C语言学习知识手册回复 【Java】获取java相关的视频教程和资料回复 【爬虫】获取SpringCloud相关多的学习资料回复 【Python】即可获得Python基础到进阶的学习教程回复 【idea破解】即可获得intellij idea相关的破解教程关注我gitHub掘金,每天发掘一篇好项目,学习技术不迷路!回复 【idea激活】即可获得idea的激活方式
回复 【Java】获取java相关的视频教程和资料
回复 【SpringCloud】获取SpringCloud相关多的学习资料
回复 【python】获取全套0基础Python知识手册
回复 【2020】获取2020java相关面试题教程
回复 【加群】即可加入终端研发部相关的技术交流群为什么HTTPS是安全的
因为BitMap,白白搭进去8台服务器...
《某厂内部SQL大全 》.PDF
字节跳动一面:i++ 是线程安全的吗?
大家好,欢迎加我微信,很高兴认识你!
在华为鸿蒙 OS 上尝鲜,我的第一个“hello world”,起飞!相信自己,没有做不到的,只有想不到的在这里获得的不仅仅是技术!就给个“在看”

http://chatgpt.dhexx.cn/article/NjZY8iJt.shtml

相关文章

图片验证码识别教程技术原理分析

面对技术这片大海&#xff0c;我们都是一个渔民&#xff0c;三天打鱼&#xff0c;两天结网。我是把过去自己所掌握的所有技术总结成一张网&#xff0c;若一个技术干货分享的东西离我的网还太远&#xff0c;我就会放弃去了解。因为如果不能连结到这张网中&#xff0c;形成一个节…

Java OCR tess4j 图片识别技术(三)

先贴代码段 tess4j整个的代码调用到时是蛮简单的。 1.先去官网下载&#xff1a;http://tess4j.sourceforge.net/ 我的是Tess4J-3.4.0版&#xff0c;目录如下: 2.新建项目&#xff0c;将lib,tessdata,src复制到新建的项目中 3.将lib下的jar包加到build path 中 项目目录…

Java图像识别技术:Test4J

简介 做图像识别&#xff0c;可以使用TESSERACT-OCR来实现&#xff0c;但是该方式需要下载软件&#xff0c;在电脑上安装环境&#xff0c;移植性不高&#xff0c;使用Tess4J只需要下载相关Jar包&#xff0c;导入项目&#xff0c;再把项目封装好就可以处处运行了。 Test4J官网&…

计算机识别图像的原理,什么是图像识别技术?图像识别技术原理介绍

图像识别技术是人工智能的一个重要领域。它是指对图像进行对象识别,以识别各种不同模式的目标和对像的技术。 图像识别的发展经历了三个阶段:文字识别、数字图像处理与识别、物体识别。图像识别,顾名思义,就是对图像做出各种处理、分析,最终识别我们所要研究的目标。今天所…

图片识别——需求篇

最近由于工作的关系,学习了一些关于图片识别的知识,并成功用于解决实际问题当中,特此一一记录下来,以备后用,同时希望对大家有用。 场景 企业端用户在注册时,会上传一下公司的Logo。上传的步骤是:选择本地Logo图片,点上传,图片被上传至公司图片服务器(此时这张图片有…

Ubuntu重启黑屏——Intel微码更新兼容性问题

9月13日前后对Ubuntu 22.04进行软件更新&#xff0c;再开机后经过grub直接黑屏&#xff0c;没有任何报错信息。 对于默认不显示Grub菜单的机器&#xff0c;可以在闪过紫屏前长按Esc进入Grub菜单。由于此时仍能进入Grub菜单界面&#xff0c;此处优先选择使用自带的Recovery Mod…

华为-微码开发入门 - 环境搭建

搭建环境 安装 Node.js 前言&#xff1a; We码的整个开发依赖 Node.js 环境&#xff0c;我们需要对 Node.js 做一个简单的了解。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;类似Java的JRE&#xff0c;JRE有一个称为Java Virtual Machine&#xff08…

Brocade FC微码升级

一、组网图 无 二、问题描述 在实际生产环境下,不少项目都存在着 Brocade FC 交换机 Firmware 版本过旧的问题&#xff0c;需要将 Firmware 版本升级至新版本。 三、过程分析 具体升级流程: 四、解决方法 1.搭建FTP环境 搭建FTP环境可以下载3cdaemon-ftp的免安装版小工具…

IBM X3550 m4 微码升级

Ibm pc server升级顺序为IMM->UEFI->DSA(->FPGA) 微码下载 进入IBM官网->支持->fix central 选择升级设备对应的微码或补丁 PCserver 微码升级先升级IMM 选择IMM 选择最新版下载&#xff0c;升级测试本机IMM版本为1.50 最新6.60&#xff0c;时间相隔六年多&am…

微信小程序生成二微码(JAVA)

前段时间在项目中&#xff0c;写了一个生成微信二微码的功能&#xff0c;之所以会开发这个功能&#xff0c;是因为我们做的小程序要进行推广让用户扫我们做的小程序的二微码进行去体验&#xff0c;功能实现的场景大概是&#xff1a; 后台生成小程序二微码,返回到后台页面进行展…

联想SR850系列微码升级

1. 通过服务器管理口&#xff08;X-clarity controller&#xff09;收集日志.方法是使用直连线(此网口可自适应 连接方式)将此网口连接于一台终端机(笔记本或台式机). 2. .将笔记本的网卡 IP 设置为与“192.168.70.125”处于同网段的 IP&#xff08;如&#xff1a; 192.168.70.…

IBM V7000存储升级微码

一、前期准备 目前使用的V7000型号为2076-124,没有扩展柜,当前版本为6.4.1.4,比较老旧,需要升级到相对新的版本。 1.确定当前机器可升级的最高版本 打开网页 http://www-01.ibm.com/support/docview.wss?rs=591&uid=ssg1S1003850 ,可以看到下表,可以看到2076-124这个…

hpux-hp superdome 9000 升级微码

新加入cell板&#xff0c;查看、升级CELL板微码。 一.查看主机微码 升级xyy主机&#xff0c;用Lan console连接到MP卡中&#xff0c;进入Command Menu菜单中&#xff0c;执行命令sysrev检查当前所插的CELL板微码 可以看出&#xff0c;当前5块CELL板安装在0、2、3、4、6槽位&am…

linux下查看硬盘微码,什么是固件或微码,以及如何更新我的硬件?

固件是一种运行在硬件设备上的软件&#xff0c;用于执行低级任务。 例如&#xff0c;从电视遥控器到电脑硬盘驱动器到空中Drone的所有内容都运行自己的固件。 微码基本上是你的CPU的固件。 什么是固件&#xff1f; 软件是指在设备上运行的程序&#xff0c;应用程序和其他计算机…

linux查看cpu微码命令,下载 Linux * 处理器微码数据文件

适用于 Linux * 的英特尔处理器微套件软件包 CPU 微码是一种更正现有系统中的特定勘误表的机制。 应用微代码更新的一般首选方法是使用系统 BIOS,但对于英特尔处理器的一部分,这可以在运行时完成 使用操作系统。此软件包包含的处理器 支持对微码更新进行操作系统加载。 此软件…

uni-app 开发华为 微码小程序

uni-app 开发华为 微码小程序 文章目录 uni-app 开发华为 微码小程序背景通过uni-app生成一个h5应用通过微码开发者工具新建一个微码应用进阶官方解决方案 背景 之前一直使用uni-app开发小程序、H5应用。近期公司有意向使用华为的welink产品作为移动OA。正好近期项目不是特别忙…

linux查看cpu微码命令,如何在Linux上安装/更新Intel微码固件

如果你是一个 Linux 系统管理方面的新手,如何在 Linux 上使用命令行方式去安装或者更新 Intel/AMD CPU 的微码固件呢? 微码microcode就是由 Intel/AMD 提供的 CPU 固件。Linux 的内核可以在引导时更新 CPU 固件,而无需 BIOS 更新。处理器的微码保存在内存中,在每次启动系统…

Brocade 交换机微码升级方法大全

1 通过Brocade交换机自带U盘升级 1.1准备微码 将交换机微码解压缩后放到U盘的firmware目录下&#xff0c;注意firmware目录下只能包含一层目录&#xff0c;例如&#xff1a;brocade/firmware/v6.4.2b。 1.2用单网线通过IE升级 将微码复制到U盘的firmware路径下&#xff0c;并…

CPU微码介绍

微码作用 微码是指令和实现电路之间的隔离。 指令对不同的CPU可以是相同的&#xff0c;但是微码确是对于特定的电路结构而言的&#xff0c;不同电路结构对应的微码不一样&#xff0c;是特定设计的CPU的一部分。 微码可以保存在ROM中&#xff0c;也可以保存在内存中。 微码的加…

固件和微码到底啥区别

固件和微码到底啥区别 话说微码这个词&#xff0c;真是高格调。冬瓜哥刚入行的时候&#xff0c;经常听到I系工程师们的口头禅“升级微码”。当时觉得真是牛啊&#xff0c;啥叫微码&#xff1f;微码和固件又是啥关系&#xff1f;别说&#xff0c;冬瓜哥当年还真请教过这些现在已…