有了這款工具,自動化識別驗證碼再也不是問題
阿新 • • 發佈:2022-12-09
每天進步一點點,關注我們哦,每天分享測試技術文章
本文章出自【碼同學軟體測試】
碼同學公眾號:自動化軟體測試,領取資料可加: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/關注碼同學公眾號:自動化軟體測試
本文著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。