首页 > 编程语言 >行驶证 OCR 识别 API 接口用C#如何调用

行驶证 OCR 识别 API 接口用C#如何调用

时间:2024-11-17 14:43:31浏览次数:3  
标签:httpRequest appKey String C# System API using OCR

具体来说,行驶证 OCR 识别接口具备强大的功能,可以准确识别包括所有人、品牌型号、住址、车牌号、发动机号码、车辆识别代号、注册日期、发证日期等多个至关重要的字段信息。在实际应用中,该接口通过对行驶证照片进行全面而深入的智能分析,能够极为精准地提取出上述的这些信息。并且,它会将提取出的信息高效地转化为可编辑、可存储的文本格式,为用户后续的操作和管理提供了极大的便利。

以下是行驶证 OCR 识别 API 接口用C#如何调用的示例代码:

                                                      
using System;
using System.IO;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.Text;

public class ApiDemo {
    private const String url = "https://api.shuxuntech.com/v1/vehicle/ocr";
    private const String method = "POST";
    private const String appKey = "您的appKey";
    private const String appSecret = "您的appSecret";

    public static void Main(string[] args) {
        TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
        String timestamp = Convert.ToInt64(ts.TotalMilliseconds).ToString();
        String sign = SHA256(appKey + timestamp + appSecret);

        HttpWebRequest httpRequest = null;
        HttpWebResponse httpResponse = null;

        httpRequest = (HttpWebRequest) WebRequest.CreateDefault(new Uri(url));
        httpRequest.Method = method;
        httpRequest.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";

        httpRequest.Headers.Add("appKey", appKey);
        httpRequest.Headers.Add("timestamp", timestamp);
        httpRequest.Headers.Add("sign", sign);

        String image = "";
        String imgUrl = "";
        String params = "image=" + image + "&imgUrl=" + imgUrl;

        byte[] data = Encoding.UTF8.GetBytes(params);
        using (Stream stream = httpRequest.GetRequestStream()) {
            stream.Write(data, 0, data.Length);
        }

        httpResponse = (HttpWebResponse) httpRequest.GetResponse();
        Console.WriteLine(httpResponse.StatusCode);
        Stream st = httpResponse.GetResponseStream();
        StreamReader reader = new StreamReader(st, Encoding.GetEncoding("utf-8"));
        Console.WriteLine(reader.ReadToEnd());
    }

    public static string SHA256(string str) {
        byte[] SHA256Data = Encoding.UTF8.GetBytes(str);
        SHA256Managed Sha256 = new SHA256Managed();
        byte[] by = Sha256.ComputeHash(SHA256Data);
        return BitConverter.ToString(by).Replace("-", "").ToLower();
    }
}

返回的数据:

(1)正确返回

{
    "code": "0",
    "msg": "成功",
    "isFee": 1,
    "seqNo": "q7q3znh36dl0fxugefouneng076l1kpg",
    "data": {
        "result": 1,
        "resultDesc": "识别成功,有数据",
        "info": {
            "owner": "杭州优行料技有限公司宿迁分公司",
            "issuedBy": "江苏省宿迁市公安局交通警察支队",
            "side": "front",
            "address": "沭阳县蓝天名城19幢A1906室",
            "vehicleType": "小型轿车",
            "registerDate": "2016-12-28",
            "type": 3,
            "engineNo": "GB5002243",
            "issueDate": "2020-03-27",
            "plateNo": "苏HD0083",
            "useCharacter": "非营运",
            "model": "吉利羡日牌MR7002BEV03",
            "vin": "L6T78Y4Y3G680672"
        }
    }
}

(2)错误返回

{
    "code": "1",
    "msg": "参数错误",
    "isFee": 0,
    "seqNo": null,
    "data": null
}

需要特别注意的是,在使用行驶证 OCR 识别 API 之前,我们首先需要申请并获取 API Key,不同的平台获取 API Key 的方式可能会有所不同。但是这个 API Key 将作为我们身份验证的凭证,在后续的接口请求中必须携带。

标签:httpRequest,appKey,String,C#,System,API,using,OCR
From: https://blog.csdn.net/shuxunAPI/article/details/143817040

相关文章

  • MATLAB用CNN-LSTM神经网络的语音情感分类深度学习研究
    全文链接:https://tecdat.cn/?p=38258原文出处:拓端数据部落公众号在语音处理领域,对语音情感的分类是一个重要的研究方向。本文将介绍如何通过结合二维卷积神经网络(2-DCNN)和长短期记忆网络(LSTM)构建一个用于语音分类任务的网络,特别是针对语音情感识别这一应用场景。文中将展示相......
  • Nuxt.js 应用中的 vite:configResolved 事件钩子
    title:Nuxt.js应用中的vite:configResolved事件钩子date:2024/11/17updated:2024/11/17author:cmdragonexcerpt:在Nuxt3中,vite:configResolved钩子允许开发者在Vite配置被解析后访问已解析的配置项。这使得在构建过程中能够根据最终的配置进行动态调整和扩展......
  • E. MEXimize the Score
    首先观察到性质是贡献肯定是cnt[0]+min(cnt[0],cnt[1])+min(cnt[0],cnt[1],cnt[2])....这样的设状态为f[i][j],表示在选到数i时有j个数i产生了贡献的方法数转移分为两种情况,一种是数i的数量限制,一种是f[i-1][j]限制(分类非常重要那么f[i][j]对ans的贡献是包含这种选法的子序列数......
  • Uncertainty of Thoughts: Uncertainty-Aware Planning Enhances Information Seeking
    目录概UoT代码HuZ.,LiuC.,FengX.,ZhaoY.,NgS.,LuuA.T.,HeJ.,KohP.W.andHooiB.Uncertaintyofthoughts:Uncertainty-awareplanningenhancesinformationseekinginlargelanguagemodels.NeurIPS,2024.概通过判断问题所导致的不确定性降低程度来......
  • 9、GIC驱动程序对中断的处理流程
    1.一级中断控制器处理流程对于irq_desc,内核有两种分配方法:一次分配完所有的irq_desc按需分配(用到某个中断才分配它的irq_desc现在的内核基本使用第1种方法。假设GIC可以向CPU发出16~1019号中断,这些数字被称为hwirq。0~15用于Process之间通信,比较特殊。假设要使......
  • Cesium初级开发教程之十五:抗锯齿和分辨率优化
    一、效果图 二、代码//抗锯齿viewer.scene.fxaa=true;viewer.scene.postProcessStages.fxaa.enabled=trueviewer._cesiumWidget._supportsImageRenderingPixelated=Cesium.FeatureDetection.supportsImageRenderingPixelated()vi......
  • C++仍要用的scanf函数介绍
    很多C++初学者刚学便是使用cin和cout,这无可厚非;但C语言中的scanf函数在一些特定情况下仍必不可少,故写给C++初学=者scanf函数的部分介绍以及具体使用情景。scanf输入数字的用法头文件:#include<cstdio> 调用格式:scanf(格式控制字符串,变量地址列表);注:格式说明和各输入......
  • SpringBoot + Activiti工作流项目示例(代码分享)
     前言activiti工作流引擎项目,企业erp、oa、hr、crm等企事业办公系统轻松落地,一套完整并且实际运用在多套项目中的案例,满足日常业务流程审批需求。一、项目形式springboot+vue+activiti集成了activiti在线编辑器,流行的前后端分离部署开发模式,快速开发平台,可插拔工作流服务。......
  • 复杂型数据类型 指向的是对象Object
    在JavaScript中object类型包含的数据有很多,数组、普通对象、DOM节点、内置对象、函数等等都属于obejct类型常用的数组1.为什么要学习数组?之前学习的数据类型只能存储一个值比如:Number/String等我想存储班级中所有的学生的姓名此刻我该如何存储?2.数组的概念......
  • 对比 win32 linux原生 和 qt 的 所有 socket api
    以下是Win32原生、Linux原生和Qt的SocketAPI对比,包括TCP和UDP的功能、特性及优缺点。我们从核心API、特性、性能和常见应用等方面进行分析。1.核心API对比1.1Socket创建与初始化操作Win32(原生)Linux(原生)Qt(跨平台)创建套接字socket()socket()......