首页 > 编程语言 >通用文字识别如何通过C#进行调用?(三)

通用文字识别如何通过C#进行调用?(三)

时间:2024-09-05 19:24:13浏览次数:10  
标签:httpRequest 调用 String C# url httpResponse line 识别

一、什么是通用文字识别?

通用文字识别是一种技术,它能够将图像中的文字转换为可编辑的文本格式。

二、通用文字识别适用哪些场景?

例如:商业场景

1.广告数据分析:可以识别户外广告、宣传海报上的文字内容,结合大数据分析技术,了解广告投放效果和市场趋势。

2.电商商品信息录入:商家可以通过文字识别快速将商品的说明书、标签等信息录入到电商平台,提高商品上架速度。

3.物流行业:识别快递单上的地址、姓名、电话等信息,实现自动化的物流信息录入和分拣。

三、如何用C#进行通用文字识别接口调用?

下面我们以阿里云为例,通过C#实现调用:

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

        private const String host = "https://kzwordocr.market.alicloudapi.com";
        private const String path = "/api-mall/api/general/ocr";
        private const String method = "POST";
        private const String appcode = "你自己的AppCode";

        static void Main(string[] args)
        {
            String querys = "";
            String bodys = "image=image&url=url";
            String url = host + path;
            HttpWebRequest httpRequest = null;
            HttpWebResponse httpResponse = null;

            if (0 < querys.Length)
            {
                url = url + "?" + querys;
            }

            if (host.Contains("https://"))
            {
                ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
                httpRequest = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url));
            }
            else
            {
                httpRequest = (HttpWebRequest)WebRequest.Create(url);
            }
            httpRequest.Method = method;
            httpRequest.Headers.Add("Authorization", "APPCODE " + appcode);
            //根据API的要求,定义相对应的Content-Type
            httpRequest.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
            if (0 < bodys.Length)
            {
                byte[] data = Encoding.UTF8.GetBytes(bodys);
                using (Stream stream = httpRequest.GetRequestStream())
                {
                    stream.Write(data, 0, data.Length);
                }
            }
            try
            {
                httpResponse = (HttpWebResponse)httpRequest.GetResponse();
            }
            catch (WebException ex)
            {
                httpResponse = (HttpWebResponse)ex.Response;
            }

            Console.WriteLine(httpResponse.StatusCode);
            Console.WriteLine(httpResponse.Method);
            Console.WriteLine(httpResponse.Headers);
            Stream st = httpResponse.GetResponseStream();
            StreamReader reader = new StreamReader(st, Encoding.GetEncoding("utf-8"));
            Console.WriteLine(reader.ReadToEnd());
            Console.WriteLine("\n");

        }

        public static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
        {
            return true;
        }

正确返回示例如下:

{
    "msg": "成功",
    "success": true,
    "code": 200,
    "data": {
        "orderNo": "202407102026336827870",
        "info": [
            {
                "line_no": 0, //文本行编号,按从左至右、从上至下顺序依次排列
                "confidence": 0.96655273, //行文本识别置信度 0-1 
                "line_content": "姓名", //识别出的文本行内容
                "line_position": {
                    "x": 53,
                    "width": 53,
                    "y": 66,
                    "line_direction": 0,
                    "height": 22
                }
            },
            {
                "line_no": 1,
                "confidence": 0.98909503,
                "line_content": "陈海江",
                "line_position": {
                    "x": 102,
                    "width": 63,
                    "y": 63,
                    "line_direction": 0,
                    "height": 23
                }
            }
        ]
    }
}


line_no		文本行编号,按从左至右、从上至下顺序依次排列
line_content	识别出的文本行内容
confidence	行文本识别置信度
line_position	文本行位置信息,表示为坐标和旋转角度(左上角X,左上角Y,宽Width,高Height,旋转角度Line Position)+x左上角顶点横坐标X +y	左上角顶点纵坐标Y
width	        矩形框的宽
height		矩形框的高
line_direction	文本行的旋转角度
words		文本行内单字符的内容数组,数组元素为一个Json结构,包含character和confidence
character	候选字符character
confidence	单字符的识别置信度

标签:httpRequest,调用,String,C#,url,httpResponse,line,识别
From: https://blog.csdn.net/loosenivy/article/details/141824708

相关文章

  • HTTP与TCP的关系是什么?HTTP 的端口有什么意义?
    一、HTTP与TCP的关系HTTP(超文本传输协议)是建立在TCP(传输控制协议)之上的应用层协议。1.依赖关系•HTTP依赖TCP提供的可靠数据传输服务。TCP确保数据在网络中准确、有序地传输,并且能够处理数据包丢失、重复和乱序等问题。如果没有TCP的可靠性保障,HTTP传输的数据......
  • 【SpringBoot】使用Nacos服务注册发现与配置管理
    前提:需要提前部署好nacos服务,这里可以参考我的文章:Windows下Nacos安装与配置0.版本信息SpringBoot3.2.8SpringCloud2023.0.1SpringCloudalibaba2023.0.1.0nacos2.3.2本地安装的nacos2.3.0       SpringBoot、SpringCloud、SpringCloudalibaba的版本对应可......
  • 深度解析C++中函数重载与引用
    ......
  • 9.5LeetCode
    80.删除有序数组重复项II给你一个有序数组nums,请你原地删除重复出现的元素,使得出现次数超过两次的元素只出现两次,返回删除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(1)额外空间的条件下完成。 思路:和删除有序数组的重复项1很......
  • YOLOv8 detect person only
    demo.pyfromioimportBytesIOfrompathlibimportPath#pipinstallopencv-pythonpillowultralyticsimportcv2fromPILimportImagefromultralyticsimportYOLO#type:ignore[import-untyped]filename="test.jpg"model=YOLO("yolov......
  • 005.MinIO-DirectPV分布式多租户存储部署
    MinIO部署准备部署概述本实验结合Kubernetes进行MinIO部署,实现MinIO于Kubernetes的融合。minio官方支持通过简单的快速部署,以便于进行基础测试:curlhttps://raw.githubusercontent.com/minio/docs/master/source/extra/examples/minio-dev.yaml-Okubectlapply-fminio-dev......
  • libreoffice24.2--arm环境源码编译--构建RPM包
    1、下载源代码地址:https://zh-cn.libreoffice.org/download/libreoffice/ 2、构建环境,使用docker容器,在容器内编译,使用的基础镜像是:fedora:latest,使用过centos9和centos10,centos9gcc版本不够;centos10安装fakeroot包有问题,无法构建rpm包。3、在解压后的libreoffice-24.2.......
  • icetea sol2
    iceteasol2sol1省流:建立线段树,在每一个节点上维护\(f_u(x)\)表示父节点冰红茶有\(x\)个单位,\(u\)的子树内所有边权值和加上\(u\)到父亲边权的最小值.这样根节点两个子节点的\(f\)之和的最小值即为答案.\(f\)的合并方式不再叙述.为了方便表述,我们记线段树上节点\(u\)的子树......
  • Opencl从零实战(一)--windows搭建开发环境
    系统win11visualstudio2022opencl3.0库:Releases·KhronosGroup/OpenCL-SDK(github.com)在新建的解决方案中项目->[项目名称]和属性点选c/c++->常规->附件包含目录->编辑,将自己下载的oepnclsdk的include路径填进去,作为头文件的引用目录点选链接器->常规->附加库......
  • VScode远程连接报错 Resolver error: Error: Connecting with SSH timed out
    0、引言 导致VScode连接失败的原因有很多。该方法仅针对超时引起的报错。 1、报错内容: [18:01:33.071]Runningscriptwithconnectioncommand:"C:\Windows\System32\OpenSSH\ssh.exe"-T-D53443"docker_sys"bash[18:01:33.072]Terminalshellpath:C:\Window......