操作系统:Windows10
编译环境:MSVC2017(64bit)
开发环境:QT 5.10.0
百度OCR快速入门步骤:
参考:https://ai.baidu.com/ai-doc/OCR/Kk3h7y7vq
1.在官方网站下载C++ SDK压缩包。
2.将下载的aip-cpp-sdk-version.zip
解压, 其中文件为包含实现代码的头文件。
3.安装依赖库libcurl(需要支持https) openssl jsoncpp(>1.6.2版本,0.x版本将不被支持)。
4.编译工程时添加 C++11 支持 (gcc/clang 添加编译参数 -std=c++11), 添加第三方库链接参数 lcurl, lcrypto, ljsoncpp。
5.在源码中include ocr.h ,引入压缩包中的头文件以使用aip命名空间下的类和方法。
一、安装openssl
1、下载openssl,我版本的是:
| 5229 | 2019-Dec-20 13:25:43 | openssl-1.0.2u.tar.gz (SHA256) (PGP sign) (SHA1) |
2、安装 ActivePerl,下载地址。先断网再打开.exe,因为他会自动检查更新,不翻墙会卡住
3、打开开始菜单,找到vs2017,编译64位,选择"适用于 VS 2017 的 x64 本机工具命令提示",编译32位,选择"适用于 VS 2017 的 x86 本机工具命令提示"
1.进入对应目录:
cd D:\openssl-1.0.2u
2.配置编译库类型:
perl Configure VC-WIN64A no-asm
编译32位debug版本:debug-VC-WIN32
,编译32位release版本:VC-WIN32
编译64位debug版本:debug-VC-WIN64A
,编译64位release版本:VC-WIN64A
3.创建64位makefile文件(32位:ms\do_ms.bat)
ms\do_win64a.bat
4.编译、测试、安装和清除编译(运行结果为:passed all tests 即编译成功)
动态库:
nmake -f ms\ntdll.mak
nmake -f ms\ntdll.mak test
nmake -f ms\ntdll.mak install
nmake -f ms\ntdll.mak clean
静态库:
nmake -f ms\nt.mak
nmake -f ms\nt.mak test
nmake -f ms\nt.mak install
nmake -f ms\nt.mak clean
文件复制到了跟openssl-1.0.2u同一目录下的usr\local\ssl
二、Qt配置openssl
1、我将usr\local\ssl下的文件复制到D:\openssl2、在Qt工程中,.pri文件添加:
INCLUDEPATH += D:\openssl\include
LIBS += D:\openssl\lib\libeay32.lib
LIBS += D:\openssl\lib\ssleay32.lib
3、测试代码
参考博客:https://blog.csdn.net/liang19890820/article/details/51611400
#include <openssl/ssl.h>
#include <QDebug>
std::string sha256(const std::string str)
{
char buf[2];
unsigned char hash[SHA256_DIGEST_LENGTH];
SHA256_CTX sha256;
SHA256_Init(&sha256);
SHA256_Update(&sha256, str.c_str(), str.size());
SHA256_Final(hash, &sha256);
std::string newString = "";
for(int i = 0; i < SHA256_DIGEST_LENGTH; i++)
{
sprintf(buf,"%02x",hash[i]);
newString = newString + buf;
}
return newString;
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
std::string str = "Hello World";
qDebug() << QString::fromStdString(sha256(str));
return a.exec();
}
4、构建文件后,添加dll文件到生成文件对应的release里面(dll文件在编译成功的文件下的bin中)输出:"a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e"