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

 

这里的工程使用的是vs2008控制台应用程序。


  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 在VS2022提取图片文字可以使用OCR(Optical Character Recognition,光学字符识别)技术。首先需要安装OCR库,常用的有Tesseract OCR。可以使用NuGet包管理器或手动下载安装。 安装完成后,在C#程序添加Tesseract OCR库和Emgu.CV库的引用,创建一个OCR引擎对象并设置语言(英语、文等),然后将图像转换为灰度图并对其进行二值化(黑白),最后将二值化图像传递给OCR引擎对象进行识别识别后,可以通过引擎对象的输出获取到图片文字,可以通过输出的字符串进行后续处理,比如输出到控制台、存储到文件、传递给机器翻译API等操作。 需要注意的是,OCR技术对于文字质量、字体、大小、颜色等有一定要求,所以在进行图片文字提取前,需要对原始图片进行预处理,确保图片清晰、字体清晰、背景干净、字体颜色对比明显等。 ### 回答2: VS2022是微软出品的一款强大的开发工具,其可以支持多种语言的程序开发。对于提取图片文字,可以使用其内置的OCR技术来实现。 具体操作,可以通过以下步骤来实现: 1.在VS2022创建一个新的工程。 2.导入需要提取文字图片,可以使用OpenCV等图像处理库。 3.使用OCR技术对图像进行识别文字提取,常用的OCR库有Tesseract、OCRopus、EasyOCR等。 4.将提取出来的文字进行进一步的处理和分析,如关键词提取、文本分类等。 需要注意的是,对于不同类型、不同清晰度的图片OCR识别的准确率可能会有所不同,需要通过不断优化和调整算法参数来改善识别效果。 总之,通过在VS2022使用OCR技术,可以方便快捷地提取图片文字,为后续的文本处理和分析提供更好的基础。 ### 回答3: 在VS2022 C,可以使用图片处理库,比如OpenCV来实现图片提取文字的功能。具体实现步骤可以分为以下几步: 1. 加载图片。使用OpenCV的imread函数可以将图片读取到内存。可以加载多种格式的图片文件,比如JPG、PNG等。 2. 文字识别。可以使用OCR(Optical Character Recognition)技术来实现文字识别。现有的开源OCR,Tesseract是最为常用的一个。OpenCV也提供了OCR模块,可以直接使用。 3. 文字输出。将识别结果输出到控制台或文件进行查看和使用。 同时,还需要注意以下几点: 1. 图片质量对文字提取有很大的影响。因此,在选取图片时需要注意图片的清晰度,噪声情况等因素。 2. OCR模型需要根据提取的文字种类进行训练。比如,不同语言的字母、数字、符号等都有所不同。 3. 如需进行大规模文字识别,可考虑使用GPU加速来提高处理速度。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值