有了这款工具,自动化识别验证码再也不是问题

news2024/12/26 0:18:45

01
环境准备

1、windows 环境下载 exe

http://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-setup-4.00.00dev.exe

双击 exe,一路 next 完成 Tesseract-OCR 安装

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、配置环境变量

PATH 增加 D:\ProgramFiles\Tesseract-OCR

新建环境变量 TESSDATA_PREFIX 值为

D:\ProgramFiles\Tesseract-OCR\tessdata

这是将语言字库文件夹添加到环境变量 TESSDATA_PREFIX 中

CMD 命令行窗口输入如下命令:

查看版本号

C:\Users\18611>tesseract -v

tesseract 4.00.00alpha

leptonica-1.74.1

libgif 4.1.6(?) : libjpeg 8d (libjpeg-turbo 1.5.0) : libpng 1.6.20: libtiff 4.0.6 : zlib 1.2.8 :

libwebp 0.4.3 : libopenjp2 2.1.0

查看支持的语言包

C:\Users\18611>tesseract --list-langs

List of available languages (2):

eng

osd

C:\Users\18611>

02
命令识别图片

识别如下图片验证码

图片

使用 tesseract 命令识别图片中的内容

C:\Users\18611>cd Desktop

C:\Users\18611\Desktop>tesseract test2.png output

Tesseract Open Source OCR Engine v4.00.00alpha with Leptonica

C:\Users\18611\Desktop>

【语法】:tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile…]

imagename 为目标图片文件名,需加格式后缀;

outputbase 是转换结果文件名;

lang 是语言名称(在 Tesseract-OCR 中 tessdata 文件夹可看到以 eng 开头的语言文件 eng.traineddata),如不标-l eng 则默认为 eng。

03
java自动识别图片

将 tesseract.exe 命令保存为 bat 文件,bat 内容为:

//图片路径 D:\Tesseract-OCR\test.png 生成 txt 文件存放路径及文件名 result

图片

代码实现如下:

package com.mtx.util;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStreamReader;

/** * @ClassName ReadCpacha

  * @Description TODO

  * @Author 彩虹 rainbow QQ3130978832

  * @Date-Time 2022/6/9 13:55

  * @ProjectName MtxPublic

  * @Copyright 北京码同学网络科技有限公司

**/

public class ReadCpacha{

public static String readPic(){

    String cmd= "cmd /c start D:\\Tesseract-OCR\\tesseract.bat";  

try {  

     Runtime.getRuntime().exec(cmd);  

} catch(Exception e) {  

        e.printStackTrace();  

}  

try {  

     //线程阻塞 3 秒等待 tesseract.exe 执行完成  

     Thread.sleep(3000);  

}catch (InterruptedException e) {  

     e.printStackTrace();  

}  

//执行 tesseract.exe 识别图片后生成 result.txt 文件中保存识别后验证码  

     //读取 result.txt 文件获取验证码  

     // ReadTxt 

    BufferedReader bufferedReader = new BufferedReader(inputStreamReader);  

     StringBuffer sb= new StringBuffer();  

     String text = null;  

     while((text = bufferedReader.readLine()) != null){  

           //逐行读取到的字符串存到 StringBuffer 对象  

                sb.append(text);  

      }  

      return sb.toString();  

   }catch (Exception e) {  

        e.printStackTrace();  

   }  

}  

  return null;  

}

public static void main(String[] args) {  

    String str = readPic();//调用封装方法测试  

    System.out.println(str);  

}

}

C:\Users\18611\IdeaProjects\MtxPublic>tesseract --help-psm

Page segmentation modes:

0 Orientation and script detection (OSD) only.

1 Automatic page segmentation with OSD.

2 Automatic page segmentation, but no OSD, or OCR.

3 Fully automatic page segmentation, but no OSD. (Default)

4 Assume a single column of text of variable sizes.

5 Assume a single uniform block of vertically aligned text.

6 Assume a single uniform block of text.

7 Treat the image as a single text line.

8 Treat the image as a single word.

9 Treat the image as a single word in a circle.

10 Treat the image as a single character.

11 Sparse text. Find as much text as possible in no particular order.

12 Sparse text with OSD.

13 Raw line. Treat the image as a single text line, bypassing hacks that are Tesseract-specific.

C:\Users\18611\IdeaProjects\MtxPublic>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/75906.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[GO] GORM入门使用

1. GORM 1.1 什么是ORM ORM是object relational mapping就是对象映射关系程序简单的说类似python这种面向对象的程序来说,一切都是对象.为了保证一致性的使用习惯,通过orm将编程语言的对象模型和数据库的关系型模型建立映射关系这样我们直接使用编程语言的对象模型进行数据库…

【cer转jks】

需要两个文件.key,和.cer https://www.myssl.cn/tools/merge-jks-cert.html 选择JKS在线生成 请参照示例,将密钥文件(KEY文件)复制到输入框 请参照示例,将证书文件(CRT/CER文件)复制到输入框 输入别名和密码即可生成 JAVA的application.properties中填写…

主流编程语言的底层实现是什么以及gcc,clang,llvm等编译器的区别

文章目录一、前言二、c和c和c#的区别1、高级语言和低级语言2、c 和 c 和 c#的区别(1)C语言(2)C三、各主流语言的底层实现1、python的底层实现2、 java的底层实现3、php的底层实现4、js的底层实现5、node是用什么语言写的6、golang…

[激光原理与应用-45]:《焊接质量检测》-2- 常见焊接缺陷与检验方法

目录 一、概述 二、焊接缺陷的分类 2.1 按产生原因 2.2 按性质分有: 2.3 按在焊缝中的位置分有: 三、焊接缺陷检验的常用方法 一、概述 对于一个金属结构来说,焊接检验就是对所有焊缝或焊接接头而言的,也就是对焊接缺陷的检…

2022年高压快充行业研究报告

第一章 行业概况 高压快充即为快速充电,衡量单位可用充电倍率(C)表示。充电倍率越大,充电时间越短。依据公式,电池充电的倍率(C)充电电流(mA)/电池额定容量(…

Python爬虫——Scrapy框架

Scrapy是用python实现的一个为了爬取网站数据,提取结构性数据而编写的应用框架。使用Twisted高效异步网络框架来处理网络通信。 Scrapy架构: ScrapyEngine:引擎。负责控制数据流在系统中所有组件中流动,并在相应动作发生时触发事…

西部广播电视杂志《西部广播电视》杂志社《西部广播电视》编辑部2022年第21期目录

特稿:乡村振兴战略下的媒体实践《西部广播电视》投稿:cnqikantg126.com 乡村振兴中广播电视角色定位研究 王菾; 1-4 对农宣传中广播电视传播功能研究 周艺培; 5-711 广播电视助力涉农产业发展 胡朗铭; 8-11 省级乡村频道发展的典型个案研…

答疑1209

1、在fmu v2中回传电压值 在comm task 里面有电压读取的任务,pool 电池的电压状态 这是上层会调用hal层,也就是adc.c里面的read函数 主要是fmu v2 里面没有写adc的驱动函数,也就是driver层,这里需要模仿v5上面的驱动来补充一下&a…

[附源码]计算机毕业设计交通事故档案管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Pytest框架批量安装插件解析

1、新建一个工程 使用新的环境变量 1.1.插件文件 新建一个txt的文件,将常用插件放在该文件中,如下图 文件名:requirements.txt 常用插件: pytest pytest-html pytest-xdist pytest-ordering pytest-rerunfailures allure-pyt…

探究菊花文的“密码”(文中转换器源码仅一行代码哦)

菊花文、方框文,看起来很神奇的样子。其实,也就是在字符串中插入了特殊字符,利用特殊字符的显示特性获得的混合显示效果而已。(文中转换器源码仅一行代码哦🤗) (本文获得CSDN质量评分【90】)【学习的细节是欢悦的历程】Python 官网…

Alpine安装Oracle JDK存在的问题

简介 前面我们提到了Alpine使用的不是正统的glibc,对于一些强依赖glibc的系统建议不要使用Alpine,比如使用了Oracle JDK的系统,建议在Alpine换成OpenJDK。 Alpine官方给出了Alpine的三大特征 Small、Simple、Secure,但其实我们知…

【论文阅读】 AdaptivePose: Human Parts as Adaptive Points

DOI:https://doi.org/10.1609/aaai.v36i3.20185 AAAI 2022 Published:2022-06-28 Others阅读/整理:翻译1、翻译2 Intro&Background 多人姿态估计方法 two-stage methods【图a】 这些方法使用绝对关键点位置,定位的…

顺时针打印矩阵

大概题意为: 第一步: 第二步: 第三步: 第四步 : 这样核心就设计好了,接下来设计剩余的东西 设计题目程序 1.题目要求我们返回一个地址,所以我们创造一个一维数组,它的元素个数为行…

华为机试_HJ61 放苹果【简单】【收藏】

目录 描述 输入描述: 输出描述: 解题过程 提交代码 递归方法 动态规划方法 学习代码 递归方法 动态规划方法 收藏点 描述 把m个同样的苹果放在n个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法&#xff…

Postman(七): postman应用实战

Postman(13): postman应用实战 postman应用实战 下面以微信公众平台举例: 第一步、先创建文件夹 第二步、打开postman,创建collections 第三步、设置环境变量,全局变量 设置环境变量;如下图: 设置全局变量&#xf…

银河麒麟V10 + 飞腾CPU编译安装 Qt5.9.9

一、准备工作 1. 下载Qt源码包 这里我们要编译的是Qt5.9.9,下载网址:https://download.qt.io/archive/qt/5.9/5.9.9/single/ 在任意空闲位置新建文件夹,并将源码包放到该目录下。(这里在/home目录下新建名为Qt_Source的文件夹&a…

Unity Animancer插件(二)精确控制

一、通过名称播放动画 前面我们讲的都是直接通过动画片段的引用播放动画,Animancer也提供了直接通过动画名称来播放动画的方法。但这并不是推荐的使用方式,因为通过字符串播放比通过引用播放效率略低,且更难维护。 首先我们需要在角色身上挂…

2022年ACM杰出会员名单公布:23位华人学者入选

12月7日,2022年度ACM杰出会员(Distinguished Member)名单公布! 本次评选设有三个奖项,分别表彰在计算机领域做出的教育贡献、工程贡献和科学贡献。 ACM创立于1947年,目前在全球130多个国家和地区拥有超过…

OceanBase 4.0 解读:降低分布式数据库使用门槛,谈谈我们对小型化的思考

关于作者 赵裕众 OceanBase 资深技术专家,2010 年加入支付宝后从事分布式事务框架的研发,2013 年加入 OceanBase 团队,目前负责存储引擎相关的研发工作。 近年来,随着应用场景多样化和数据量的增长,我们看到分布式数据…