C# 通过阿里云 API 实现企业营业执照OCR识别

2024-05-14 1253阅读

温馨提示:这篇文章已超过367天没有更新,请注意相关的内容是否还可用!

 

C# 通过阿里云 API 实现企业营业执照OCR识别
(图片来源网络,侵删)

目录

应用场景

关于阿里云企业营业执照OCR识别

开发运行环境

类设计

类属性

类方法

实现代码

创建 Company 类

调用举例 

小结


应用场景

企业营业执照犹如个人的身份证一样,是​​​​​​​工商管理机关发给企业、个体经营者的准许从事某项生产活动的凭证。在企业会员后台注册系统中,验证电子营业执照是一项常用功能,用户上传电子营业执照图片,再通过云API服务的方式进行验证及提取相关的所有信息:主要包括工商信息(如公司名称、法人姓名、经营范围等),位置信息(如二维码位置、印章位置、国徽位置等)。

自动化提取的企业工商可以提高录入效率和准确率,另外位置信息可以帮助我们截取图象做更多的业务处理。

本文将以阿里云提供的 API 服务,实现通过对上传的企业营业执照电子图片进行OCR的识别功能。

关于阿里云企业营业执照OCR识别

官方介绍其每天更新全国企业、个体工商户的数据,为营业执照的OCR识别提供基础服务。

更多信息内容请参照:企业工商数据查询、公司营业执照验证、企业信息查询验证API接口【按天更新】支持新注册企业、个体工商户【最新版】_电商_数据_CRM-云市场-阿里云

开发前请准备如下操作:

1. 注册阿里云账号。

2. 获取开发者 AppCode,后继开发会用到。

开发运行环境

操作系统: Windows Server 2019 DataCenter

.net版本: .netFramework4.0 或以上

开发工具:VS2019  C#

类设计

类 Company (企业类) 设计见下表:

类属性

序号属性名类型说明
1ErrorMessagestring发生任何异常返回的错误信息
2ResultJsonstring请求返回结果Json完整数据
3anglestring图片的角度(顺时针旋转),[0, 90, 180,270]
4reg_numstring注册号,没有识别出来时返回"FailInRecognition"
5namestring公司名称,没有识别出来时返回"FailInRecognition"
6typestring公司类型,没有识别出来时返回"FailInRecognition"
7personstring公司法人,没有识别出来时返回"FailInRecognition"
8establish_datestring公司注册日期(例:证件上为"2014年04月16日",算法返回"20140416")
9valid_periodstring公司营业期限终止日期(例:证件上为"2014年04月16日至2034年04月15日",算法返回"20340415"),当前算法将日期格式统一为输出为"年月日"(如"20391130"),并将"长期"表示为"29991231",若证件上没有营业期限,则默认其为"长期",返回"29991231"
10addressstring公司地址,没有识别出来时返回"FailInRecognition"
11capitalstring注册资本,没有识别出来时返回"FailInRecognition"
12businessstring#经营范围,没有识别出来时返回"FailInRecognition"
13emblemstring#国徽位置[top,left,height,width],没有识别出来时返回"FailInDetection"
14titlestring标题位置[top,left,height,width],没有识别出来时返回"FailInDetection"
15stampstring印章位置[top,left,height,width],没有识别出来时返回"FailInDetection"
16qrcodestring二维码位置[top,left,height,width],没有识别出来时返回"FailInDetection"
17is_graystring是否是复印件
18successstring识别成功与否 true/false

类方法

ocr_business_license 方法无返回类型,调用均返回对应的类属性数据,参数见如下表格:

序号参数名类型说明
1UrlorBase64string传递完整的图片 Url 或者图片的Base64编码

本方法返回 string 类型的对应属性值(如果成功的话)。

实现代码

创建 Company 类

public class Company
{
            public string ResultJson="";
            public string ErrorMessage = "";
            public string angle = "";// : float, #输入图片的角度(顺时针旋转),[0, 90, 180,270]
            public string reg_num = "";// : string, #注册号,没有识别出来时返回"FailInRecognition"
            public string name = "";// : string, #公司名称,没有识别出来时返回"FailInRecognition"
            public string type = "";// : string, #公司类型,没有识别出来时返回"FailInRecognition"
            public string person="";// : string, #公司法人,没有识别出来时返回"FailInRecognition"
            public string establish_date = "";// string, #公司注册日期(例:证件上为"2014年04月16日",算法返回"20140416")
            public string valid_period = "";//: string, #公司营业期限终止日期(例:证件上为"2014年04月16日至2034年04月15日",算法返回"20340415")
                                            //    #当前算法将日期格式统一为输出为"年月日"(如"20391130"),并将"长期"表示为"29991231",若证件上没有营业期限,则默认其为"长期",返回"29991231"。
            public string address = "";// : string, #公司地址,没有识别出来时返回"FailInRecognition"
            public string capital = "";// : string, #注册资本,没有识别出来时返回"FailInRecognition"
            public string business = "";// string, #经营范围,没有识别出来时返回"FailInRecognition"
            public string emblem = "";// : string, #国徽位置[top,left,height,width],没有识别出来时返回"FailInDetection"
            public string title = "";// : string, #标题位置[top,left,height,width],没有识别出来时返回"FailInDetection"
            public string stamp = "";// : string, #印章位置[top,left,height,width],没有识别出来时返回"FailInDetection"
            public string qrcode = "";// : string, #二维码位置[top,left,height,width],没有识别出来时返回"FailInDetection"
            public string is_gray = "";//: false,   #是否是复印件
            public string success="";// : bool, #识别成功与否 true/false
            public void ocr_business_license(string UrlorBase64)
            {
                string host = "https://dm-58.data.aliyun.com";
                string path = "/rest/160601/ocr/ocr_business_license.json";
                string method = "POST";
                String appcode = "您的AppCode";
                String querys = "";
                String bodys = "{\"image\":\""+UrlorBase64+"\"}"; 
                String url = host + path;
                HttpWebRequest httpRequest = null;
                HttpWebResponse httpResponse = null;
                if (0  

调用举例 

调用判断 success 字段是否为true,为true则表示成功,继续输出具体值。

示例代码如下:

string result_base64 = ImgToBase64String("d:\\1.jpg", true);
Company cp = new Company();
cp.ocr_business_license(result_base64);
if (cp.success == "true")
{
    Response.Write("图片的角度:" + cp.angle + "
"); Response.Write("注册号:" + cp.reg_num + "
"); Response.Write("公司名称:" + cp.name + "
"); Response.Write("公司类型:" + cp.type + "
"); Response.Write("公司法人:" + cp.person + "
"); Response.Write("公司注册日期:" + cp.establish_date + "
"); Response.Write("公司营业期限终止日期:" + cp.valid_period + "
"); Response.Write("公司地址:" + cp.bussiness + "
"); Response.Write("注册资本:" + cp.capital + "
"); Response.Write("经营范围:" + cp.bussiness + "
"); Response.Write("国徽位置:" + cp.emblem + "
"); Response.Write("标题位置:" + cp.title + "
"); Response.Write("印章位置:" + cp.stamp + "
"); Response.Write("二维码位置:" + cp.qrcode + "
"); Response.Write("是否是复印件:" + cp.bussiness + "
"); } else { Response.Write("错误信息:" + cp.ErrorMessage + "
"); Response.Write("JSON返回信息:" + cp.ResultJson + "
"); }

小结

调用云接口服务需要费用,我们需要根据实际应用进行成本考虑,官方说明如果查询失败则不扣除费用,具体内容可参考本文第二小节关于阿里云关于阿里云企业营业执照OCR识别API中的链接。

 如何获取图像 base64 数据的方法请参照我的文章:《C# 自动填充文字内容到指定图片》

感谢您的阅读,希望本文能够对您有所帮助。

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]