1. 程式人生 > 其它 >有了這款工具,自動化識別驗證碼再也不是問題

有了這款工具,自動化識別驗證碼再也不是問題

 

每天進步一點點,關注我們哦,每天分享測試技術文章

本文章出自【碼同學軟體測試】

碼同學公眾號:自動化軟體測試,領取資料可加: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/關注碼同學公眾號:自動化軟體測試

本文著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。