精华内容
下载资源
问答
  • OCR文字识别HTTP restapi接口设计

    千次阅读 2015-07-24 11:27:15
    OCR文字识别需要做成HTTP接口对外使用, 该接口功能非常简单, 用户传递过来一幅图片 后端解析完成后将识别出的文字返回. 恩 吃的是图片返回的是文字.   因为HTTP协议是基于文本的,图片的POST需要做对图片的内容做...

    OCR文字识别需要做成HTTP接口对外使用, 该接口功能非常简单, 用户传递过来一幅图片
    后端解析完成后将识别出的文字返回. 恩  吃的是图片返回的是文字.
    因为HTTP协议是基于文本的,POST数据里的图片data需要做一些处理, 例如腾讯开放的
    一个API:

    POST /photo/upload_pic HTTP/1.1
    Accept-Language: zh-cn
    Content-Type: multipart/form-data; boundary=c9152e99a2d6487fb0bfd02adec3aa16
    //…此处省去部分HTTP头部
    --c9152e99a2d6487fb0bfd02adec3aa16
    Content-Disposition: form-data; name="access_token"
    ************ 
    --c9152e99a2d6487fb0bfd02adec3aa16
    Content-Disposition: form-data; name="openid"
    --c9152e99a2d6487fb0bfd02adec3aa16
    Content-Disposition: form-data; name="title"
    me.jpg
    --c9152e99a2d6487fb0bfd02adec3aa16
    Content-Disposition: form-data; name="format"
    xml
    --c9152e99a2d6487fb0bfd02adec3aa16
    Content-Disposition: form-data; name="picture"; filename="C:\Documents and Settings\桌面\apple.png"
    Content-Type: image/x-png 
    //…此处省去图片二进制数据流
    --c9152e99a2d6487fb0bfd02adec3aa16--

    是通过HTTP 的boundary的方式添加图片.很标准的格式但是感觉还是不够简洁,上面的格式拼起来比较累
    我们设计的API如下将用户需要传递的字段拼成K=V格式的字符串  key2=value1&key2=value2&image=imagedata
    其中imagedata为图片的二进制进行base64编码转完成字符串
    一个例子如下:
    POST数据内容

    'fromdevice=pc&clientip=10.10.10.10&detecttype=LocateRecognize&languagetype=CHN_ENG&imagetype=1&

    image=imagedata'

    返回值是一个JSON字符串.

    {"errNum":"0","errMsg":"success","querySign":"6916123842,271478943","retData":[{"rect":{"left":"282",

    "top":"f1","width":"22","height":"11"},"word":" 你好"}]} 



    展开全文
  • OCR

    千次阅读 2011-11-13 13:06:10
    OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;即,对文本...

    转自百度百科

    http://baike.baidu.com/view/17761.htm

    OCR

    求助编辑百科名片

    OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;即,对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程。如何除错或利用辅助信息提高识别正确率,是OCR最重要的课题,ICR(Intelligent Character Recognition)的名词也因此而产生。衡量一个OCR系统性能好坏的主要指标有:拒识率、误识率、识别速度、用户界面的友好性,产品的稳定性,易用性及可行性等。

    目录

    发展历史
    工作流程
    1. 影像输入
    2. 对比识别
    3. 人工校正
    4. 结果输出
    中文识别
    1. 资料录入
    2. 识别过程
    3. 识别结果决定因素
    识别技巧
    牛津、剑桥和RSA考试局
    1. “笔试基础卷报告”及“笔试高级卷报告”
    2. 单元成绩门槛表(Grade Thresholds)
    展开

    编辑本段发展历史

      早在60、70年代,世界各国就开始有OCR的研究,而研究的初期,多以文字的识别方法研究为主,且识别的文字仅为0至9的数字。以同样拥有方块文字的日本为例,1960年左右开始研究OCR的基本识别理论,初期以数字为对象,直至1965至1970年之间开始有一些简单的产品,如印刷文字的邮政编码识别系统,识别邮件上的邮政编码,帮助邮局作区域分信的作业;也因此至今邮政编码一直是各国所倡导的地址书写方式。 
      中国在OCR技术方面的研究工作起步较晚,在70年代才开始对数字、英文字母及符号的识别进行研究,70年代末开始进行汉字识别的研究,到1986年汉字识别的研究进入一个实质性的阶段,不少研究单位相继推出了中文OCR产品.

    编辑本段工作流程

      一个OCR识别系统,其目的很简单,只是要把影像作一个转换,使影像内的图形继续保存、有表格则表格内资料及影像内的文字,一律变成计算机文字,使能达到影像资料的储存量减少、识别出的文字可再使用及分析,当然也可节省因键盘输入的人力与时间。
      从影像到结果输出,须经过影像输入、影像前处理、文字特征抽取、比对识别、最后经人工校正将认错的文字更正,将结果输出。

    影像输入

      欲经过OCR处理的标的物须透过光学仪器,如影像扫描仪、传真机或任何摄影器材,将影像转入计算机。科技的进步,扫描仪等的输入装置已制作的愈来愈精致,轻薄短小、品质也高,对OCR有相当大的帮助,扫描仪的分辨率使影像更清晰、扫除速度更增进OCR处理的效率。 
      影像前处理:影像前处理是OCR系统中,须解决问题最多的一个模块,从得到一个不是黑就是白的二值化影像,或灰阶、彩色的影像,到独立出一个个的文字影像的过程,都属于影像前处理。包含了影像正规化、去除噪声、影像矫正等的影像处理,及图文分析、文字行与字分离的文件前处理。在影像处理方面,在学理及技术方面都已达成熟阶段,因此在市面上或网站上有不少可用的链接库;在文件前处理方面,则凭各家本领了;影像须先将图片、表格及文字区域分离出来,甚至可将文章的编排方向、文章的提纲及内容主体区分开,而文字的大小及文字的字体亦可如原始文件一样的判断出来。 
      文字特征抽取:单以识别率而言,特征抽取可说是 OCR的核心,用什么特征、怎么抽取,直接影响识别的好坏,也所以在OCR研究初期,特征抽取的研究报告特别的多。而特征可说是识别的筹码,简易的区分可分为两类:一为统计的特征,如文字区域内的黑/白点数比,当文字区分成好几个区域时,这一个个区域黑/白点数比之联合,就成了空间的一个数值向量,在比对时,基本的数学理论就足以应付了。而另一类特征为结构的特征,如文字影像细线化后,取得字的笔划端点、交叉点之数量及位置,或以笔划段为特征,配合特殊的比对方法,进行比对,市面上的线上手写输入软件的识别方法多以此种结构的方法为主。 
      对比数据库:当输入文字算完特征后,不管是用统计或结构的特征,都须有一比对数据库或特征数据库来进行比对,数据库的内容应包含所有欲识别的字集文字,根据与输入文字一样的特征抽取方法所得的特征群组。

    对比识别

      这是可充分发挥数学运算理论的一个模块,根据不同的特征特性,选用不同的数学距离函数,较有名的比对方法有,欧式空间的比对方法、松弛比对法(Relaxation)、动态程序比对法(Dynamic Programming,DP),以及类神经网络的数据库建立及比对、HMM(Hidden Markov Model)…等著名的方法,为了使识别的结果更稳定,也有所谓的专家系统(Experts System)被提出,利用各种特征比对方法的相异互补性,使识别出的结果,其信心度特别的高。 
      字词后处理:由于OCR的识别率并无法达到百分之百,或想加强比对的正确性及信心值,一些除错或甚至帮忙更正的功能,也成为OCR系统中必要的一个模块。字词后处理就是一例,利用比对后的识别文字与其可能的相似候选字群中,根据前后的识别文字找出最合乎逻辑的词,做更正的功能。 
      字词数据库:为字词后处理所建立的词库。

    人工校正

      OCR最后的关卡,在此之前,使用者可能只是拿支鼠标,跟着软件设计的节奏操作或仅是观看,而在此有可能须特别花使用者的精神及时间,去更正甚至找寻可能是OCR出错的地方。一个好的OCR软件,除了有一个稳定的影像处理及识别核心,以降低错误率外,人工校正的操作流程及其功能,亦影响OCR的处理效率,因此,文字影像与识别文字的对照,及其屏幕信息摆放的位置、还有每一识别文字的候选字功能、拒认字的功能、及字词后处理后特意标示出可能有问题的字词,都是为使用者设计尽量少使用键盘的一种功能,当然,不是说系统没显示出的文字就一定正确,就像完全由键盘输入的工作人员也会有出错的时候,这时要重新校正一次或能允许些许的错,就完全看使用单位的需求了。

    结果输出

      有人只要文本文件作部份文字的再使用之用,所以只要一般的文字文件、有人要漂漂亮亮的和输入文件一模一样,所以有原文重现的功能、有人注重表格内的文字,所以要和Excel等软件结合。无论怎么变化,都只是输出档案格式的变化而已。如果需要还原成原文一样格式,则在识别后,需要人工排版,耗时耗力。

    编辑本段中文识别

    资料录入

      文献资料的数字化录入,一般分为: 
      1.纯图像方式。 
      2.目录文本、正文图像方式。 
      3.全文本方式。 
      4.全文索引方式。文本方式和图像方式的混合体。

    识别过程

      书本级:中文,英文;简体,繁体; 
      版式级:竖排,横排;有无分栏; 
      行切分 字切分 
      识别:真正的OCR识别过程,图像信息还原成文本信息 
      后处理:人工干预,主要集中在前四个阶段。

    识别结果决定因素

      1.图片的质量,一般建议150dpi以上 
      2.颜色,一般对彩色识别很差,黑白的图片较高,因此建议ocr的为黑白tif格式 
      3.最重要的就是字体,如果是手写识别率很低。 
      国内OCR识别简体差错率为万分之三,如果要求更高的精度需要投入更大的人工干预。繁体识别由于繁体字库的不统一性(民国时期的字库和现在繁体字库不统一),导致识别困难,在人工干预下,精度能达到90%以上(图文清晰情况下)。

    编辑本段识别技巧

      1.分辨率的设置是文字识别的重要前提。一般来讲,扫描仪提供较多的图像信息,识别软件比较容易得出识别结果。但也不是扫描分辨率设得越高识别正确率就越高。选择300dpi或400dpi分辨率,适合大部分文档扫描。注意文字原稿的扫描识别,设置扫描分辨率时千万不要超过扫描仪的光学分辨率,不然会得不偿失。下面是部分典型设置,仅供参考。 
      (1)1、2、3号字的文章段,推荐使用200dpi。 
      (2)4、小4、5号字的文章段,推荐使用300dpl 
      (3)小5、6号字的文章段,推荐使用400dpl 
      (4)7、8号字的文章段,推荐使用600dpi。 
      2. 扫描时适当地调整好亮度和对比度值,使扫描文件黑白分明。这对识别率的影响最为关键,扫描亮度和对比度值的设定以观察扫描后的图像中汉字的笔画较细但又不断开为原则。进行识别前,先看看扫描得到的图像中文字质量如何,如果图像存在黑点或黑斑时或文字线条很粗很黑,分不清笔画时,说明亮度值太小了,应该增加亮度值在试试;如果文字线条凹凸不平,有断线甚至图像中汉字轮廓严重残缺时,说明亮度值太大了,应减小亮度后再试试。 
      3.选好扫描软件。选一款好的适合自己的OCR软件是作好文字识别工作的基础,一般不要使用扫描仪自带的OEM软件,OEM的OCR软件的功能少、效果差,有的甚至没有中文识别。 
      再选一个图像软件,第一,OCR软件不能识别所有的扫描仪;第二,也是最关键的,利用图像软件的扫描接口扫描出来的图像便于处理。 
      4.如果要进行的文本是带有格式的,如粗体、斜体、首行缩进等,部分OCR软件识别不出来,会丢失格式或出现乱码。如果必须扫描带有格式的文本,事先要确保使用的识别软件是否支持文字格式的扫描。也可以关闭样式识别系统,使软件集中注意力查找正确的字符,不再顾及字体和字体格式。 
      5.在扫描识别报纸或其他半透明文稿时,背面的文字透过纸张混淆文字字形,对识别会造成很大的障碍。遇到该类扫描,只要在扫描原稿的背面附。盖一张黑纸,扫描时,增加扫描对比度,即可减少背面模糊字体的影响,提高识别正确率, 
      6.一般文本扫描原稿都为黑、白两色原稿,但是在扫描设置时却常将扫描模式设为灰度模式。特别是在原稿质量较差时,使用灰度模式扫描,并在扫描软件处理完后再继续识别,这样会得到较好的识别正确率。值得注意的是OCR识别软件可以自己确定阀值,几个百分点的阀值差异,可能就会影响识别的正常进行。当然,得到的图像文件的大小会比黑白文件大很多。在进行大批量文稿扫描时,必须对原稿进行测试,找到最佳的阀值百分比。 
      7.遇到图文混排的扫描原稿,首先明确使用的识别软件是否支持自动分析图文这一功能。如果支持的话,在进行这类扫描识别时,OCR软件会自动计算出文本的内容、位置和先后顺序。文字部分可以按照标示顺序正常识别。 
      8.手动选取扫描区域会有更好识别效果。设置好参数后,先预览一下,然后开始选取扫描区域。不要将要用的文章一股脑儿选在一个区域内,因为现在的文章排版为了追求更好的视觉效果,使用图文混排的较多,扫成一幅图像会影响OCR识别。因此,要根据实际情况将版面分成N个区域,怎么划分区域呢?每一区域内的文字字体、字号最好一致,没有图形、图像,每一行的宽度一致,遇到长短不一,再细分,一般一次最多可扫描10个选区。根据不同情况,合理地设置识别区域的顺序。不要嫌这个过程太烦,那可是提高识别率的有效手段。注意各识别区域不能有交叉,做到一切觉得完好以后再进行识别。这样一般的识别率会在95%以上,对于识别不正确的文字进行校对后,就可以进入相应的文字处理软件进行所需的处理了。 9.在放置扫描原稿时,把扫描的文字材料一定要摆放在扫描起始线正中,以最大限度地减小由于光学透镜导致的失真。同时应保护扫描仪玻璃的干净和不受损害。文字有一定角度的倾斜,或者是原稿文字部分为不正规排版,必须在扫描后使用旋转工具,进行纠正;否则OCR识别软件会将水平笔划当做斜笔划处理,识别正确率会下降很多。建议用户尽量将扫描原稿放正,用工具旋转纠正会降低图像质量,使字符识别更加困难。 
      10.先"预览"整体版面,选定要扫描的区域,再用"放大预览"工具,选择一小块进行放大显示到全屏幕,观察其文字的对比度,文字的深浅浓度,据情况调整"阀值"的大小,最终要求文字清晰,不浓(文字成团),不淡(文字断笔伐),一般在"阀值"80左右为宜,最后再扫描。 
      11.用工具擦掉图像污点,包括原来版面中的不需要识别的插图、分隔线等,使文字图像中除了文字没有一点多余的东西;这可以大提高识别率并减少识别后的修改工作。 
      12.如果要扫描印刷质量稍微差一些的文章,比如说报纸,扫描的结果将不会黑白分明,会出现大量的黑点,而且在字体的笔画上也会出现粘连现象,这两项可是汉字识别的大忌,将严重影响汉字识别的正确率。为获得较好的识别结果,必须仔细进行色调调节,反复扫描多次才能获得比较理想的结果。另外由于报纸很薄且大部分纸质不高,导致扫描仪上盖板不能完全压住报纸(有缝隙),所以一般情况下报纸的扫描识别效果没有杂志的效果好。解决办法是在报纸上压一至两本16K的杂志,效果还是不错的。

    编辑本段牛津、剑桥和RSA考试局

       OCR:Oxford Cambridge and RSA Examinations,中文全称“牛津、剑桥和RSA考试局”,隶属剑桥大学“评估小组”。每年约有300万人参加“OCR”组织的A-level课程考试。目前不考虑在中国发展。OCR的“单元报告”的三大特色课程作业报告(Coursework) 课程作业是以解决现实生活中的一个具体问题为情境,要求学生完成的一项系统设计。 
      报告中开头列出的几个“需要注意的问题”,体现出OCR认真严谨的工作态度及人性化的评价理念。比如: 
      (1)“评注”:要求教师在评分时在得分点说明得分的原因,以便OCR了解是否真正掌握了评分标准; (2)“评分标准”:要求学校必须严格遵照OCR制定的评分标准来判分,不许自拟标准,以免影响考生成绩; 
      (3)“通信与交流”:强调教师评分时,一定要给考生一定的“通信与交流”方面的情感态度分,有的教师在这方面判分太过苛刻,这是不合适的。 
      而报告的核心内容则是以五大评估目标(Assessment Object,缩写为AO)为依据对课程作业中逐个知识点得分情况的分析,这五项目标既是评判分数的准绳又是分析评估结果的依据。目标具体内容为: AO1:通过ICT的学习,适当运用所学知识、技能及理解能力处理某些事件。 
      AO2:分析、设计、完成、测试、评估、证明人们使用的信息通讯系统,加深对于广泛应用ICT的影响的理解。 
      AO3:理性分析自身和他人使用ICT的过程和方法。 
      AO4:讨论、评论ICT广泛应用的影响。 
      AO5:在不断使用ICT的过程中,考虑信息的社会、经济、政治、法律、民族、道德的影响及其安全性。 现以Assesment Object 2 (AO2)为例: 
       表1考生AO2得分情况
      
    AO2得分点考生得分情况
    分析作为整个课程作业的关键,考生在这一步完成得非常出色,他们准确地把握住了任务的目的及设计的焦点问题
    设计、完成、测试此处分为两个得分等级,较低等级的考生是仅能够分析任务,并且完成一个ICT系统;而较高等级的考生在完成任务的过程中,还为自己的设计加以说明,譬如为何对设计作如此的改变,为何这部分设计保留而放弃另外一部分等等;同时OCR指出一些学校在此处给分过于慷慨,OCR会针对这部分给考生成绩做出调整
    评价、实施、效果整个作业得分最少的点,考生没有体现出ICT相对其他信息处理方式的独特优势,也没有证明何时使用及为何使用ICT是完成任务的最佳方式
    说明要求考生有一个作业说明,即说明系统的使用对象、系统的主要功能等,目的在于督促学生养成良好的设计习惯
      对于“课程作业”这种高度开放的评价模式,为了避免评分的主观性和欠科学性,OCR在评分标准中从整体评价目的到具体各项评价指标的权重、分值等都作了严格的要求和详细的阐述,力图达到主观题的客观化,有力的加强了评价的可观察性和可测量性。 
      那么,在评估报告中,再结合考试的实际情况给予更充分的说明和例证,将评分标准中抽象的数字及说明形象化,一方面可以帮助教师更加准确的把握评分标准的思想,从而提高以后判分的质量,保证考试的公平性;另一方面相当于提供了一份课程作业指导文件,帮助师生进一步解读课程作业所考察的主题和内容,以期阅读报告后教师能够在以后的教学中调整教学思路并给学生提供更有针对性的指导和训练,学生能够发现自己的长处与不足,以免在以后的作业中无所适从或放任自流。 
      在我国,信息技术课是一门基于活动和实践的课程,“课程作业”这种质的评价方式对于全面考察信息素养水平也是极其重要的。但是在高考、会考这些高利害的考试中,由于社会文化背景,学校所面对的压力,课程和试题发展的不成熟以及这种评价方式自身的特点,建议在总结性评价中对采用“课程作业”的方式仍然持谨慎态度。

    “笔试基础卷报告”及“笔试高级卷报告”

      “笔试基础卷报告”和“笔试高级卷报告”分别就试卷中每道题目考生的回答情况作了详细分析,本文选取2007年基础卷的第2题为例说明报告的内容,该题旨在考察考生如何思考并评论ICT对社会生活的影响(AO4)。 原题为:Wordsworth牙科诊所通过e-mail和短信息的方式与病人进行交流。 
      (a) 什么设备可以接受短信息? 
      (b) 说出一种对病人来说,这种短信息预约提醒的好处? 
      (c) 说出两种对Wordsworth牙科诊所来说,使用e-mail与病人交流的好处? 
      (d) 说出两种在没有e-mail和短信息的情况下,可以与病人沟通的方式。 
       表2第2题答题情况分析
      
    题号考生答题情况
    2(a)很好,但是有些考生只是简单的回答“电话”,而没有准确的指出是“移动电话”
    2(b)尚可,许多考生仅是将问题换了一种表述的方式来作为回答,这是不能得分的
    2(c)不太好,大多考生审题不清,是从病人的角度回答问题,而不是从牙科诊所的角度;有的考生只用了“快速”、“简单”等一个单词就完成了回答,没有陈述理由,显得答案过于单薄,且缺乏说服力;还有的考生只是回答了使用e-mail的好处,而没有与牙科诊所相结合
    2(d)尚可
      报告结合试题,指出考生要么由于没有使用正确的专业词汇;要么因为曲解题意、审题不清,导致答题的角度错误;要么因为回答过于简单而扣分或得不到满分,所以提醒学校应在平时注意加强训练考生答题的完整及专业用语的规范等。这种针对具体题目的分析,将考生存在的问题清晰地呈现给阅读者,具有较强的说服力。

    单元成绩门槛表(Grade Thresholds)

       表3各单元的等级分数门槛表
    单元满分A*ABCDEFGU 
    试卷1基础Raw40---37322723190
    UMS55---48403224160 
    试卷1高级Raw40393531282320--0
    UMS80-64564840---0 
    课程作业Raw6460514234282318130
    UMS120-968472604836240 
    扩充课程作业Raw6460514234282318130
    UMS120 968472604836240 
    试卷2基础Raw55---37312519130
    UMS55---48403224160 
    试卷2高级Raw80544740332521--0
    UMS80 64564840---0 
      这张表公布了每个单元的成绩等级划分标准,此门槛是依据每年学生各个单元的试卷成绩整体情况计算、权衡得出的,因而每年的门槛成绩都会略有改动。由于笔试试卷1与笔试试卷2的卷面原始分值不同,所以将试卷1的分数以试卷2的总分为标准折算成标准分,这样方能确保考生所得分数是在同一个标准下得出的,从而保证了考试的公平与公正。 
      而OCR给学生打出的最终等级成绩,是按照每个单元占总成绩相对比重的不同为每个单元赋予一定的权重,然后根据各个单元的权重,利用科学的数据合并方法进行数据合并而得出的。 
      在新课程背景下,一直倡导改革传统的量化评价方法,而注重质的评价,所以具有相对稳定内涵的等级评定法也是我国信息技术课比较推崇的评价方法。但是从几个已经采用等级评定法的实验区所公布的方案来看,主要有以下两个问题:一是划分的等级过于简单,有的地区分为优秀、良好、及格和不及格,还有的地区分为A—D四个等级,这样的划分过于粗略,无法相对准确的表明学生的能力水平;二是各地区事先公布的等级门槛随意性太大,更降低了它的权威性。英国的“等级分数门槛表”,是在了解了同年考生的考试整体情况以后再计算出门槛成绩,这样保证了每年考试成绩的相对参考价值,使学生成绩不会因为各年试题的难易程度的不同而出现大的波动,而我国目前的做法太过简单,不具说服力。英国的报告让我们看到了等级评定法规范、严谨的一面。 
      这篇“单元报告”对此次会考作了较透彻的评析, 沿袭了英国信息通信技术课总结性评价人文气息浓厚的风格,语言中肯、易懂且以鼓励为主,分析深入、到位并用实例佐证。它主要目的是通过总结和剖析考试的结果,发现问题,以期能帮助教师进一步理解教学大纲、改进教学,并为教师了解评估方案的实施、评分标准的应用等方面提供有针对性的指导。所以报告内容紧紧围绕着五大评估目标逐步深入,从概括到具体多层次、多角度的呈现了考试中发现的问题。
    展开全文
  • ​01 什么是OCROCR「Optical Character Recognition」,光学字符识别即:OCR文字识别。 指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状...

    ​01 什么是OCR?


    OCR「Optical Character Recognition」,光学字符识别即:OCR文字识别。

    指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;

    即针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并通过识别软件将图像中的文字转换成文本格式,供文字处理软件进一步编辑加工的技术。

    02 OCR文字识别技术的应用领域

    l证件识别、车牌识别

    l智慧医疗

    lpdf文档转换为Word

    l拍照识别、截图识别、网络图片识别

    l无人驾驶

    l无纸化办公、稿件编辑校对

    l物流分拣

    l舆情监控

    l文档检索

    l字幕识别

    l文献资料检索等

    03 OCR文字识别的一般流程

    OCR文字识别主要分为印刷体文字识别手写体文字识别

    OCR文字识别技术的手段多种多样,各个识别过程也是不尽相同,这里简要介绍文字识别方法的一般流程。

    l识别出文字区域(通过滑动窗口算法,遍历整个图片,有监督的标记训练样本特征进行判断,找到目标图片进行矩形化摘取出来)

    l对文字区域矩形分割,拆分成不同的字符(在矩形中做一维滑动窗口移动,判断字符间间距,对字符进行划分)

    l字符分类(对划分好的字符根据监督算法,对字符进行预测)

    l识别出文字(最终识别出整个字符)

    l后处理识别矫正,对识别出的文字进行后续处理和校正。比如,考虑单词Because,我们设计的识别模型把它识别为8ecause,那么我们就可以用语法检测器去纠正这种拼写错误,并用B代替8并完成识别矫正。这样子,整个OCR流程就走完了。

    04 快递行业分析

    在现代快递业存在和发展的今天,快捷、准确、安全已经只是快递服务最基本的要求,高品质快递服务要求快递行业信息化的水平越来越高。

    运单融入OCR扫描之后可以解决以下问题:

    1.客户满意度和安全体验上升:运单图片扫描上传后,给用户的查询提供了极大的方便,能够看到原始的运单图片和收件人的签字,安全性有了保障。

    2.大大提高工作效率和解决成本开支:如分公司通过将原始运单扫描之后,就不用把原始运单带到总部进行财务核算。省去找单、对单这些繁琐的工作,直接在系统上输入单号就可以看到原始图片。这个过程中运单扫描上传的速度快,每分钟可以扫描上传90张运单,这样既可以节约人力资本,又可以降低出错率;

    3.电子运单的保存比原始运单的保存要方便,并且保存的时间也要长。节约了运单的留存空间和费用。

    05 OCR快递运单采集系统设计

    l采集系统组成业务流程

    OCR快递运单采集系统与专用扫描仪进行配合,通过标准TWAIN接口,对快递运单进行快速扫描,自动识别运单上的条码及其相关的印刷文字信

    ​01 什么是OCR?


    OCR「Optical Character Recognition」,光学字符识别即:OCR文字识别。

    指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;

    即针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并通过识别软件将图像中的文字转换成文本格式,供文字处理软件进一步编辑加工的技术。

    02 OCR文字识别技术的应用领域

    l证件识别、车牌识别

    l智慧医疗

    lpdf文档转换为Word

    l拍照识别、截图识别、网络图片识别

    l无人驾驶

    l无纸化办公、稿件编辑校对

    l物流分拣

    l舆情监控

    l文档检索

    l字幕识别

    l文献资料检索等

    03 OCR文字识别的一般流程

    OCR文字识别主要分为印刷体文字识别手写体文字识别

    OCR文字识别技术的手段多种多样,各个识别过程也是不尽相同,这里简要介绍文字识别方法的一般流程。

    l识别出文字区域(通过滑动窗口算法,遍历整个图片,有监督的标记训练样本特征进行判断,找到目标图片进行矩形化摘取出来)

    l对文字区域矩形分割,拆分成不同的字符(在矩形中做一维滑动窗口移动,判断字符间间距,对字符进行划分)

    l字符分类(对划分好的字符根据监督算法,对字符进行预测)

    l识别出文字(最终识别出整个字符)

    l后处理识别矫正,对识别出的文字进行后续处理和校正。比如,考虑单词Because,我们设计的识别模型把它识别为8ecause,那么我们就可以用语法检测器去纠正这种拼写错误,并用B代替8并完成识别矫正。这样子,整个OCR流程就走完了。

    04 快递行业分析

    在现代快递业存在和发展的今天,快捷、准确、安全已经只是快递服务最基本的要求,高品质快递服务要求快递行业信息化的水平越来越高。

    运单融入OCR扫描之后可以解决以下问题:

    1.客户满意度和安全体验上升:运单图片扫描上传后,给用户的查询提供了极大的方便,能够看到原始的运单图片和收件人的签字,安全性有了保障。

    2.大大提高工作效率和解决成本开支:如分公司通过将原始运单扫描之后,就不用把原始运单带到总部进行财务核算。省去找单、对单这些繁琐的工作,直接在系统上输入单号就可以看到原始图片。这个过程中运单扫描上传的速度快,每分钟可以扫描上传90张运单,这样既可以节约人力资本,又可以降低出错率;

    3.电子运单的保存比原始运单的保存要方便,并且保存的时间也要长。节约了运单的留存空间和费用。

    05 OCR快递运单采集系统设计

    l采集系统组成业务流程

    OCR快递运单采集系统与专用扫描仪进行配合,通过标准TWAIN接口,对快递运单进行快速扫描,自动识别运单上的条码及其相关的印刷文字信息。

    在图像处理完毕后,通过预先给定的FTPServer的访问参数,将识别成功的运单影像文件上传至指定服务器路径下。

    l采集系统业务流程

    l运单采集系统的功能

    1)物流单据的扫描与识别

    通过高速扫描仪对运单进行快速扫描,得到高质量的图像。

    运单采集系统可以在扫描的同时识别快递运单的一维条形码,并将识别的条形码值作为图像文件名存储。

    2)图像处理

    对扫描效果不佳的图像进行简单的修图操作。

    3)运单识别

    对快递运单进行默认识别。对自动识别失败的文件,可使用框选识别进行辅助识别,双重保障识别结果准确性。

    4)图像及条码校验

    图像扫描与条码识别完成后,用户可根据右侧的图像对条码进行人工质检,输入正确的条码值;如果扫描的图像过大,用户也可对图像进行压缩,使其符合要求。

    5)快递运单图像上传至FTP服务器

    可以通过FTP服务器参数设置将扫描识别成功的运单图像上传至后台FTP服务器中存储及共享

    6)工作量统计

    自动统计出指定时间段的扫描工作量。

    展开全文
  • 本篇博客主要讲解调用百度API接口并做一个简单的界面实现图像的文字识别。 测试环境如下: 1.操作系统:windows10 X64 企业版 2.python环境:3.6.8 64位纯净版 3.已经注册好的百度API功能区域账号 4.python环境...

    本篇博客主要讲解调用百度API接口并做一个简单的界面实现图像的文字识别。

    测试环境如下:

    1.操作系统:windows10  X64 企业版

    2.python环境:3.6.8   64位纯净版

    3.已经注册好的百度API功能区域账号

    4.python环境要安装的API接口调用第三方库:baidu-aip==2.2.18.0

    5.PyQt5==5.12.3   pyqt5-tools == 5.13.0.1.5

    main.py代码:

    # -*- coding:utf-8 -*-
    import sys 	
    from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog
    from PyQt5 import QtGui
    from mainGui import *
    from aip import AipOcr
    
    APP_ID = '23130726'
    API_KEY = '9OO7jicB2LR754g3awfLv860'
    SECRET_KEY = 'IBUTi5wPBmOqWyBYWwL4DA10kR1CTSNk'
    client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    
    
    fileName_choose = None
    class MyMainWindow(QMainWindow, Ui_Form):
        def __init__(self, parent=None):    
            super(MyMainWindow, self).__init__(parent)
            self.setupUi(self)
            self.setWindowTitle('OCR文字识别系统')
            self.pushButton_2.clicked.connect(self.openfile)
            self.pushButton.clicked.connect(self.char_recognition)
        """ 读取图片 """
    
        def char_recognition(self):
            if fileName_choose!=None:
                res = self.img_to_str(fileName_choose)
                self.textEdit.setText(str(res))
            else:
                self.textEdit.setText('请先选择图片!')
            return 0
    
        def openfile(self):
            global fileName_choose
            fileName_choose, _= QFileDialog.getOpenFileName(self,
                                       "选取图片",
                                        ' ',
                                        "All Files (*);;Image Files (*.png, *.jpg, *.jpeg)")
    
            if fileName_choose == ('', ''):
                return
            else:
                print(fileName_choose)
                jpg = QtGui.QPixmap(fileName_choose).scaled(self.label.width(), self.label.height())
                self.label.setPixmap(jpg)
    
        def get_file_content(self, filePath):
            with open(filePath, 'rb') as fp:
                return fp.read()
    
        def img_to_str(self, image_path):
            """ 可选参数 """
            options = {}
            options["language_type"] = "CHN_ENG"  # 中英文混合
            options["detect_direction"] = "true"  # 检测朝向
            options["detect_language"] = "true"  # 是否检测语言
            options["probability"] = "false"  # 是否返回识别结果中每一行的置信度
    
            """ 带参数调用通用文字识别 """
            result = client.basicGeneral(self.get_file_content(image_path), options)
    
            # 格式化输出-提取需要的部分
            if 'words_result' in result:
                text = ('\n'.join([w['words'] for w in result['words_result']]))
            #print(type(result), "和", type(text))
    
            """ save """
            fs = open("result.txt", 'w+')  # 将str,保存到txt
            fs.write(text)
            fs.close()
            return text
    
    if __name__=="__main__":  
        app = QApplication(sys.argv)  
        myWin = MyMainWindow()  
        myWin.show()  
        sys.exit(app.exec_())  
    

    mainGui.py代码:

    # -*- coding: utf-8 -*-
    
    # Form implementation generated from reading ui file 'OCR识别界面.ui'
    #
    # Created by: PyQt5 UI code generator 5.12.3
    #
    # WARNING! All changes made in this file will be lost!
    
    
    from PyQt5 import QtCore, QtGui, QtWidgets
    
    
    class Ui_Form(object):
        def setupUi(self, Form):
            Form.setObjectName("Form")
            Form.resize(560, 330)
            Form.setMaximumSize(QtCore.QSize(580, 350))
            self.widget_2 = QtWidgets.QWidget(Form)
            self.widget_2.setGeometry(QtCore.QRect(130, 10, 421, 311))
            self.widget_2.setStyleSheet("color: rgb(170, 255, 255);")
            self.widget_2.setObjectName("widget_2")
            self.label = QtWidgets.QLabel(self.widget_2)
            self.label.setGeometry(QtCore.QRect(0, 0, 411, 311))
            self.label.setStyleSheet("background-color: rgb(170, 255, 255);")
            self.label.setText("")
            self.label.setObjectName("label")
            self.widget = QtWidgets.QWidget(Form)
            self.widget.setGeometry(QtCore.QRect(0, 10, 131, 311))
            self.widget.setObjectName("widget")
            self.verticalLayoutWidget = QtWidgets.QWidget(self.widget)
            self.verticalLayoutWidget.setGeometry(QtCore.QRect(0, 0, 122, 171))
            self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
            self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
            self.verticalLayout.setContentsMargins(0, 0, 0, 0)
            self.verticalLayout.setObjectName("verticalLayout")
            self.pushButton_2 = QtWidgets.QPushButton(self.verticalLayoutWidget)
            font = QtGui.QFont()
            font.setPointSize(16)
            font.setItalic(True)
            self.pushButton_2.setFont(font)
            self.pushButton_2.setObjectName("pushButton_2")
            self.verticalLayout.addWidget(self.pushButton_2)
            self.pushButton = QtWidgets.QPushButton(self.verticalLayoutWidget)
            font = QtGui.QFont()
            font.setPointSize(16)
            font.setItalic(True)
            self.pushButton.setFont(font)
            self.pushButton.setObjectName("pushButton")
            self.verticalLayout.addWidget(self.pushButton)
            spacerItem = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
            self.verticalLayout.addItem(spacerItem)
            self.label_2 = QtWidgets.QLabel(self.verticalLayoutWidget)
            font = QtGui.QFont()
            font.setPointSize(18)
            font.setBold(True)
            font.setWeight(75)
            self.label_2.setFont(font)
            self.label_2.setObjectName("label_2")
            self.verticalLayout.addWidget(self.label_2)
            spacerItem1 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
            self.verticalLayout.addItem(spacerItem1)
            self.frame = QtWidgets.QFrame(self.widget)
            self.frame.setGeometry(QtCore.QRect(0, 170, 120, 150))
            self.frame.setMinimumSize(QtCore.QSize(120, 150))
            self.frame.setMaximumSize(QtCore.QSize(120, 150))
            self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
            self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
            self.frame.setObjectName("frame")
            self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.frame)
            self.verticalLayout_3.setObjectName("verticalLayout_3")
            self.textEdit = QtWidgets.QTextEdit(self.frame)
            sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
            sizePolicy.setHorizontalStretch(0)
            sizePolicy.setVerticalStretch(0)
            sizePolicy.setHeightForWidth(self.textEdit.sizePolicy().hasHeightForWidth())
            self.textEdit.setSizePolicy(sizePolicy)
            self.textEdit.setMinimumSize(QtCore.QSize(110, 0))
            self.textEdit.setMaximumSize(QtCore.QSize(135, 130))
            self.textEdit.setObjectName("textEdit")
            self.verticalLayout_3.addWidget(self.textEdit)
    
            self.retranslateUi(Form)
            QtCore.QMetaObject.connectSlotsByName(Form)
    
        def retranslateUi(self, Form):
            _translate = QtCore.QCoreApplication.translate
            Form.setWindowTitle(_translate("Form", "Form"))
            self.pushButton_2.setText(_translate("Form", "载入图片"))
            self.pushButton.setText(_translate("Form", "文字识别"))
            self.label_2.setText(_translate("Form", "   识别结果:"))
    

    测试图片:

    letter.png

    运行效果:

    result.png

    程式整理及可执行程序下载:https://download.csdn.net/download/mzl_18353516147/14028406

     

    由于不太擅长设计UI,所以界面不太好看,发给我同学之后我同学参考我的设计思路修改了一下:

    app.py代码:

    import sys
    import time
    import random
    from aip import AipOcr
    
    from PyQt5.QtCore import *
    from PyQt5.QtGui import *
    from PyQt5.QtWidgets import *
    from PyQt5 import QtGui
    from PyQt5.QtSql import QSqlQuery,QSqlDatabase
    
    from Ui_ocrui import Ui_MainWindow
    # from configDialog import Ui_Dialog #暂时未使用
    
    APP_ID = '19105187'   #APP_ID
    API_KEY = 'IywiicFEKa5ny2ckUp29tHVk'  #API_KEY
    SECRET_KEY =  'uWnu44pu6lFjPZylFLMBymurGNTtrD2t'  #SECRET_KEY
    aipOcr = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    options = {
                'detect_direction': 'true',
                'language_type': 'CHN_ENG',
            }
    
    
    class MainWindow(QMainWindow, Ui_MainWindow):
        def __init__(self, parent=None):
            super(MainWindow, self).__init__(parent=parent)
            self.setupUi(self)
            self.text = ""
            self.strTime = ""
            self.basicid = ""
            self.filePath = ""
    
        def loadImage(self):
            self.filePath,_ = QFileDialog.getOpenFileName(self,'打开文件','.','图像文件(*.png *.jpg *.jpeg)')
            self.jpg = QtGui.QPixmap(self.filePath).scaled(self.plabel.width(), self.plabel.height())
            self.plabel.setPixmap(self.jpg)
    
        def recognize(self):
            if(self.filePath == ""):
                print(QMessageBox.warning(self, "错误", "没有找到图片", QMessageBox.Yes, QMessageBox.Yes))
                return
    
            result = aipOcr.basicAccurate(self.get_file_content(self.filePath), options)
            words_result = result['words_result']
            for i in range(len(words_result)):
                self.text = self.text + words_result[i]['words'] +'\n'
                
            self.tedit.setPlainText(self.text)
            self.tedit.repaint()    # 解决mac端文本无法显示的问题
    
            self.text = ''
    
        def get_file_content(self,filePath):
            with open(filePath, 'rb') as fp:
                return fp.read()
                
        def cleanText(self):
            self.tedit.repaint()    # 解决mac端文本无法显示的问题
    
        def configApi(self):
            pass
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        mainWindow = MainWindow()
        mainWindow.show()
        sys.exit(app.exec_())

    Ui_ocrui.py代码:

    # -*- coding: utf-8 -*-
    
    # Form implementation generated from reading ui file '/Users/EIthschnapps/Documents/git/playground/ocr_pyqt5/ocrui.ui'
    #
    # Created by: PyQt5 UI code generator 5.9.2
    #
    # WARNING! All changes made in this file will be lost!
    
    from PyQt5 import QtCore, QtGui, QtWidgets
    
    class Ui_MainWindow(object):
        def setupUi(self, MainWindow):
            MainWindow.setObjectName("MainWindow")
            MainWindow.resize(800, 600)
            self.centralwidget = QtWidgets.QWidget(MainWindow)
            self.centralwidget.setObjectName("centralwidget")
            self.layoutWidget = QtWidgets.QWidget(self.centralwidget)
            self.layoutWidget.setGeometry(QtCore.QRect(10, 10, 791, 541))
            self.layoutWidget.setObjectName("layoutWidget")
            self.horizontalLayout = QtWidgets.QHBoxLayout(self.layoutWidget)
            self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
            self.horizontalLayout.setObjectName("horizontalLayout")
            self.verticalLayout = QtWidgets.QVBoxLayout()
            self.verticalLayout.setObjectName("verticalLayout")
            self.opt = QtWidgets.QPushButton(self.layoutWidget)
            self.opt.setObjectName("opt")
            self.verticalLayout.addWidget(self.opt)
            self.start = QtWidgets.QPushButton(self.layoutWidget)
            self.start.setObjectName("start")
            self.verticalLayout.addWidget(self.start)
            self.plabel = QtWidgets.QLabel(self.layoutWidget)
            self.plabel.setEnabled(True)
            self.plabel.setMinimumSize(QtCore.QSize(100, 100))
            self.plabel.setMaximumSize(QtCore.QSize(100, 100))
            self.plabel.setText("")
            self.plabel.setObjectName("plabel")
            self.verticalLayout.addWidget(self.plabel)
            self.clean = QtWidgets.QPushButton(self.layoutWidget)
            self.clean.setObjectName("clean")
            self.verticalLayout.addWidget(self.clean)
            self.config = QtWidgets.QPushButton(self.layoutWidget)
            self.config.setObjectName("config")
            self.verticalLayout.addWidget(self.config)
            self.horizontalLayout.addLayout(self.verticalLayout)
            self.tedit = QtWidgets.QTextEdit(self.layoutWidget)
            self.tedit.setObjectName("tedit")
            self.horizontalLayout.addWidget(self.tedit)
            MainWindow.setCentralWidget(self.centralwidget)
            self.menubar = QtWidgets.QMenuBar(MainWindow)
            self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 22))
            self.menubar.setObjectName("menubar")
            self.menufile = QtWidgets.QMenu(self.menubar)
            self.menufile.setObjectName("menufile")
            MainWindow.setMenuBar(self.menubar)
            self.statusbar = QtWidgets.QStatusBar(MainWindow)
            self.statusbar.setObjectName("statusbar")
            MainWindow.setStatusBar(self.statusbar)
            self.menubar.addAction(self.menufile.menuAction())
    
            self.retranslateUi(MainWindow)
            self.opt.clicked.connect(MainWindow.loadImage)
            self.start.clicked.connect(MainWindow.recognize)
            self.config.clicked.connect(MainWindow.configApi)
            self.clean.clicked.connect(self.tedit.clear)
            self.clean.clicked.connect(self.plabel.clear)
            self.clean.clicked.connect(MainWindow.cleanText)
            QtCore.QMetaObject.connectSlotsByName(MainWindow)
    
        def retranslateUi(self, MainWindow):
            _translate = QtCore.QCoreApplication.translate
            MainWindow.setWindowTitle(_translate("MainWindow", "My OCR"))
            self.opt.setText(_translate("MainWindow", "选择图片"))
            self.start.setText(_translate("MainWindow", "开始识别"))
            self.clean.setText(_translate("MainWindow", "清空"))
            self.config.setText(_translate("MainWindow", "配置API Key"))
            self.menufile.setTitle(_translate("MainWindow", "file"))
    
    

    运行界面:

    exe程序及项目下载:https://download.csdn.net/download/mzl_18353516147/14028396

     

    展开全文
  • 近几天在做毕业设计获取数据,需要将电子书数据转化成文字,其中需要对图像中的文字进行识别,看了前辈们的文章,找到一个较简单的方法:使用python调用百度AI平台接口。写下这篇文章做一个比较简短的记录和学习,...
  • 天若OCR文字识别工具,调用了各大网站的ocr接口,免费不限次数,软件自带截屏功能,可以准确的对图片中的文字进行识别。天若OCR文字识别软件还支持英/日/韩语言的翻译,发送识别的文本等功能,让你可以高效方便的...
  • LEADTOOLS .NET OCR示例:多线程OCR

    千次阅读 2013-12-11 16:40:21
    LEADTOOLS v18的全新设计极大地简化了开发而无需牺牲控制力。LEADTOOLS v18增强了其用于光学字符识别的.Net类。LEADTOOLS的架构灵活、直观而且易于使用。开发人员仅通过三行代码就可以实现图像的OCR功能。本文接下来...
  • 汉王文字识别ocr

    2018-08-23 22:51:37
     本软件系统应用OCR(Optical Character Recognition)技术,为满足书籍、报刊杂志、报表票据、公文档案等录入需求而设计的软件系统。  目前,许多信息资料需要转化成电子文档以便于各种应用及管理,但因信息数字...
  • 开源OCR引擎调研

    2020-06-30 16:02:14
    关于开源OCR引擎的调研 一、OCR引擎比较 1. 优图OCR (腾讯) https://ai.qq.com/product/ocr.shtml#common 免费API:https://api.ai.qq.com/fcgi-bin/ocr/ocr_generalocr 该引擎专注于行识别,识别结果准确度高达98%...
  • OCR相关介绍

    千次阅读 2020-10-24 13:15:26
    OCR相关介绍 0 计算机视觉技术(computer version) 计算机视觉是人工智能的一个重要分支,它要解决的问题就是:看懂图像里的内容。 人的大脑皮层, 有差不多70% 都是在处理视觉信息。 是人类获取信息最主要的渠道,...
  • 什么是OCR

    2012-05-22 15:38:40
    OCR 添加义项 这是一个多义词 ,请在下列义项 中选择浏览 1. 光学字符识别 2. 牛津、剑桥和RSA考试局 3. 超固结比   1. 光学字符识别 编辑...
  • Android OCR数字识别

    2020-07-19 00:20:49
    查询各种OCR识别方式后还是决定采用Android+Tesseract进行识别。 今天开始记录开发过程。首先是开发环境的配置。 我的Android Studio 版本是最新的4.0。 1:环境搭建,新建项目,采用JAVA编程。 项目建成后...
  • WPF制作文字OCR软件;利用百度云接口实现文字OCR功能;如何在WPF中实现字符串json化处理。
  • OCR光学字符识别技术及其应用场景

    千次阅读 2018-07-02 13:47:31
    最方便的就是依靠目前比较火的图像识别技术OCR了,如果没有这个技术,我们只有老老实实一字一字地打印到word文档中去,这样就太繁琐了,而且直接变成打字员了,太浪费时间和精力了。本文以百度百科为基准进行了解:...
  • OCR字符识别

    千次阅读 2015-07-02 13:53:11
    简单、直观的实现优于复杂、难懂的实现,最近开发扑克识别过程的总结 ... 最近开发了款通用的扑克识别程序,本文谈下心得。最开始是准备使用Shape Context或Zernike矩来识别的,写出了Shape Context,发现识别率达不到...
  • 几款OCR识别软件

    万次阅读 2009-07-29 23:08:00
    几款OCR识别软件 汉王 OCR 在最近几年中,OCR识别技术随着扫描仪的普及得到了飞速的发展,扫描、识别软件的性能不断强大并向智能化不断升级发展。 OCR是英文Optical Character Recognition的缩写,意思为光学字符...
  • ♚作者:jclian,喜欢算法,热爱分享,希望能结交更多...当一张图片中含有表格数据的时候,我们可以用OpenCV识别表格中的直线,然后再用OCR技术识别其中的文字。  本文仅作为如何识别图片中的表格的一个例子...
  • 文档扫描OCR简介

    2020-03-25 14:40:50
    文档扫描OCR识别简介 文档扫描OCR识别(Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成...
  • OCR+Docker部署

    千次阅读 2019-08-05 13:41:37
    一、环境部署准备: ...5.部署系统配置最好高一些,因为设计识别时的浮点运算,所以CPU和内存最好配置高一些,这将影响响应的速度。 【CentOS 安装 Docker CE】 其他版本Docker安装可参照以下网址...
  • Tesseract-OCR

    2019-10-06 18:36:24
    1)Tesseract最初只是设计用来识别英文的。现在,tesseract内置的训练系统已经可以支持其它语言。 2)Tesseract提供了约一百种语言库供我们使用。但是,如果有需要,我们可以使用tesseract的训练机制来创建自己的...
  • 天若ocr文字识别工具绿色版是一个十分强大的文字智能识别软件,天若ocr文字识别工具绿色版支持RGB 、Dec 和Hex 三种格式的色值,而且还有一个混色器,取到颜色之后可以再编辑。 使用方法: 1、默认快捷键F4,可以...
  • 基于OCR的身份证要素提取-2019

    万次阅读 2020-06-27 10:56:41
    基于OCR的身份证要素提取 1赛题简介 1.1赛题背景 我们本次的比赛赛题“基于OCR的身份证要素提取”来自CCF大数据与计算智能大赛(CCF Big Data & Computing Intelligence Contest,简称CCF BDCI)。 身份证影像...
  • OpenCV+OCR 图像处理字符识别原理及代码

    万次阅读 多人点赞 2016-12-14 22:41:19
    需配置好OpenCV和OCR环境下运行 1、OpenCV简介 OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。 OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言...
  • OpenCV+OCR文字识别

    万次阅读 2017-06-29 16:01:29
    需配置好OpenCV和OCR环境下运行 1、opencv简介 OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。 OpenCV用C++语言编写,它的主要接口也是C++语言,但是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,368
精华内容 2,147
关键字:

ocr接口设计