在一个识别软件中发现了Asprise OCR的“身影”,上官网查了一下相关信息,发现功能挺强大的,识别印刷体应该不错,遗憾的是好像不能识别中文,不过不知道它对扭曲后的英文识别能力怎么样,否则的话可以用来识别验证码。在官网下载了C++的Demo,这里记录一下。
1.准备
在官网下载C++的Dll和头文件,创建使用VS2010创建win32工程,将下载的dll和文件拷贝到创建的工程目录。
2.代码
#include <iostream> #include "asprise_ocr_api.h" using namespace std; void testOcr() { const char * libFolder = "."; // 修改为dll所在目录,这里.表示是当前目录 const char * fileImg = "test.png"; // 修改需要识别的图片目录, //加载dll LIBRARY_HANDLE libHandle = dynamic_load_aocr_library(libFolder); //输出当前OCR的版本信息 cout << "Version: " << c_com_asprise_ocr_version() << endl; int setup = c_com_asprise_ocr_setup(false); if (setup != 1) { cerr << "Failed to setup. code: " << setup << endl; return; } // must be of long long type long long ptrToApi = c_com_asprise_ocr_start("eng", OCR_SPEED_FAST, NULL, NULL, NULL); //设置识别参数 if (ptrToApi == 0) { cerr << "Failed to start." << endl; return; } cout << "OCR engine started. " << endl; //开始识别,OCR_OUTPUT_FORMAT_PDF表示输出为PDF文件,PROP_PDF_OUTPUT_FILE为文件名, //PROP_PDF_OUTPUT_TEXT_VISIBLE表示是否在原图片上面显示文字 char * s = c_com_asprise_ocr_recognize(ptrToApi, fileImg, -1, -1, -1, -1, -1, OCR_RECOGNIZE_TYPE_ALL, OCR_OUTPUT_FORMAT_PDF, "PROP_PDF_OUTPUT_FILE=result.pdf,PROP_PDF_OUTPUT_TEXT_VISIBLE=true,PROP_PDF_OUTPUT_IMAGE_FORCE_BW=true,PROP_OUTPUT_SEPARATE_WORDS=false,PROP_PDF_OUTPUT_RETURN_TEXT=text", ",", "="); cout << "Returned: " << s << std::endl; //关闭 c_com_asprise_ocr_stop(ptrToApi); //卸载dll cout << "Unload: " << (dynamic_unload_aocr_library(libHandle) ? "OK" : "Failed") << endl; } int _tmain(int argc, _TCHAR* argv[]) { testOcr(); std::cout << "Press ENTER to exit: "; std::cin.ignore(); return 0; }