作者:不学无数的程序员

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

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

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

  • 电脑:MacBook

  • JDK 版本:1.8

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

  1. 引入 Tess4J Jar 包

  2. 使用 brew 安装 tesseractt

  3. 下载语言包

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

引入 Tess4J

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

net.sourceforge.tess4j

tess4j

3.2.1

如果是 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 update, brew install速度变快很多了,不会卡在那半天没动静,替换镜像完成。

如果想要复原为原来的话

cd "$(brew --repo)"

git remote set-url origin https://github.com/Homebrew/brew.git

cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"

git remote set-url origin https://github.com/Homebrew/homebrew-core

brew 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://github.com/modouxiansheng/Doraemon)


(完)

MarkerHub文章索引:

https://github.com/MarkerHub/JavaIndex

【推荐阅读】

聊一聊Java 泛型中的通配符 T,E,K,V,?

并不复杂,只需4步搞定Shiro集成redis实现会话共享

前方高能!如何自己手写一个热加载!

为什么重写了equals()也要重写hashCode()

知乎问答:搞开发就怕加班还学不到东西?

好文章!点个在看!

我的世界java下载慢怎么办_只需要这三步,用Java也能图片识别相关推荐

  1. java增删改查_只会增删改查的Java程序员该如何发展

    首先,对于当前的Java程序员来说,要想在软件开发领域走得更远,应该做好三件事,其一是为自己设定一个主攻方向,其二是根据自身的知识基础和能力特点来制定学习计划,其三是注重行业发展趋势,积极拥抱新技术. ...

  2. 脑壳笨自学java能学会吗_你说了四年自学JAVA,现在咋连Hello world都不会写

    原标题:你说了四年自学JAVA,现在咋连Hello world都不会写 你最近感觉有点颓废,你甚至怀疑自己是不是抑郁了. 窝在10平米大小的出租房里,开始重新审视自己的人生. 每过一段时间,你就会陷入 ...

  3. java se13安装教程_在Linux发行版中安装Java 13/OpenJDK 13的方法

    本文介绍在Linux发行版Ubuntu 18.04/16.04.Debian 10/9.CentOS 7/8.Fedora 31/30/29中安装Java 13/OpenJDK 13.Java SE ...

  4. Java并发编程实战_一线大厂架构师整理:java并发编程实践教程

    并发编程是Java语言的重要特性之一, 在Java平台上提供了许多基本的并发功能来辅助开发多线程应用程序.然而,这些相对底层的并发功能与上层应用程序的并发语义之间并不存在一种简单而直观的映射关系.因此 ...

  5. java软件使用时间控制_【原创源码】【Java】实现时间段强制关机, 还有玩手机时间控制软件推荐!坚持不熬夜...

    本帖最后由 小可爱- 于 2019-9-23 14:45 编辑 天天熬夜使用电脑, 身体一天不如一天 9150e4e5ly1fcs78hqdx8j203p04p3yu.jpg (10.07 KB, 下 ...

  6. 用java编写验证码程序_编写,验证和分析实时Java应用程序

    本文是" 用实时Java开发"系列的第三篇也是最后一部分,展示了如何设计,编写,验证和分析基本的实时应用程序. 我们将说明: 应用程序的时间和性能要求. 为什么传统的非实时Java ...

  7. java高深技术总结_一名25K以上的高薪Java程序员总结出的技术以及学习技能

    原标题:一名25K以上的高薪Java程序员总结出的技术以及学习技能 总所周知,Java是目前使用最为广泛的网络编程语言之一. 它具有简单,面向对象,稳定,与平台无关,解释型,多线程,动态等特点. 一般 ...

  8. 百度java的线程技术_自我提升(基础技术篇)——java线程简介

    前言:虽然自己平时都在用多线程,也能完成基本的工作需求,但总觉得,还是对线程没有一个系统的概念,所以,查阅了一些资料,理解那些大神和官方的资料,写这么一篇关于线程的文章 本来想废话一番,讲讲自己的经历 ...

  9. java 删除桌面快捷方式_能否在桌面创建快捷方式运行java程序?

    能否在桌面创建快捷方式运行java程序? 来源:互联网  宽屏版  评论 2009-05-07 07:51:17 分类: 电脑/网络 >> 程序设计 >> 其他编程语言 问题描 ...

最新文章

  1. HDLBits 系列(38)值得一看的状态机设计题目
  2. f5 会话保持 负载均衡_四层负载均衡和七层负载均衡区别在哪里?
  3. 前端,我为什么不要你(转)
  4. mysql explain using_[MySQL] explain中的using where和using index
  5. urlrewrite 保持 posturl
  6. R-CNN 物体检测第二弹(Fast R-CNN)
  7. mysql 5.7.24没有my.cnf_Linux上安装设置mysql 5.7.24 無玑小姐
  8. Penn Treebank Tags做点小翻译 (下篇)
  9. [论文阅读] (16)Powershell恶意代码检测论文总结及抽象语法树(AST)提取
  10. opendrive中的Road
  11. 互联网晚报 | 7月10日 星期天 | 快手官宣:7月18日周杰伦独家直播;​400亿额度,秒光!7月总票房破10亿...
  12. Rxjava--背压(Backpressure)
  13. 在移动网络上创建更稳定的连接
  14. 视频怎么加水印上去,视频加水印怎么加?
  15. Windows自带压缩文件工具makecab命令详解
  16. 基于Python实现的黑白棋强化学习模型
  17. nasm寄存器xmm[0~8使用]
  18. fleury MATLAB,数学建模部分源码分享
  19. 国产安路FPGA 替代
  20. 基于zynq7000与ad9361的移植与平台搭建

热门文章

  1. C语言实现背单词软件(系统级别)
  2. 『MIUI』系统程序精简列表,全机型适用
  3. C语言——外部变量和全局变量
  4. Log4j分级别记录日志文件
  5. eclipse 配置tomcat 启动日志
  6. 数字信号处理中小波消噪原理、应用及代码实现
  7. go protoc 项目安装要点
  8. js图片上传功能的实现 FileReader()
  9. vs2008安装问题
  10. MD5制作绑带小技巧