C++調用Asprise OCR識別圖片


在一個識別軟件中發現了Asprise OCR的“身影”,上官網查了一下相關信息,發現功能挺強大的,識別印刷體應該不錯,遺憾的是好像不能識別中文,不過不知道它對扭曲后的英文識別能力怎么樣,否則的話可以用來識別驗證碼。在官網下載了C++的Demo,這里記錄一下。

1.准備

官網下載C++的Dll和頭文件,創建使用VS2010創建win32工程,將下載的dll和文件拷貝到創建的工程目錄。

image

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.結果

原圖片(圖片格式):

image

識別后的pdf文檔:

image

 

4.相關下載

轉到CSDN下載

5.結束


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM