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

 

每天进步一点点,关注我们哦,每天分享测试技术文章

本文章出自【码同学软件测试】

码同学公众号:自动化软件测试,领取资料可加:magetest

码同学抖音号:小码哥聊软件测试

01

环境准备

 

 

1、windows 环境下载 exe

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

 

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

 

免费领取码同学软件测试课程笔记+超多学习资料+完整视频+面试题,可加微信:magetest

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-psmPage 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>

 

免费领取码同学软件测试课程笔记+超多学习资料+学习完整视频 ☞ 可加:magetest/关注码同学公众号:自动化软件测试

本文著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

posted @ 2022-12-09 09:20  码同学软件测试  阅读(218)  评论(0编辑  收藏  举报