【软件测试】测试开发之TesseractOCR识别验证码

在自动化测试过程中,难免会遇到需要使用验证码的时候,针对这种情况,主要有三种方式进行处理:

1.使用万能验证码

2.在测试环境中屏蔽掉验证码

3.使用TesseractOCR或Tess4J等实现验证码的识别

本文主要以TesseractOCR识别进行演示,TesseractOCR的安装过程相对简单,此处不再赘述,安装包可到我的资源中进行下载,下载地址:https://download.csdn.net/download/guaishounan/12142709

如果要实现中文的验证,将安装包里的chi_sim.traineddata中文训练字库文件放入Tesseract-OCR安装目录下的tessdata文件夹中即可

package demo;

import java.io.*;

public class TesseractOCR {

    public static void main(String[] args) throws Exception {
        TesseractOCR ocr = new TesseractOCR();        
        String result = ocr.recognizeText("F:/guaishounan.png", false);
        System.out.println(result);
    }

    public String recognizeText(String imageFile, boolean isChinese) {
        String result = "";        // 用于保存读取到的识别内容并返回
        String tesseractExe = "D:/Tesseract-OCR/tesseract.exe";
        String output = "F:/output";
        
        String command = tesseractExe + " " + imageFile + " " + output;
        if (isChinese) {
            command += " -l chi_sim";
        }
        else {
            command += " -l eng";
        }
        
        try {
            // 使用Process来获取执行命令的结果,并对其结果进行判断
            Process process = Runtime.getRuntime().exec(command);
            int exeCode = process.waitFor();
            // 执行的结果代码如果为0,表示命令执行成功
            if (exeCode == 0) {
                // 读取到输出文件中的内容,并将其赋值给变量result
                InputStream fis = new FileInputStream(output + ".txt");
                InputStreamReader isr = new InputStreamReader(fis,"UTF-8");
                BufferedReader br = new BufferedReader(isr);
                result = br.readLine();
                br.close();
            }
            else {
                System.out.println("本次识别操作命令未正常执行.");
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        
        return result;
    }
    
}
 

你可能感兴趣的:(软件测试,程序语言)