在一個識別軟件中發現了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; }
3.結果
原圖片(圖片格式):
識別后的pdf文檔:



