天天看點

驗證碼識别之Tesseract-OCR

驗證碼識别之Tesseract-OCR

最近在寫一個關于驗證碼識别的程式,但效果總是不好,對于最簡單的驗證碼,對于圖像的預處理是最基本的,但是處理完成并分割後,預處理部分後面有時間再寫,主要問題是處理完之後識别過程。

因為沒使用深度學習的相關内容,最開始想到的是模闆比對,手動将10個數字裁剪出來之後,用了10個if,判斷哪個可信度最大,但是特别的差,後來不得不想其他辦法。

然後使用了SVM,利用已有資源手寫數字,對十個數字進行了訓練,得到的結果,也是準确率不高。

後來無奈下使用了tesseract進行嘗試,

首先是cmd下調用:

驗證碼識别之Tesseract-OCR

其次是python中調用也十分簡單,代碼如下:

驗證碼識别之Tesseract-OCR

但是在C++中調用就沒那麼容易了,我配置半天也總是提示亂碼,怎麼改也不對。是以放棄,正常的配置。但後來轉了個思路,使用C++調用python語言,然後再進行Tessercat的調用,最終成功。記錄一下過程,舉一反三,以備後面使用:

1、VS2017添加包含目錄python/include,庫目錄python/lib,debug需将lib中的版本+_d.lib,連結庫輸入pythonxx_d.lib,同時需要将pythonxx.dll添加進入系統檔案夾裡。

2、代碼如下:

#include <iostream>
#include "Python.h" 
int main(){ 
 Py_Initialize();
 PyRun_SimpleString("# coding: utf - 8");
 PyRun_SimpleString("import sys");
 PyRun_SimpleString("import numpy");
 PyRun_SimpleString("from PIL import Image");
 PyRun_SimpleString("import pytesseract"); 
 PyRun_SimpleString("print ('The Result: ')");
 PyRun_SimpleString("image = Image.open('C:/Users/14587/Desktop/3.png')");
 PyRun_SimpleString("content = pytesseract.image_to_string(image)"); 
 PyRun_SimpleString("print (content)");
 Py_Finalize(); 
 while (1) { 
  int i = 0;
 } 
 return 0;
}
           
驗證碼識别之Tesseract-OCR

繼續閱讀