-
【功能模块】Notebook 【操作步骤&问题现象】1、脚本在ModelArts notebook中 调用SDK完成批量Ocr身份证9要素的识别和获取。#!/usr/bin/python3# encoding:utf-8import jsonimport base64import requests# import toolsfrom colorama import initfrom configparser import ConfigParserinit(autoreset=True)# from HWOcrClientAKSK import HWOcrClientAKSKfrom HWOcrClientToken import HWOcrClientTokendef ocr(): username = "xxxxxx" password = "xxxxxx" domain_name = "xxxxxx" # If the current user is not an IAM user, the domain_name is the same as the username. region = "cn-north-4" # cn-north-1,cn-east-2 etc. # req_uri = "/v1.0/ocr/id-card" req_uri = "/v2/056e1bb6468025122f3dc00e0e665453/ocr/id-card" # req_uri = "/v2/056e1bb6468025122f3dc00e0e665453/ocr/auto-classification" # img = "./data/id-card-demo.jpg" # File path or URL of the image to be recognized. path = './data/' print("文件名: " + path) # 二进制方式打开图片文件 f = path # f = open(path+"\\"+filename, 'rb') # img = base64.b64encode(f.read()).decode("utf-8") # params = {"id_card_side":"front","image":img} # request_url = request_url + "?access_token=" + access_token # headers = {'content-type': 'application/x-www-form-urlencoded'} option = {} option["side"] = "front" # payload = {"image": img} # try: ocrClient = HWOcrClientToken(domain_name, username, password, region) response = ocrClient.request_ocr_service_base64(req_uri, f, option) if response.json(): print(response.json()) if 'result' not in response.json().keys(): return name = response.json()["result"]["name"] sex = response.json()["result"]["sex"] nation = response.json()["result"]["ethnicity"] birth = response.json()["result"]["birth"] num = response.json()["result"]["address"] # address = response.json()["error_code"]["AIS.0104"] address = response.json()["result"]["number"] print("姓名:" + name) print("身份证号码:" + num) #tools.sheet_append(name, sex, nation, birth, num, address, filename) else: print("识别错误") #tools.sheet_append(name="识别错误", sex="", nation="", birth="", num="", address="", filename=filename) print("\033[32m-----------------------------------")if __name__ =="__main__": ocr()错误:文件名: ./data//home/ma-user/anaconda3/envs/TensorFlow-1.13.1/lib/python3.6/site-packages/urllib3/connectionpool.py:858: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings InsecureRequestWarning)Token obtained successfully. [Errno 21] Is a directory: './data/'---------------------------------------------------------------------------AttributeError Traceback (most recent call last)<ipython-input-2-c7099533fc21> in <module>() 55 56 if __name__ =="__main__":---> 57 ocr()<ipython-input-2-c7099533fc21> in ocr() 35 ocrClient = HWOcrClientToken(domain_name, username, password, region) 36 response = ocrClient.request_ocr_service_base64(req_uri, f, option)---> 37 if response.json(): 38 print(response.json()) 39 if 'result' not in response.json().keys():AttributeError: 'NoneType' object has no attribute 'json'【截图信息】【日志信息】(可选,上传日志内容或者附件)代码目录:apig_sdk3 days ago data3 days ago Untitled1.ipynbRunning6 minutes ago9.79 kBapisettings.py3 days ago2.32 kBAutoClassificationDemo.py3 days ago4.97 kBHWOcrClientToken.py3 days ago6.14 kBocr.py3 days ago1.97 kBtools.py
-
OCR服务以开放API(Application Programming Interface,应用程序编程接口)的方式提供文字识别能力,将图片或扫描件中的文字识别成可编辑的文本。调用API接口需要具备一定的编程开发能力,文字识别后返回的结果为JSON格式,用户需要通过编程来处理识别结果。您可以根据以下介绍选择合适的使用方式:通过华为云API Explorer在线调用OCR服务API。如果您没有代码编写基础,希望能在线调用API,快速体验OCR服务。该方式只需要在API Explorer的OCR服务页面输入相关参数,单击“调试”查看返回结果。通过可视化工具(如curl、Postman)发送请求调用OCR服务API。详细介绍请参见如何使用Postman调用华为云OCR服务。如果您是开发初学者,有代码编写基础,对HTTP请求与编程基础有一定的了解,您可以通过postman方式调用接口使用服务。该方式需要下载工具(如curl、Postman)并安装,熟悉工具使用方法。通过编写代码调用OCR服务API。详细介绍请参见如何使用SDK调用华为云OCR服务。如果您是开发工程师,熟悉代码编写,华为云为您提供Java、Python、iOS、Android、Node.js等版本的SDK,方便您快速集成。该方式需要编写并调试代码,安装配置开发环境。>>>详细说明文档:https://support.huaweicloud.com/qs-ocr/ocr_05_0001.html
-
1)数据预处理通过预处理操作,可以提高OCR服务的精度,以高铁为例,需要先将整个发票的4个顶点标注出来,然后利用ModelArts标注工具进行一键式矫正。2)数据标注通常来说,数据越多,标注结果越正确,标注样本越多样化,则训练效果越好。OCR的标注稍微复杂一些,除了标注文字内容,位置,还需要标注文字的属性,文字属性用于结构化的识别结果输出,ModelArts提供了标签多属性的标注能力,可以同时完成文字位置,属性和内容的标注。3)数据增强样本的分布不均会影响模型的学习效果,模型会倾向于学习数据量较多的样本特征,而将数据量较少的样本特征作为噪声处理,ModelArts支持数据自动增强功能,可以自动对数据进行扩充,将十几张甚至上百张的标注数据增量到几千万张,满足模型训练的数据要求,保证数据的多样性。4)模型训练和应用生成训练完后,可以通过ModelArts的AIFIlow将多个模型编排成一个OCR应用,应用包括;预处理,文字定位,文字识别,结构化信息提取。结构化提取是将所标注的属性和文字识别结果匹配起来,形成可被直接理解的信息。5)推理部署不同的OCR应用在推理部署阶段大多都是类似的,区别在于部署场景和方式的不同。企业级AI平台可以根据对外提供服务的具体需要,在ModelArts上选择不同的部署方式。
-
基于自定义模板的OCR开发流程传统开发过程需要进行大批量训练数据标注,模型的训练,服务的测试等一系列环节,每个环节对开发者的经验都有一定的要求。当识别的文件类型,格式较为繁多,难以对每种板式进行逐个模型训练和定制时,可以采用自定义模板的开发方式。1)创建模板在自定义模板控制台可以创建模板,并选择一张模板图片进行上传,模板图片的质量直接影响到模板的可靠性,进而影响OCR识别效果,模板图像需要满足规定内的条件。上传模板图片后进入编辑模式,可对模板图片进行自定旋转,去印章,自动降噪,自动亮度,自动剪辑,去水印,去雾等预处理。2)选择参照字段参照字段为模板图片中文字及位置固定的文字内容,用于自动校正和模板匹配,除了满足文字内容和位置不变的要求之外,参照字段还需要满足规定内的条件。3)选择识别区并不是图片中的所有字段都需要识别,因此需要根据业务需求选择区别,并对识别区内字段命名,从而建立“建-值”字段的对应关系。可以在模板图片上选择需要识别的字段,值得注意的是,选择识别区时应尽量扩大识别区范围,以防止漏检。4)评估和发布模板在正式部署之前,需要对模板进行评估。提高模型质量的几点建议:1,增加参照字段的数量 2,调整参照字段所在框内空白区域 3,扩大识别区详细请看238页-242页
-
OCR涉及的算法流程比较复杂,而且随着场景的变化,OCR的解决方案也会发生相应的变化,为了更好地使能上层企业级平台,ModelArts Pro将更多的OCR能力封装为基础关键模块,包含数据方面的数据增强,数据预处理,智能数据标注,数据模块;算法模型方面的预置算法,自动训练和调参,自动评估,自动编排和部署等。ModelArts Pro对上层平台提供简单易用的OCR开发模板和套件。ModelArts Pro内置高精度的通用文字,通用表格,盖章检测识别,手写文字识别等基础预训练模型,企业级OCR平台可以基于这些模型进行增量训练,从而在进一步收缩开发时间的同时,保证模型精度。企业内部也可以基于ModelArts基础平台自定义OCR工作流模板,并封装自己所需的OCR相关数据能力,算法,和模型套件等,从而形成自定义的开发套件。企业级OCR平台->企业级OCR业务管理->企业级OCR开发管理,企业级OCR部署和运维管理ModelArts Pro企业级OCR开发套件;基于自定义模块的OCR开发工作流模板,基于重训练的OCR开发工作流模板OCR数据增强,OCR数据预处理,OCR智能数据标注,OCR数据模板,OCR预置算法和模型,OCR模型自动评估,OCR多模型自动编排和部署企业自定义OCR开发套件;自定义OCR工作流模板,自定义OCR数据能力,自定义OCR算法和模型能力ModelArts AI应用开发平台,AI应用部署平台,AI分享交易平台
-
OCR传统OCR是基于图像处理,特征提取和统计机器学习分类器完成的。基于深度学习的OCR则是利用自动特征学习能力,可以端到端地检测出文本的类别及位置信息,并自动实现文字的识别。1,传统OCR算法流程传统OCR算法的基本流程主要包含如下几个步骤:1,文本图像矫正2,文本区域定位3,字符分割4,特征提取和文字分类5,后处理核心技术 旋转透视变换->文字图像矫正 连通域分析MSER->文字区域定位 二值化投影分析及规则->字符分割 机器学习,深度学习->特征提取和文字分类 规则语言规模->后处理技术流程->文字图像矫正 ->文字区域定位 ->字符分割 ->特征提取和文字分类 ->后处理1)文本图像矫正在文本检测之前需要对原图进行矫正,以确保图片中的文字是水平方向,从而方便标志者标注,也可以提升后续文本检测的准确性,图像矫正的方法-水平矫正,透视矫正原始图像没有太大透视变形,只发生了角度旋转,建议使用水平矫正方法,如果图像存在透视表现,则建议使用透视矫正方法。2)文本区域定位首先对输入图像进行二值化处理,出去背景干扰,然后采用形态学处理等方法进行连通域合并,定位到文字块之后,还需要进行轮廊检测,最后使用轮廊的最大外接矩形最为最终文本块的文本检测区域。3)字符分割字符分割的主要思路是,基于车牌的二值化结果或边缘提取结果,利用字符的结构特征、字符间的相似性、字符间间隔等信息,一方面把单个字符分别提取出来,也包括粘连和断裂字符等特殊情况的处理。传统字符分割的流程大致如下检测出文本行->连通域算法,垂直投影算法->切割单个字符连通域轮廊切割算法二值化->单字符轮廊查找->规律经验过滤->外接矩形->NMS过滤垂直投影切割算法统计整张二值化后的图像上每列像素值为255的像素点个数,根据统计大致可判断出最适合做切分文字字符的列。4)特征提取和文字分类字符分类之前,将字符切片的尺寸进行归一化,再用HOG等经典算子提取字符的特征,然后选择支持向量机,逻辑回归,决策树等分类器进行字符分类,模型训练完后,在端到端验证。5)后处理对于一些不可控因素(环境因素),会有少量个别字符被识别错误。2,基于深度学习的OCR算法流程具体流程简化为3步 文本区域定位,文字识别,后处理1,文本区域定位文字区域定位在本质上属于目标检测,文字作为一种特殊的目标,通常具有极端的宽高比和其他独有特征。基于深度学习的文本区域定位技术主要采用基于目标检测的算法,基于图像分割的算法。基于目标检测的孙发更侧重比较规整的,可以用四点表示的文本;而基于分割的算法则更多倾向于各种不规则形状的文字。2,文字识别传统文字识别方法最常用的思想是把文字分成一个个字符,然后直接分类;而深度学习基于整个序列的特征做预测,采用注意力机制将识别区域集中到某个位置,提高准确率。ORNN是一个端到端可训练的文字识别算法,已经被大量OCP解决方案广泛使用。3,后处理后处理技术既可以用传统的统计或者字典库等技术,也可以结合深度神经网络进行语义层面的纠错。
-
OCR是一个非常常见的应用,基于ModelArts构建企业级OCR开发套件及其应用开发套件流程。OCR主要包含检测和识别等过程,其中文字检测是指判断是否存在文字块(或文本区域),并给出具体文字块位置的过程;文字识别是指把文字块内的字符转化为计算机可读取和编辑的符号的过程。文档材料在企业内无处不在,OCR主要的应用场景,财务,银行证券,保险,教育,物流1,财务财务报销是每个企业内部必备的流程,但是发票的种类很多,常见的有专用发票,出租车发票,火车票,飞机行程票等等。这些发票不仅样式差异大,而且也经常出现错行等情况。2,银行证券通常银行网络与外部网络是隔绝的,内外部的数据传递比较依赖纸质件,同时涉及的纸质件种类也比较多。对于常见的表格类数据而言,表格线构成复杂且数据密集,对识别完成以后的结构化提取存在很大的挑战;其他数据也包含了各种类型的盖章干扰,手写文字识别,签名比对等问题。3,保险保险行业有一个典型的远程理赔场景,如在某医疗相关的理赔中,由于每个医疗单位的医疗检验单,报告单等都有差别,所以不同地区的客户提供的发票样式不同。4,教育学生的日常检测,家庭作业,考试等审阅的过程十分耗时,如果采用ORC技术,那么考试成绩的录入,客观题的评判,公式的识别与计算等都可以自动化5,物流物流行业是存在海量重复且对效率要求极高的行业,在对外贸易中,常常会有来自全球各地各类报关单据。这些单据没有统一制式,原始版本完成不同,且一直不断地变化和更新,由于无法直接约束数据的格式,只能由人工手动处理录入信息,OCR技术可以在此场景下发挥作用。
-
对于两阶段的可以分开来看,分别是检测和识别阶段(1)检测阶段:先按照检测框和标注框的IOU评估,IOU大于某个阈值判断为检测准确。这里检测框和标注框不同于一般的通用目标检测框,是采用多边形进行表示。检测准确率:正确的检测框个数在全部检测框的占比,主要是判断检测指标。检测召回率:正确的检测框个数在全部标注框的占比,主要是判断漏检的指标。(2)识别阶段: 字符识别准确率,即正确识别的文本行占标注的文本行数量的比例,只有整行文本识别对才算正确识别。(3)端到端统计: 端对端召回率:准确检测并正确识别文本行在全部标注文本行的占比; 端到端准确率:准确检测并正确识别文本行在 检测到的文本行数量 的占比;准确检测的标准是检测框与标注框的IOU大于某个阈值,正确识别的的检测框中的文本与标注的文本相同。
-
人工智能应用开发的全流程大致包括开发态流程和运行态流程。开发态流程是对数据源不断地进行处理并得到人工智能应用的过程;而运行态流程相对简单,主要是将人工智能应用部署起来使用的过程。当人工智能应用在运行态推理效果不好时需要将推理数据返回给开发态进行进一步迭代调优。 在开发态流程中,每个步骤都会基于一定的处理逻辑对输入数据进行处理,并得到输出数据(中间结果或最终结果),同时也可能会产生模型或知识,或其他一些可能的元信息文件(如配置项文件等)。在处理的过程中,可能会接收外部输入(如用户的输人、配置、其他外部环境的输入等)。每个处理步骤的处理逻辑可以是平台内置的处理逻辑,也可以是开发者自定义的处理逻辑(如开发者利用平台的开发调试环境开发的一套代码)。当数据源经过一系列处理之后,会得到最终的结果数据(如图像识别精度等报表数据)。在这一系列的处理步骤中,可能会出现反复,当我们对某个处理步骤输出的数据不满意时,可以重新修正输入数据或者处理逻辑。 上述一系列的处理步骤结束后,中间所产生的一些模型、知识或者配置可以一起编排成一个人工智能应用。这个人工智能应用就是开发态输出的主要成果。紧接着就进入运行态流程,将人工智能应用部署为云上的一个推理服务实例,或者打包为个SDK,业务客户端就可以调用其接口,发送请求并得到推理结果。同时,平台在被用户授权的情况下,可以对推理数据和结果进行监测,一旦发现问题,可以将推理数据重新接入开发态的数据源,进行下一步迭代开发,并生成新的人工智能应用。由此可见,人工智能应用的开发流程是一个持续选代并且不断优化的过程,如下图所示。 从抽象的角度看,下图所表达的是一个数据流图,该数据流图有几个常用的核心抽象概念。 (1)数据源。数据源指人工智能应用开发过程的主要输入,可以是原始的文件类型的数据(如在第2章中用户所需要离线上传的原始图像数据),也可以是来自某个远程服务的数据流(强化学习经常会用到这种数据源形式,还可以是人工输入的信息。数据源的存储方式多种多样,可以是对象存储,也可以是大数据系统,还可以是客户的业务系统等。 (2)处理。处理指人工智能应用开发全流程中的每个具体环节,根据输入数据和处理逻辑得到输出数据。常用的处理操作包括但不限于数据标注、模型训练、性能监测等。每个操作都有执行历史,保证过程可溯源。 (3)实体对象。实体对象指每个处理环节之间流动的数据内容。数据集、算法或规则、模型或知识应用都是典型的实体对象。以某证件类OCR开发全流程为例,上述人工智能应用开发全流程如下图所示。 可以看出,该流程基本满足图中的各类抽象。在该OCR开发全流程中,需要通过数据采集模块获取原始数据(即证件类的原始图像),考虑到证件类图像中证件位置可能倾斜,因此需要首先对证件的四个顶点进行标注然后再进行数据处理,将图像中证件位置矫正。紧接着,一方面,可以继续标注证件图像中文字框和文字类别,用于文字框检测和文字识别模型的训练;另一方面,可以根据证件四个顶点的标注信息训练四点标注模型。当这三个模型(矫正、文字框检测和文字识别模型)分别训练完成后,可以通过编排生成一个OCR应用,并经过评估之后部署起来使用。在运行态如果有推理不好的数据,则需要通过应用维护模块将其返回开发态进行进一步迭代和优化。在该流程中,数据源包括开发态数据源、运行态数据源、人工输入(如算法编写、数据标注信息、训练超参配置、模型评估检查等输入信息);处理包括数据采集、数据标注、数据处理、算法选择和开发、模型训练、模型评估和调优、应用生成、应用评估、应用发布和部署、应用维护;实体对象包括数据集、算法、模型、最终生成的应用。 整体而言,如果解决方案已经确定,那么如图3-3所示,根据处理操作所属范围的不同,可以将人工智能应用的开发流程分为:①数据准备子流程(包含数据采集、数据处理、数据标注等);②算法选择和开发子流程;③模型训练子流程;④模型评估和调优子流程;⑤应用生成、评估和发布子流程;⑥应用维护子流程。由于应用维护子流程会涉及运行态数据回流到开发态,因此这几个子流程之间就形成了一个人工智能闭环。
-
楷书,行书,草书,识别正确率是很低的,
-
关于ocr识别字体,手写体汉字的错别字和就是太潦草,导致识别不出来。而且手写体排版不固定,关于字符分割问题难以解决,针对那种排版很神奇的字条。关于神经网络的,汉字的像素过多,而且种类过多,需要将图片进行压缩,然而压缩后必然存在难以区分的问题,这几个难题,现在都是怎么解决的,有什么算法
-
如题
-
行业内提供ocr识别技术手段的公司有哪些,各公司之间技术门槛区别是什么?
-
OCR文字识别有机器学习方法和深度学习方法,两者区别是什么?可以举例说明一下吗?
-
OCR相关的开源资源有哪些?可以举例说明一下吗?
上滑加载中
推荐直播
-
全面解析华为云EI-API服务:理论基础与实践应用指南
2024/11/29 周五 18:20-20:20
Alex 华为云学堂技术讲师
本期直播给大家带来的是理论与实践结合的华为云EI-API的服务介绍。从“主要功能,应用场景,实践案例,调用流程”四个维度来深入解析“语音交互API,文字识别API,自然语言处理API,图像识别API及图像搜索API”五大场景下API服务,同时结合实验,来加深开发者对API服务理解。
回顾中 -
企业员工、应届毕业生、在读研究生共探项目实践
2024/12/02 周一 19:00-21:00
姚圣伟 在职软件工程师 昇腾社区优秀开发者 华为云云享专家 HCDG天津地区发起人
大神带你一键了解和掌握LeakyReLU自定义算子在ONNX网络中应用和优化技巧,在线分享如何入门,以及在工作中如何结合实际项目进行学习
即将直播 -
昇腾云服务ModelArts深度解析:理论基础与实践应用指南
2024/12/03 周二 14:30-16:30
Alex 华为云学堂技术讲师
如何快速创建和部署模型,管理全周期AI工作流呢?本期直播聚焦华为昇腾云服务ModelArts一站式AI开发平台功能介绍,同时结合基于ModelArts 的实践性实验,帮助开发者从理论到实验更好地理解和使用ModelArts。
去报名
热门标签