验证码识别之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;}12345678910111213141516171819