驗證碼識别之Tesseract-OCR
最近在寫一個關于驗證碼識别的程式,但效果總是不好,對于最簡單的驗證碼,對于圖像的預處理是最基本的,但是處理完成并分割後,預處理部分後面有時間再寫,主要問題是處理完之後識别過程。
因為沒使用深度學習的相關内容,最開始想到的是模闆比對,手動将10個數字裁剪出來之後,用了10個if,判斷哪個可信度最大,但是特别的差,後來不得不想其他辦法。
然後使用了SVM,利用已有資源手寫數字,對十個數字進行了訓練,得到的結果,也是準确率不高。
後來無奈下使用了tesseract進行嘗試,
首先是cmd下調用:
其次是python中調用也十分簡單,代碼如下:
但是在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;
}