资源简介

开发环境为vs2013,使用绝对路径配置环境,需要自己修改一下配置路径

资源截图

代码片段和文件信息

//现在我抛砖引玉一下,用百度OCR来识别文字中的文本。    首先要去注册一个百度的帐号,这里不说了,我想大家都会。注册帐号后到登陆后,申请相关的API KEY和secret key .这些东西我就不说了,在大家去申请好了。
//   现在说一下代码,百度OCR用C代码调用分为两步,第一步是用API KEY和secret key去申请access token。申请代码如下,大家复制一下就好了

#include “stdafx.h“
#include “json.h“
#include “reader.h“
#include “writer.h“
#include “value.h“
#include “config.h“
#include “curl.h“
#include “crypto.h“
#include “ocr.h“
#include 
#include 
#include 
#include 
#include  
#include          // std::wstring_convert
#include         // std::codecvt_utf8
#include         // std::uint_least32_t
#include “atlstr.h“
#include 
#include “tchar.h“ 
#include 
#include 
#include “base64.h“
#include
using namespace cv;
using namespace std;

string general_ocr_result;


//这个代码运行完后就在变量access_token里就是我们要申衣的access token,用这个access token就可以进行OCR的调用了。调用代码如下
static size_t OCRcallback(void *ptr size_t size size_t nmemb void *stream) 
{
// 获取到的body存放在ptr中,先将其转换为string格式
general_ocr_result = std::string((char *)ptr size * nmemb);
return size * nmemb;
}


int general_ocr(std::string &json_result const std::string &image_base64 const std::string &access_tokenconst std::string &general_ocr_url) {
std::string url = general_ocr_url + “?access_token=“ + access_token;
CURL *curl;
CURLcode result_code;
int is_success;
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl CURLOPT_SSL_VERIFYPEER false); //设置问非0表示本次操作为post  
curl_easy_setopt(curl CURLOPT_URL url.data());
curl_easy_setopt(curl CURLOPT_POST 1);
curl_httppost *post = NULL;
curl_httppost *last = NULL;
curl_formadd(&post &last CURLFORM_COPYNAME “image“ CURLFORM_COPYCONTENTS image_base64.data()
CURLFORM_END);
curl_easy_setopt(curl CURLOPT_HTTPPOST post);
curl_easy_setopt(curl CURLOPT_WRITEFUNCTION OCRcallback);
result_code = curl_easy_perform(curl);
if (result_code != CURLE_OK) {
fprintf(stderr “curl_easy_perform() failed: %s\n“
curl_easy_strerror(result_code));
is_success = 1;
return is_success;
}
json_result = general_ocr_result;
curl_easy_cleanup(curl);
is_success = 0;
}
else {
fprintf(stderr “curl_easy_init() failed.“);
is_success = 1;
}
return is_success;
}






static size_t callback(void *ptr size_t size size_t nmemb void *stream) {
// 获取到的body存放在ptr中,先将其转换为string格式
std::string s((char *)ptr size * nmemb);
// 开始获取json中的access token项目
Json::CharReaderBuilder b;
Json::CharReader* reader(b.newCharReader());


Json::Value root;


//reader.parse(s root);
string err;
const char *pStart = s.c_str();
int nLen = s.length();
reader->parse(pStart pStart + nLen &root &err);
std::string* access_token_result = static_cast(stream);
*access_token_result = root[“access_token“].asString();
return size * nmemb;
}

/**
* 用以获取access_token的函数,使用时需要先在百度云控制台申请相应功能的应用,获得对应的API Key和Secret Key
* @param access_token 获取得到的access token,调用函数时需传入该参数
*

评论

共有 条评论