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.结束

posted @ 2015-12-06 00:36  reyzal  阅读(3366)  评论(0编辑  收藏  举报