C#实战:基于腾讯OCR技术实现企业证书识别和数据提取实践

news2024/10/7 14:26:36

一、OCR技术介绍

在当今数字化时代,OCR(Optical Character Recognition)识别技术正发挥着越来越重要的作用。OCR技术通过将图像中的文字转化为可编辑的文本形式,实现了对大量纸质文档的数字化处理和信息提取。常见的有企业资质证书的识别到身份证、护照等各类证件的自动识别等方面,OCR技术正在为各行各业无纸化办公起到了非常重要的作用。

二、OCR技术的工作过程

OCR(Optical Character Recognition)技术的原理是通过将图像中的文字转化为可编辑的文本形式。下面是OCR技术的基本原理步骤:

图像预处理:对输入的图像进行预处理。这包括去除图像中的噪声、调整图像的亮度和对比度,以及对图像进行二值化处理,将文字区域与背景区域分离。

文字检测:在预处理后的图像中,使用文字检测算法来识别出文字的位置和边界框。常用的文字检测算法包括基于边缘检测、区域生长、模板匹配等方法。

字符分割:对于检测到的文字区域,需要将每个字符进行分割,以便单独处理。字符分割算法可以根据字符之间的间距、连通性和像素密度等特征进行处理。

特征提取:对于每个字符,需要提取出其特征,以便与已知的字符进行比较和匹配。常用的特征提取方法包括基于形状、纹理、投影等的特征描述。

字符识别:通过将提取的字符特征与预先训练好的模型进行比较,来识别每个字符。常用的字符识别方法包括基于模板匹配、统计模型(如隐马尔可夫模型)和深度学习模型(如卷积神经网络)等。

后处理:在字符识别后,可以进行一些后处理步骤来提高识别结果的准确性。这包括纠正错误、去除冗余字符、校正文字方向等。

三、腾讯云文字识别介绍

腾讯云文字识别(Optical Character Recognition,OCR )基于行业前沿的深度学习技术,将图片上的文字内容智能识别成为可编辑的文本。支持通用文字、卡证文字、票据单据、特定场景等多场景下的印刷体、手写体文字识别,同时支持票据核验功能,支持提供定制化服务,可以有效地代替人工录入信息。

腾讯云文字识别支持多种开发语言集成、案例丰富、接口稳定性强对于开发人员非常容易上抽,快速集成文字识别的需求。

四、腾讯云文字识别功能特点

多种识别能力:腾讯云文字识别服务支持多种文字识别能力,包括通用文字识别、身份证识别、银行卡识别、车牌识别、名片识别、手写体识别等。这些能力可以满足不同场景下的文字识别需求。

高精度识别:腾讯云文字识别服务基于深度学习技术,具备较高的文字识别准确率。它可以识别出图像中的文字内容,并提供可编辑的文本结果,以便后续处理和分析。

多语言支持:腾讯云文字识别服务支持多种常见语言的文字识别,包括中文、英文、中英文、日语、韩语、西班牙语、法语、德语、葡萄牙语、越南语、马来语、俄语、意大利语、荷兰语、瑞典语、芬兰语、丹麦语、挪威语、匈牙利语、泰语,阿拉伯语20种语言。这使得它可以应用于不同语言环境下的文字识别任务。

图片格式支持:腾讯云文字识别服务支持多种常见的图片格式,包括JPEG、PNG、BMP等。这使得它可以处理不同格式的图像文件,方便开发者进行文字识别操作。

简单易用的API接口:腾讯云文字识别服务提供简单易用的API接口,开发者只需按照文档说明进行请求和解析即可实现文字识别功能。这使得开发者可以快速集成和使用该服务。

可扩展性和稳定性:作为腾讯云的云服务,文字识别服务具有良好的可扩展性和稳定性。它可以根据实际需求进行弹性扩容,并提供高可用性和可靠性的服务保障。

五、集成案例

今天小编就来给给大家介绍一下腾讯云OCR服务并且通过C#代码实现企业资质证书的快速识别功能。

5.1 开通服务

需要登录自己的腾讯云账户,可以使用微信扫码登录。然后进入腾讯云的OCR主页。

OCR主页:https://cloud.tencent.com/product/ocr

点击立即使用按钮进入开通服务页面

然后我们点击开通服务,等待开通完成,进入管理控制台。

服务开通后,进入OCR API调试页面,可以进行测试确认服务是否正常

访问地址:

https://console.cloud.tencent.com/api/explorer?Product=ocr&Version=2018-11-19&Action=BizLicenseOC

下图展示接口调用是正常的。右侧可以看到支持主流的开发语言比如:Java、Net、PHP、Python、C++、Golang。

5.2 申请个人密钥

然后申请个人的API密钥,这个是系统集成服务必备的环节。

访问地址:

https://console.cloud.tencent.com/cam/capi

可以点击新建密钥,然后创建成功后,如下图展示效果:

5.3 代码集成

这里使用Net方式集成,首先使用VS2019创建一个Net控制台应用。

创建完成后,引用腾讯云OCR服务的依赖包,这里直接使用nuget直接搜索安装。

方法:打开nuget包管理器,输入 “TencentCloudSDK.Ocr” 进行搜索,然后点击安装即可 。

安装成功后,编写program.cs 代码,完整代码如下:

这里我们使用url的方式进行企业资质证书的识别。

using System;
using System.Threading.Tasks;
using TencentCloud.Common;
using TencentCloud.Common.Profile;
using TencentCloud.Ocr.V20181119;
using TencentCloud.Ocr.V20181119.Models;
namespace EnterpriseRecognition
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                // 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密
                // 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305
                // 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
                Credential cred = new Credential
                {
                    SecretId = "你的SecretId",
                    SecretKey = "你的SecretKey"
                };
                // 实例化一个client选项,可选的,没有特殊需求可以跳过
                ClientProfile clientProfile = new ClientProfile();
                // 实例化一个http选项,可选的,没有特殊需求可以跳过
                HttpProfile httpProfile = new HttpProfile();
                httpProfile.Endpoint = ("ocr.tencentcloudapi.com");
                clientProfile.HttpProfile = httpProfile;

                // 实例化要请求产品的client对象,clientProfile是可选的
                OcrClient client = new OcrClient(cred, "ap-beijing", clientProfile);
                // 实例化一个请求对象,每个接口都会对应一个request对象
                BizLicenseOCRRequest req = new BizLicenseOCRRequest();
                req.ImageUrl = "https://p8.itc.cn/q_70/images03/20201121/bfa9d2cace6740fb9ace776250d6cd0a.jpeg";

                // 返回的resp是一个BizLicenseOCRResponse的实例,与请求对象对应
                BizLicenseOCRResponse resp = client.BizLicenseOCRSync(req);
                // 输出json格式的字符串回包
                Console.WriteLine(AbstractModel.ToJsonString(resp));
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
            Console.Read();
        }
    }
}

解决方案如下图:

找一个营业执照的图片,我们可以通过网络搜索 获取图片地址:

运行代码如下图:

格式化效果如下:

{
    "RegNum":"",
    "Name":"大连长山渔港水产有限公司",
    "Capital":"",
    "Person":"王黎明",
    "Address":"辽宁省大连市长海县小长山岛镇房 身村盐场屯",
    "Business":"许可项目:食品生产,食品经营(依法须经批准的项目,经相关部门批准后方可开展经营活动,具体经营项目以审 批结果为准)一般项目;水产品批发,水产品收购,水产品零售(除依法须经批准的项目外,凭营业执照依法自主开展经营活动)",
    "Type":"有 限责任公司(法人独资)",
    "Period":"2020年11月20日至长期",
    "ComposingForm":"",
    "SetDate":"2020年11月20日",
    "RecognizeWarnCode":[

    ],
    "RecognizeWarnMsg":[

    ],
    "IsDuplication":-1,
    "RegistrationDate":"",
    "RequestId":"3b68eaff-5c51-4f3a-b592-34d7b14bc45b"
}

基于拿到的接送数据,我们就可以进行相应业务的处理了。这里只做功能演示,功能只做到这一步。

六、总结

腾讯云文字识别服务是一种高性能、高准确率的文字识别服务,可广泛应用于各种文字识别场景,如图像OCR、身份证识别、银行卡识别等。它提供简单易用的API接口,方便开发者快速集成和使用。有文字识别需要的朋友推荐使用!

腾讯云OCR技术助力企业证书识别和数据提取实践

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

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

相关文章

【uniapp】 实现公共弹窗的封装以及调用

图例&#xff1a;红框区域为 “ 内容区域 ” 一、组件 <!-- 弹窗组件 --> <template> <view class"add_popup" v-if"person.isShowPopup"><view class"popup_cont" :style"{width:props.width&&props.width&…

【VLDB 2023】基于预测的云资源弹性伸缩框架MagicScaler,实现“高QoS,低成本”双丰收

开篇 近日&#xff0c;由阿里云计算平台大数据基础工程技术团队主导&#xff0c;与计算平台MaxCompute团队、华东师范大学数据科学与工程学院、达摩院合作&#xff0c;基于预测的云计算平台资源弹性伸缩框架论文《MagicScaler: Uncertainty-aware, Predictive Autoscaling 》被…

解锁市场进入成功:GTM 策略和即用型示例

在最初的几年里&#xff0c;创办一家初创公司可能会充满挑战。根据美国小企业管理局的数据&#xff0c;大约三分之二的新成立企业存活了两年&#xff0c;几乎一半的企业存活了五年以上。导致创业失败的因素有市场需求缺失、资金短缺、团队不合适、成本问题等。由此&#xff0c;…

Flutter可执行屏幕动画的AnimateView

1.让动画使用起来就像使用widget。 2.可自定义动画。 3.内置平移动画。 演示&#xff1a; 代码: import dart:math; import package:flutter/cupertino.dart;class AnimateView extends StatefulWidget {///子Widgetfinal Widget child;///动画自定义final IAnimate? anim…

什么,一条指令直接黑了数据库!

什么&#xff0c;一条指令直接黑了数据库&#xff01; shigen最近研究了一下一款渗透工具sqlMap。它一款流行的开源工具&#xff0c;用于自动化SQL注入攻击和渗透测试。它专门设计用于检测和利用Web应用程序中的SQL注入漏洞。SQLMap具有丰富的功能集&#xff0c;可自动检测和利…

工厂方法模式的概述和使用

目录 一、工厂方法模式概述1. 定义2. 使用动机 二、工厂方法模式结构1. 模式结构2. 时序图 三、工厂方法模式的使用实例四、工厂方法模式的优缺点五、工厂方法模式在Java中应用 原文链接 一、工厂方法模式概述 1. 定义 工厂方法模式(Factory Method Pattern)又称为工厂模式&…

高通面临难题,Oryon核心存在问题,高通8cx Gen 4芯片将推迟发布

"高通公司面临难题&#xff0c;可能会导致骁龙8cx Gen 4的发布时间推迟"&#xff0c;关于骁龙8cx Gen 4处理器&#xff0c;还有一些其他值得关注的特点和功能。首先&#xff0c;据悉&#xff0c;骁龙8cx Gen 4采用了高通自家研发的Oryon核心架构&#xff0c;这是一项…

春秋云镜 Brute4Road

flag1 fscan扫描发现&#xff0c;6379开放ftp可以匿名登录 这里直接尝试了去打redis但是只有主从复制能成功&#xff08;这里应该是靶场有设置吧&#xff0c;对6379操作过后再次操作就会显示端口拒绝访问直接重置就可以了&#xff09; 之后用脚本一把梭哈即可获得shell #更改…

C++ list模拟实现

list模拟实现代码&#xff1a; namespace djx {template<class T>struct list_node{T _data;list_node<T>* _prev;list_node<T>* _next;list_node(const T& x T()):_data(x),_prev(nullptr),_next(nullptr){}};template<class T,class Ref,class Pt…

好用的网页制作工具就是这6个,快点来看!

对于网页设计师来说&#xff0c;好用的网页设计工具是非常重要的&#xff0c;今天本文收集了6个好用的网页设计工具供设计师自由挑选使用。在这6个好用的网页设计工具的帮助下&#xff0c;设计师将获得更高的工作效率和更精致的网页设计效果&#xff0c;接下来&#xff0c;就一…

Android studio APK切换多个摄像头(Camera2)

1.先设置camera的权限 <uses-permission android:name"android.permission.CAMERA" /> 2.布局 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"and…

vue过渡及动画

文章目录 前言类名使用自己定义动画样式多个元素过渡使用第三方库 前言 对于vue中的过渡与动画&#xff0c;官网上是这样概述的&#xff1a; Vue 在插入、更新或者移除 DOM 时&#xff0c;提供多种不同方式的应用过渡效果。包括以下工具&#xff1a; 在 CSS 过渡和动画中自动…

基于空洞卷积DCNN与长短期时间记忆模型LSTM的dcnn-lstm的回归预测模型

周末的时候有时间鼓捣的一个小实践&#xff0c;主要就是做的多因子回归预测的任务&#xff0c;关于时序数据建模和回归预测建模我的专栏和系列博文里面已经有了非常详细的介绍了&#xff0c;这里就不再多加赘述了&#xff0c;这里主要是一个模型融合的实践&#xff0c;这里的数…

避雷!教你正确区分流量卡,不看可别后悔!

分不清真假流量卡&#xff1f; 想要手机流量卡&#xff0c;不小心买到了物联卡&#xff0c;结果被商家割了韭菜&#xff1f; 对于流量卡的套路太多了&#xff1f;你是否还傻傻分不清楚&#xff0c;今天&#xff0c;这篇文章教你正确区分这两种不同类型的卡。 ​ 赶紧收藏&am…

文件重命名与隐藏编号一键搞定!让不同类型的文件整齐有序

大家好&#xff01;在整理和管理不同类型的文件时&#xff0c;我们经常遇到文件名不规范、编号杂乱的情况&#xff0c;使得文件整体显得混乱无序。为了帮助您达到整齐有序的效果&#xff0c;我们自豪地推出了一款高效的工具——文件重命名与隐藏编号软件&#xff01;让您能够轻…

Redis进阶 - JVM进程缓存

原文首更地址&#xff0c;阅读效果更佳&#xff01; Redis进阶 - JVM进程缓存 | CoderMast编程桅杆https://www.codermast.com/database/redis/redis-advance-jvm-process-cache.html 传统缓存的问题 传统的缓存策略一般是请求到达 Tomcat 后&#xff0c;先查询 Redis &…

Qt开发实例_实时监测磁盘剩余空间

一、前言 当计算机磁盘空间不足,会导致应用程序无法继续存储数据,导致错误和不稳定的情况。所以,实时检测磁盘空间剩余大小对于许多应用程序来说都非常重要。 这种需求在许多应用程序中都存在,例如文件管理器、图像编辑器、视频播放器、云存储服务等等。在这些应用程序中…

Python+Appium自动化测试-编写自动化脚本

之前已经讲述怎样手动使用appium-desktop启动测试机上的app&#xff0c;但我们实际跑自动化脚本的过程中&#xff0c;是需要用脚本调用appium启动app的&#xff0c;接下来就尝试写Python脚本启动app并登陆app。环境为Windows10 Python3.7 appium1.18.0 Android手机 今日头条…

Apex导航菜单权限动态分配的实现

改动之处 return is_have_permission_wxx(V(WXX_USER_ID), 2,V(WXX_ROLE_ID)); 改之后 return is_have_permission_wxx(V(USER_ID), 2,V(ROLE_ID)); 创建新的动态菜单“动态菜单1” 共享组件→列表→创建→动态 selectlevel,m1.NAME label,f?p&||APP_ID.:||m1.…

17-会话机制

cookie 和 session cookie存储在本地 session是在服务器端进行用户信息的保存,一个字典 Cookie: # 1. 设置 : 通过response对象设置response redirect(xxx)response render_template(xxx)response Response(xxx)response make_response(xxx)response jsonify(xxx)# 通过…