简化车辆登记流程:利用腾讯云OCR实现自动化信息识别

news2024/11/25 0:32:50

项目中有一块,需要用到上传车牌车牌号到系统里,用了下腾讯云的ocr车牌号识别做了个小功能。通过腾讯云的orc识别,将车牌号录入到后台。

一,首先我们需要登录到腾讯云,然后搜索一下orc或者车牌号
https://curl.qcloud.com/dPX3dJRL 或者直接访问这个链接
在这里插入图片描述

二,进入后就是文字识别版块的一些介绍,我们直接点击立即使用。
在这里插入图片描述

三,然后根据引导开通一些文字识别接口,腾讯云目前会送接口次数,可以免费使用。
在这里插入图片描述

四,点击接口旁边的文档,可以先熟悉一下文档
在这里插入图片描述

五,然后我们就可以开始上代码,这里以微信的weui为例配合php做了一个简单的例子,大家可以将下面的html和php复制到自己的服务器,进行创建对应文件。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>物业车辆录入</title>
    <link rel="stylesheet" type="text/css" href="https://res.wx.qq.com/open/libs/weui/2.3.0/weui.min.css">
</head>
<body>
    <div class="weui-cells__title">车牌号拍照上传</div>
    <div class="weui-cells weui-cells_form">
        <div class="weui-cell">
            <div class="weui-cell__bd">
                <div class="weui-uploader">
                    <div class="weui-uploader__hd">
                        <p class="weui-uploader__title">车牌号上传</p>
                    </div>
                    <div class="weui-uploader__bd">
                        <ul class="weui-uploader__files" id="uploaderFiles"></ul>
                        <div class="weui-uploader__input-box">
                            <input class="weui-uploader__input" type="file" accept="image/*" capture="camera" id="uploaderInput">
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="weui-btn-area">
        <a class="weui-btn weui-btn_primary" href="javascript:" id="submitBtn">提交</a>
    </div>

    <script src="https://res.wx.qq.com/open/libs/weuijs/1.2.1/weui.min.js"></script>
    <script>
        // 监听文件选择事件
        document.getElementById('uploaderInput').addEventListener('change', function (event) {
            var files = event.target.files;
            var file = files[0];

            if (!file) {
                return;
            }

            // 创建 FileReader 对象,用于读取文件
            var reader = new FileReader();

            reader.onload = function (e) {
                var base64Data = e.target.result; // 获取图片的Base64数据

                // 创建图片元素并显示在页面上
                var img = document.createElement('img');
                img.src = base64Data;
                img.style.maxWidth = '100%';
                img.style.marginTop = '10px';
                document.getElementById('uploaderFiles').innerHTML = '';
                document.getElementById('uploaderFiles').appendChild(img);
            };

            reader.readAsDataURL(file);
        });

        // 监听提交按钮点击事件
        document.getElementById('submitBtn').addEventListener('click', function () {
            var img = document.querySelector('#uploaderFiles img');
            if (!img) {
                alert('请先选择图片');
                return;
            }

            var base64Data = img.src.split(',')[1]; // 提取图片的Base64数据
    // 创建一个XMLHttpRequest对象
    var xhr = new XMLHttpRequest();

    // 设置请求方法和URL
    xhr.open('POST', 'https://你的域名/20230824.php', true);

    // 设置请求头,指定发送的数据类型为form-urlencoded
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

    // 监听请求状态变化
    xhr.addEventListener("load", function() {
        if (xhr.readyState === 4 && xhr.status === 200) {
            var response = JSON.parse(xhr.responseText);
            var color = response.Response.Color;
            var licensePlateNumber = response.Response.Number;
            console.log(response);
            alert("车牌号:" + licensePlateNumber + ",已录入后台 ");
            location.reload();
        }
    });


    // 构造要发送的数据字符串
    var imageUrl = 'http://你的域名/20230824.jpg'; // 图片的URL
     var data = JSON.stringify({ imageUrl: imageUrl });


    // 发送请求
    xhr.send(data);
        });
    </script>
</body>
</html>


<?php

$postData = file_get_contents('php://input');

$data1 = json_decode($postData, true);

// 获取base64Data的值
$ImageUrl = $data1['imageUrl'];

if($ImageUrl){


function get_url($durl)
{
    $headers = array();
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $durl);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_BINARYTRANSFER, true);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLINFO_HEADER_OUT, true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    $data = curl_exec($curl);
    curl_close($curl);
    return $data;
}
$Action = 'LicensePlateOCR';
$SecretId = 'API密钥中的SecretId'; //API密钥中的SecretId
$secretKey = 'API密钥中的SecretKey'; //API密钥中的SecretKey
$Timestamp = time();
$Nonce = rand(1000, 9999);
$Region = 'ap-beijing';
$Version = '2018-11-19';
$param["Nonce"] = $Nonce;
$param["Timestamp"] = $Timestamp;
$param["Region"] = $Region;
$param["SecretId"] = $SecretId;
$param["Action"] = $Action;
$param["Version"] = $Version;
$param["ImageUrl"] = $ImageUrl;

$param["Language"] = "zh-CN";

ksort($param);

$signStr = "GETocr.ap-beijing.tencentcloudapi.com/?";
foreach ($param as $key => $value) {
    $signStr = $signStr . $key . "=" . $value . "&";
}
$signStr = substr($signStr, 0, -1);

$signature = urlencode(base64_encode(hash_hmac("sha1", $signStr, $secretKey, true)));

$URL = "https://ocr.ap-beijing.tencentcloudapi.com/?Action=".$Action."&Version=".$Version."&Region=".$Region."&ImageUrl=".$ImageUrl."&Timestamp=".$Timestamp."&Nonce=".$Nonce."&SecretId=".$SecretId."&Signature=".$signature."&Language=zh-CN";

$data = get_url($URL);
print_r($data);

    
}

?>

六,创建好对应文件后,我们再回到腾讯云这里来,鼠标移到最右上角,头像这里,然后进入访问管理。
在这里插入图片描述
七,然后进入访问密钥,将密钥的SecretId和SecretKey复制到php代码对应的地方。然后在浏览器打开html 就可以使用了
在这里插入图片描述
在这里插入图片描述
八,运行效果如下
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一阶多智能体的平均一致性

数学表达 一阶多智能体的运动学方程可以描述为 x ˙ i ( t ) u i ( t ) , i ∈ { 1 , 2 , 3 , … , N } \dot x_i(t) u_i(t),i\in\{1,2,3,\dots,N\} x˙i​(t)ui​(t),i∈{1,2,3,…,N} 其中 x i ( t ) x_i(t) xi​(t)为状态&#xff0c; u i ( t ) u_i(t) ui​(t)为控制量&…

SIP mini 对讲终端,带sip热点功能

SV-A10/SV-A10W SIP mini 对讲终端&#xff0c;带sip热点功能 SV-A10/SV-A10W 是专门针对行业用户需求研发的一款 SIP mini 对讲产品&#xff0c;外观小巧&#xff0c;功能 强大&#xff0c;集智能安防、音/视频对讲和广播功能于一体&#xff0c;性价比高。支持壁挂式安装/86…

lv3 嵌入式开发-4 linux shell命令(文件搜索、文件处理、压缩)

目录 1 查看文件相关命令 1.1 常用命令 1.2 硬链接和软链接 2 文件搜索相关命令 2.1 查找文件命令 2.2 查找文件内容命令 2.3 其他相关命令 3 文件处理相关命令 3.1 cut 3.2 sed 过滤 3.3 awk 匹配 4 解压缩相关命令 4.1 解压缩文件的意义 4.2 解压缩相关命令 1 …

C++ | 负数比0大?

C | 负数比0大&#xff1f; 文章目录 C | 负数比0大&#xff1f;现象分析剖析赋值运算类型提升标准有符号整数类型的转换级别关系为&#xff1a;char short转换int long double 转换 >>>>> 欢迎关注公众号【三戒纪元】 <<<<< 现象 在 for 的判断…

气传导耳机哪个牌子好?2023气传导耳机排行榜推荐

​在众多的气传导耳机中&#xff0c;如何选择一款适合自己的气传导耳机呢&#xff1f;这需要考虑到自己的需求和预算&#xff0c;同时也需要了解不同品牌和型号的产品特点和优缺点。下面我来推荐几款非常不错的气传导耳机给大家参考&#xff0c;希望大家都能寻找到心仪那款。 …

深入理解联邦学习——联邦学习的价值

分类目录&#xff1a;《深入理解联邦学习》总目录 毫无疑问&#xff0c;如今我们正经历互联网第四次信息革命&#xff0c;坐拥海量的信息与数据。这些数据如果能够用AI的方式进行解读&#xff0c;将会为人类日常生活带来颠覆性变革。联邦学习作为未来AI发展的底层技术&#xff…

C++ 多态语法点

前置知识点 成员变量和成员函数分开存储&#xff0c;只有非静态成员变量才属于类的对象上。 静态成员变量和静态成员函数没有在类上存储。 非静态成员函数也不属于类的对象上 class Animal {public:virtual void speak(){cout<<"动物在说话"<<endl;}}v…

git快速使用

1、下载git 设置签名 2、基本概念 工作区&#xff1a;写代码的地方。 暂存区&#xff1a;.git的.index 工作区&#xff1a;.git 3、常用操作 本地codinggit init&#xff0c; 初始化一个本地仓库&#xff0c;项目根目录下会出现个.gitgit remote add origin gitgithub.com…

介绍GitHub

GitHub 是一个基于互联网的源代码托管平台&#xff0c;可以帮助软件开发者存储和管理源代码&#xff0c;方便团队协作和版本控制。GitHub 的主要功能包括&#xff1a; 代码托管&#xff1a;开发者可以在 GitHub 上创建远程代码仓库&#xff0c;存储和管理他们的源代码。 版本控…

Ubuuntu22.04 LTS 用户管理,新建用户 adduser,sudo,管理员用户

1、新建用户zzsn adduser zzsn 为用户修改密码 # 为用户修改密码 sudo passwd zzsn 2、验证用户是否创建成功 cat /etc/passwd | grep zzsn 查看系统中所有用户&#xff08;可选&#xff09; grep bash /etc/passwd 3、为新用户授予管理或sudo权限&#xff08;可选&#x…

说说 TCP的粘包、拆包

分析&回答 拆包和粘包是在socket编程中经常出现的情况&#xff0c; 在socket通讯过程中&#xff0c;如果通讯的一端一次性连续发送多条数据包&#xff0c;tcp协议会将多个数据包打包成一个tcp报文发送出去&#xff0c;这就是所谓的粘包。如果通讯的一端发送的数据包超过一…

请给系统加个【消息中心】功能,因为真的很简单

个人项目&#xff1a;社交支付项目&#xff08;小老板&#xff09; 作者&#xff1a;三哥&#xff0c;https://j3code.cn 项目文档&#xff1a;https://www.yuque.com/g/j3code/dvnbr5/collaborator/join?tokenCFMcFNwMdhpp6u2s&sourcebook_collaborator# 预览地址(未开发…

【网络编程】TCP/IP协议(互联网的基石)

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言&#xff0c;数据结构&#xff0c;Linux基础&#xff0c;ARM开发板&#xff0c;网络编程等领域UP&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff0…

ChatGLM2 源码解析:`GLMBlock`

# GLM 块包括注意力层、FFN层和之间的残差 class GLMBlock(torch.nn.Module):"""A single transformer layer.Transformer layer takes input with size [s, b, h] and returns anoutput of the same size."""def __init__(self, config: ChatGL…

Abaqus非均质多相材料单元赋值插件:Random Material Mesh - AbyssFish

插件介绍 Random Material Mesh - AbyssFish 插件可在Abaqus软件将材料随机批量赋值给部件的网格单元。插件支持二维及三维部件的所有网格类型&#xff0c;可指定任意多种&#xff08;实际材料种类&#xff1c;10^7&#xff09;不同材料。注意&#xff0c;插件仅提供空材料指定…

用Qt自制一个小闹钟

小闹钟 功能 当按下启动按钮时&#xff0c;停止按钮可用&#xff0c;启动按钮不可用&#xff0c;闹钟无法设置&#xff0c;无法输入自定义内容 当按下停止按钮时&#xff0c;暂停播报&#xff0c;启动按钮可用&#xff0c;闹钟可以设置&#xff0c;可以输入自定义内容 .pro文…

Jetsonnano B01 笔记1:基础理解—网络配置—远程连接

今日开始学习 Jetsonnano B01&#xff0c;这是一台小电脑&#xff0c;可以用来&#xff1a; 运行现代 AI 负载&#xff0c;并行运行多个神经网络&#xff0c;以及同时处理来自多个高清传感器的数据&#xff0c;可广泛应用与图像分类、对象检测、图像分割、语音处 理等领域。它…

Jupyter Notebook 好用在哪?

Jupyter Notebook 是一个 Web 应用程序&#xff0c;便于创建和共享文学化程序文档&#xff0c;支持实时代码、数学方程、可视化和 Markdown&#xff0c;其用途包括数据清理和转换、数值模拟、统计建模、机器学习等等。目前&#xff0c;数据挖掘领域中最热门的比赛 Kaggle 里的资…

手机版翻页电子产品册是如何制作的?

手机版翻页电子产品册是一种通过手机设备进行浏览和翻阅的电子产品手册&#xff0c;闲来看一本手机就能阅览的产品图册吧&#xff01; 这本产品图册是在FLBOOK官网看见的&#xff0c;并且FLBOOK官网还支持在线制作&#xff0c;还有很多模板资源供小白自行创作 1.打开浏览器搜索…

奉化老牌多个域名通配符SSL证书

通配符SSL证书可以保护主域名以及主域名下的无限子域名&#xff0c;而多个通配符SSL证书则组成了一个新的SSL证书——多域名通配符SSL证书。多域名通配符SSL证书是一种特殊的SSL证书&#xff0c;他可以同时保护多个不同的泛域名&#xff0c;这种SSL证书非常适合那些拥有大量不同…