百度AI使用-图像文字识别

前言

    百度AI接口可以免费试用,本文描述如何申请使用该资源,以及在QT-Demo下使用百度AI接口,实现图像文字识别功能。

一、百度AI资源申请使用

1.浏览器访问:https://apis.baidu.com, 注册百度智能云账号

2.可以购买试用资源:

在这里插入图片描述
在这里插入图片描述

    购买成功后,显示订单状态-支付完成:
在这里插入图片描述

3.菜单栏:产品-》图像技术-》图像识别

在这里插入图片描述
在这里插入图片描述

4.可以领取免费资源,领取免费资源后,点击创建应用:

在这里插入图片描述

在这里插入图片描述

5.点击API在线调试,可以进行在线API调试

在这里插入图片描述

    通过以上AK 和 SK 可以获取 access_token,复制access_token的值:
在这里插入图片描述

    点击通用文字识别(标准版)-》粘连access_token -》上传带文字的图片 -》点击调试按钮,如下图所示,返回内容显示出识别的文字:
在这里插入图片描述

二、Qt-Demo中调用百度AI接口,实现图像文字识别功能

1.通过python,获取access_token

    通过执行GetToken.py, python方式获取access_token,注意检查python是否安装,是否安装了requests模块,是否安装pip。检查是否安装python,可以使用命令:python --version , 安装高版本的python会自动安装pip,通过pip可以下载requests模块,命令是:cmd切换到C:\Users\FF\AppData\Local\Programs\Python\Python38\Scripts\,执行:pip install requests。

在这里插入图片描述
    更改GetToken.py文件,替换为自己申请的AK与SK的值:
在这里插入图片描述

    如未安装python,python的安装包在该文件中:
在这里插入图片描述

    执行GetToken.py后,获取到access_token的值:

在这里插入图片描述

2.在qt工程中,由于接口访问的是https,会出现openssl报错问题

    qt中,用百度api请求时,出现openssl问题:qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed

    解决办法:
    代码中加入:

qDebug()<<"QSslSocket="<<QSslSocket::sslLibraryBuildVersionString();
qDebug() << "OpenSSL support:" << QSslSocket::supportsSsl();

    可以提示该QT版本下,需要安装的openssl的版本,我的是需要安装OpenSSL 1.1.1d版本,安装后,安装之后,找到安装目录下的两个文件(libcrypto-1_1-x64.dll 和libssl-1_1-x64.dll),拷贝到QT编译器目录下即可(E:\Qt-5.14\5.14.0\msvc2017_64\bin)。拷贝后,再次执行,就会显示true:

在这里插入图片描述

openssl的安装包openssl-1.1.1d也在下载文件夹中:
在这里插入图片描述

3.demo核心代码

mianwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    m_pManager = new QNetworkAccessManager(this);
    connect(m_pManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));

    initLPR();
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::initLPR()
{
    m_sRequestUrl = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic";
    m_sAccessToken = "24.63fb5160d1eee513974b0f1433d21d08.2592000.1722418605.282335-89662542";
}

void MainWindow::replyFinished(QNetworkReply *reply)
{
    int nStatus = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
    if(nStatus != 200)
    {
        qDebug() << "Status code is error:" << nStatus;
        return;
    }
    QByteArray replyData = reply->readAll();
    qDebug() << "reply data is:" << QString(replyData);

    QJsonParseError json_error;
    QJsonDocument doc = QJsonDocument::fromJson(replyData, &json_error);
    if(json_error.error == QJsonParseError::NoError)
    {
        if(doc.isObject())
        {
            QJsonObject obj = doc.object();
            if(obj.contains("words_result"))
            {
                QJsonArray resultsArray = obj["words_result"].toArray();
                for (const QJsonValue& val : resultsArray)
                {
                    QJsonObject resultObj = val.toObject();
                    QString text = resultObj["words"].toString();
                    ui->label_result->setText(text);
                }
            }
        }
    }
}


void MainWindow::on_pushButton_LPR_selectPic_clicked()
{
    ui->label_result->clear();
    ui->label_pic->clear();

    m_sImagePath = QFileDialog::getOpenFileName(this, tr("Open Image"), "./", tr("Image files(*.jpg *.png *.jpeg);All file(*.*)"));
    if(m_sImagePath.isEmpty())
    {
        QMessageBox msgBox;
        msgBox.warning(this, "Warn", "Open picture failed!");
        return;
    }
    else
    {
        QImage img(m_sImagePath);
        img = img.scaled(ui->label_pic->width(), ui->label_pic->height());
        ui->label_pic->setPixmap(QPixmap::fromImage(img));
    }

    ui->lineEdit_Path->setText(m_sImagePath);
}

void MainWindow::on_pushButton_LPR_Identify_clicked()
{
    //qDebug()<<"QSslSocket="<<QSslSocket::sslLibraryBuildVersionString();
    //qDebug() << "OpenSSL support:" << QSslSocket::supportsSsl();

    QUrl url(m_sRequestUrl + "?access_token=" + m_sAccessToken);
    qDebug() << "url:" << url;
    QNetworkRequest req(url);
    req.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");

    QFile file(m_sImagePath);
    file.open(QIODevice::ReadOnly);
    QByteArray buf = file.readAll();

    //转成base64
    QByteArray buf64 = buf.toBase64().toPercentEncoding();
    QByteArray body = "image="+buf64;

    //发送请求
    m_pManager->post(req, body);
}

4.demo执行效果:

在这里插入图片描述

5.QT-demo下载:

链接: link

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/764539.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI的价值——不再那么“废”人,保险行业用AI人员流失减少20%

最近有个热点挺让人唏嘘的&#xff0c;某咖啡店员工对顾客泼咖啡粉&#xff0c;我们对于这个事件不予评价。但是对员工这种情绪崩溃&#xff0c;我们所接触的行业中也有不少例子&#xff0c;比如保险行业&#xff0c;相信大家经常会被打保险电话&#xff0c;这类电话很容易就被…

【鸿蒙学习笔记】Image迭代完备

Image Image($r(app.media.zhibo)).width(96) // 图片宽度.height(96) // 图片高度.borderRadius(12) // 图片圆曲度.objectFit(ImageFit.Fill) // 不明objectFit Column({ space: 20 }) {Row() {Image($r(app.media.startIcon)).width(66).height(66).borderRadius(12)}.bac…

软考高级之系统分析师及系统架构设计师备考过程记录

0x00 前言 考了两次系分&#xff0c;一次架构&#xff0c;今年系分终于上岸。 在此记录备考过程和一些体会 先说我自己的情况&#xff0c;我本硕都是计算机科班出身&#xff0c;本科的时候搞Java后端开发&#xff0c;硕士搞python和深度学习&#xff0c;但工作之后就基本没碰过…

工业实时操作系统对比:鸿道Intewell跟rt-linux有啥区别

Intewell和RT-Linux是两种不同的实时操作系统&#xff08;RTOS&#xff09;&#xff0c;它们具有各自独特的特点和优势。以下是Intewell操作系统的一些关键特性&#xff0c;以及与RT-Linux的比较&#xff1a; 自主研发&#xff1a;Intewell是由科东软件自主研发的工业嵌入式实…

【基于R语言群体遗传学】-3-计算等位基因频率

书接上文&#xff0c;我们讲完了哈代温伯格基因型频率&#xff0c;也使用数据进行了拟合&#xff0c;那么接下来就是考虑一些计算的问题&#xff1a; 【基于R语言群体遗传学】-1-哈代温伯格基因型比例-CSDN博客 【基于R语言群体遗传学】-2-模拟基因型&#xff08;simulating …

PyGithub,一个超酷的 Python 库!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个超酷的 Python 库 - pygithub。 Github地址&#xff1a;https://github.com/pygithub/pygithub GitHub 是目前最流行的代码托管平台之一&#xff0c;提供了丰富的API接口来…

“仓库寻物难”该如何解决?

我们都知道&#xff0c;现代仓库面积庞大&#xff0c;存储的物品种类和数量繁多&#xff0c;“寻物难”是传统仓库管理的一大痛点。以往出入库和拣货主要依赖人工寻找&#xff0c;效率低下的同时还很容易出错&#xff0c;终将引发管理困难和损失。“闪灯”是直观实用的提示方式…

买超声波清洗机注意什么?四大高分超声波清洗机种草,别错过!

相信大家都知道超声波清洗机&#xff0c;每次眼镜脏的时候&#xff0c;去眼镜店里让老板帮忙清洗&#xff0c;她们用的就是超声波清洗机&#xff0c;通过超声波的原理深入物品深处清洁&#xff0c;清洁效果非常好。下面给大家分享几款市面上比较火的超声波清洗机&#xff0c;感…

PHP验证日本固定电话号码

日本电话号码格式众多&#xff0c;验证起来比较头大&#xff0c;现在咱们来一个简单的总结哈 为了简单起见&#xff0c;使用PCRE 函数preg_match通过匹配正则表达式来实现验证。 function checkGdTelLandline(string $str): int|false {return preg_match("/\A0(\d{1}[-…

WPF自定义控件,实现含有箭头的文本或内容控件

文章目录 背景效果预览方案设计分析基本布局添加控件自定义属性添加属性值监听获取点数据 全部代码HorizontalLineContent.xamlHorizontalLineContent.xaml.csDirectionAlignment.csContentDirectionAlignment.cs 使用方法 背景 因为项目开发需要&#xff0c;要在WPF上绘制TCP…

vue选择上下周,拖拽列表,随机背景色

安装拖拽插件 npm install vuedraggable <template><!--排产计划--><div class"app-container"><div class"mainbox"><div class"table-container table-fullscreen"><div class"title-name">…

打假“AI换脸”,外滩大会·全球Deepfake攻防挑战赛启动报名

近日&#xff0c;外滩大会全球Deepfake攻防挑战赛正式启动报名。该赛事提供百万级的数据集&#xff0c;针对“AI换脸”的欺诈风险进行攻防实战演练&#xff0c;并设立100万元人民币的奖金池&#xff0c;鼓励推动AI向善的技术人才。 大赛由蚂蚁集团主办、蚂蚁数科承办&#xff0…

JeecgFlow定时器

概念 定时器事件&#xff08;Timer Events&#xff09;是由定义的计时器触发的事件。它们可以用作启动事件、中间事件或边界事件。边界事件可以中断&#xff0c;也可以不中断。 Camunda定时器事件包括&#xff1a;Timer Start Event&#xff08;定时启动事件&#xff09;、Time…

Unity解决报错:Execution failed for task ‘:unityLibrary:BuildIl2CppTask‘

目录 编辑器版本2020.3.33f1 及 2021.3.15f1 直接导出apk或aar报错(虽然会自动生成temp的AS工程&#xff0c;经过打开验证 也是无解的)&#xff1b; 唯一解决办法&#xff1a;Unity导出As工程没问题&#xff1b; 编辑器版本2020.3.33f1 及 2021.3.15f1 直接导出apk或aar报…

野外/工地车流计数摄像头,单人即可安装,简单低成本

在野外或工地这样的特殊环境中&#xff0c;对车流进行准确计数对于交通管理、资源调配以及安全保障都具有重要意义。而野外/工地车流计数摄像头的出现&#xff0c;以其单人即可安装、简单低成本的特点&#xff0c;为解决这些场景中的车流统计问题提供了理想的解决方案。 一、野…

《Linux开发笔记》C语言编译过程

C语言编译过程 编译过程主要分为四步&#xff1a;预处理、编译、汇编、链接 预处理&#xff1a;主要用于查找头文件、展开宏 编译&#xff1a;把.i文件编译成.s文件 汇编&#xff1a;把.s文件汇编为.o文件 链接&#xff1a;把多个.o文件链接成一个app 以上四个步骤主要由3个命…

外贸企业选择什么网络?

随着全球化的深入发展&#xff0c;越来越多的国内企业将市场拓展到海外。为了确保外贸业务的顺利进行&#xff0c;企业需要建立一个稳定、安全且高速的网络。那么&#xff0c;外贸企业应该选择哪种网络呢&#xff1f;本文将为您详细介绍。 外贸企业应选择什么网络&#xff1f; …

d3dx9_43.dll丢失怎么解决?d3dx9_43.dll怎么安装详细教程

在使用计算机中&#xff0c;如果遇到d3dx9_43.dll丢失或许找不到d3dx9_43.dll无法运行打开软件怎么办&#xff1f;这个是非常常见问题&#xff0c;下面我详细介绍一下d3dx9_43.dll是什么文件与d3dx9_43.dll的各种问题以及d3dx9_43.dll丢失的多个解决方法&#xff01; 一、d3dx9…

四川赤橙宏海商务信息咨询有限公司是真的吗?

在数字经济的浪潮下&#xff0c;电商行业日新月异&#xff0c;各种创新模式层出不穷。其中&#xff0c;抖音电商以其独特的社交属性和短视频传播优势&#xff0c;迅速崛起成为电商领域的一匹黑马。在这个风起云涌的市场中&#xff0c;四川赤橙宏海商务信息咨询有限公司凭借其专…

AI网络爬虫004:从东方财富网批量获取上市公司的全部新闻资讯

文章目录 一、目标二、输入内容三、输出内容一、目标 用户输入一个上市公司名称,然后程序自动从东方财富网批量获取上市公司的全部新闻资讯 查看相关元素在源代码中的位置: 新闻标题:<a href="http://finance.eastmoney.com/a/202405233084538683.html" targ…