关于ocr:市面主流开源-ocr-横屏测试
用于测试的图片是上面三张:
用于测试的图片是上面三张:
在数字化时代,信息处理和数据管理是企业经营的重要环节。然而,手工输出信息存在效率低和准确性低的问题,重大影响了企业的工作流程和决策过程。因而,OCR(Optical Character Recognition)辨认技术的利用变得尤为重要,企业通过搭载基于深度学习的 OCR 文字辨认能力的智能手持终端,能够无效解决各种作业场景下的文字辨认和信息提取需要,晋升企业信息管理的精细化和高效性。 一、什么是 OCR 辨认 OCR 辨认,即光学字符识别,是一种通过扫描和辨认纸质文档上的文字,将其转换成计算机可编辑和解决的数字文本格式的技术。简略来说,OCR 辨认就是将纸质文档上的文字“翻译”成电脑能读懂的文字。 OCR 辨认技术次要依赖于图像处理和模式识别算法,通过捕获文档中的字符特色,如笔画、形态、大小、间距等,与预设的字符库进行比对,从而辨认出相应的文字信息。 二、OCR 辨认的劣势 高效便捷:OCR 辨认技术能够疾速、精确地将纸质文档转化为数字文本,大大提高了工作效率。 节省成本:传统的文档解决形式须要大量的人力物力投入,而 OCR 辨认技术能够大幅度降低这一老本,实现文档的自动化解决。 易于存储和传输:数字文本格式的文件更易于存储和传输,不便用户随时随地查看和编辑。 可编辑性强:通过 OCR 辨认技术生成的数字文本,用户能够依据须要进行批改、复制、粘贴等操作,满足多样化的需要。 三、OCR 辨认的利用场景文档数字化:OCR 辨认技术广泛应用于各类文档的数字化解决,如合同、发票、报告等。通过 OCR 辨认,用户能够轻松地将纸质文档转化为电子文档,便于存储和传输。 票据辨认:在财务、物流等畛域,OCR 辨认技术常被用于辨认和解决各类票据,如发票、运单等。这大大减少了人工核查和录入的工作量,进步了解决效率。 车牌辨认:在智能交通系统中,OCR 辨认技术用于疾速辨认车牌号码,助力交通管理和违章解决。 图像文字提取:OCR 辨认技术还能够从图像中提取文字信息,如从书籍、报纸、杂志等纸质媒介中提取文字,实现文字内容的数字化获取。 Finovy Cloud 的 OCR 辨认服务具备高精度辨认、场景多元,适用性广、便捷接口,易于接入等特点,无论您是须要疾速解决集体文档的个人用户,还是心愿实现大规模文档数字化解决的企业用户,Finovy Cloud 的 OCR 辨认服务都能满足您的需要。
1. Enviroment:Ubuntu 20.04Python 3.7(我是用miniconda创立的3.7环境) 2. Install Setp:pip install paddlepaddlepip install PPOCRLabel# 如果呈现Could not load the Qt platform plugin "xcb"这样的谬误提醒,则须要执行上面这行命令sudo apt-get install libxcb-xinerama0pip uninstall opencv-pythonpip install opencv-python-headless3. Tips:折腾了半天,就是须要这样装置。至于opencv-python-headless 的版本,最新的我这里能够,但也能够用4.2.0.32至于 opencv-contrib-headless 需不需要装置,我这里是不须要装置。然而相对不能装置 opencv-python。
CnOcr技术一个ocr辨认技术我的项目地址:https://github.com/breezedeus/CnOCR 1. 模型组成CRNN: CNN(DenseNet) + RNN(GRU/LSTM/FC) + CTC 应用Conv进行部分编码应用RNN进行全局编码应用CTCLoss进行训练2. 模型示意 3. 模型代码https://github.com/heroineyy/MyCnocr/tree/main/cnocr/models CnSTD技术(DBNet)一个图片中文本地位检测技术我的项目地址:https://github.com/breezedeus/CnSTD 1. 模型组成DBNet: Backbone(ResNet) + Neck(FPN) + Prob/Thresh Heads 2. 模型示意 3. 模型代码https://github.com/breezedeus/CnSTD/tree/master/cnstd/model
0.根底环境类别:笔记本型号:中国长城 NF14C硬件平台:飞腾处理器(ArmV8 指令集)零碎:河汉麒麟操作系统 V10 SP1(2303) 关键词:信创,麒麟零碎,linux,c++,c,飞腾,arm,ocr,acdsee 1.背景在咱们日常应用的过程中,特地是windows 11后,其自带的看图软件反对OCR(图片中间接复制出须要 的文本),给了咱们很大的便当。本文试图为大家在麒麟零碎下找到对应的看图软件,晋升大家日常工作的便利性。 2.gImageReadergImageReader是一个GUI软件,实现利用tesseract OCR引擎(Tesseract自身是命令行工具)从Linux中的图像和PDF文档中辨认文本。 2.1.1 装置与设置能够通过市场装置也能够通过命令行装置 sudo apt install tesseract-ocr -y #装置语言反对引擎,最初失去的是在/usr/share/tesseract-ocr/4.00/tessdata ,其中4.00 为版本sudo apt install gimagereader -y针对中文反对须要下载官网模型A:https://github.com/tesseract-ocr/tessdata These language data files only work with Tesseract 4.0.0 and newer versions网友自发的中文模型B:https://github.com/gumblex/tessdata_chi 中文的非凡反对,下载https://github.com/gumblex/tessdata_chi/releases/tag/v20220621 sudo chmod 777 -R /usr/share/tesseract-ocr/4.00/tessdata/ #更改读写权限先将A的数据解压复制进/usr/share/tesseract-ocr/4.00/tessdata/,再将B的数据解压复制进/usr/share/tesseract-ocr/4.00/tessdata/,如提醒反复可间接笼罩。 2.1.2应用成果切换辨认语言能够选定一个区域,也能够全副辨认,辨认成果如下能够看到对中文辨认成果并不现实,不晓得对英文的成果如何。 写在最初本文尝试多许多网友举荐的eSearch,Uni-OCR等,都不反对ARM64,所以就未收录在本篇文章中。gImageReader成果尽管不好,但还有肯定的作用,在没有更好的之前仍会保留在本篇文章中。接下来会持续尝试,尝试找到一个可用的,欠缺的产品或解决方案 。 麒麟零碎专栏:地址一:https://segmentfault.com/blog/kylinos 邮箱:1179611323@qq.com群:662512340github:https://github.com/xiaohelongtwitter:https://twitter.com/xiaohelong发行日志:20230517 首发
1. 筹备安装文件(零碎win10+)trwebocr.tar (装置并导出:docker export trwebocr > trwebocr.tar)wsl_update_x64.msiTheDebianProject.DebianGNULinux_1.12.2.0_neutral___76v4gfsz19hv4.AppxBundleDocker Desktop Installer.exe (官网下载新版) 2.装置wsl2a.启用实用于 Linux 的 Windows 子系统dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestartb.启用虚拟机性能dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestartwsl --set-default-version 2 c.装置linux发行版双击关上 TheDebianProject.DebianGNULinux_1.12.2.0_neutral___76v4gfsz19hv4.AppxBundle 尝试装置胜利跳过d。如果装置失败:将其文件名后缀由.AppxBundle间接强制改为.zip,而后间接解压zip包,---> 进入解压目录,抉择DistroLauncher-Appx_1.12.2.0_x64.appx,后缀间接强制改为.zip,而后间接解压zip包,---> 进入解压目录,如:D:\360极速浏览器X下载\TheDebianProject.DebianGNULinux_1.12.2.0_neutral___76v4gfsz19hv4\DistroLauncher-Appx_1.12.2.0_x64 挪动此目录到 D:\ProgramFiles\DistroLauncher-Appx_1.12.2.0_x64 备用。 d. 检测环境变量wsl -l -v查看环境。如果linux用的是wls1,装置wsl_update_x64.msi并转换版本 wsl --set-version Debian 2如果无奈实现:在程序和性能外面,开启hyperf-v和linux子系统,重启重试。确保是wsl2环境。 3. 启动环境a.启动wsl右键命令行启动linux环境(win10的能够间接关上D:\ProgramFiles\DistroLauncher-Appx_1.12.2.0_x64\Debian.exe),检测关上linux是否失常。 b. 装置并启动dockerdocker -v 查看装置是否失常 c. 执行导入命令此命令在linux下执行,前面是容器文件的理论门路 docker import /mnt/d/downloads/trwebocr.tar < trwebocr输出 docker images 查看导入是否胜利。 d. 启动容器docker run -d --name trwebocr --restart=always -p 8089:8089 trwebocr python /TrWebOCR/backend/main.py能够在win或Linux下执行。 ...
秋季是忙碌的收获季,学生党迎来了开学季和缓和的研究生复试,职场人士也须要解决新签业务带来的大量不同类型的文件,比方合同、发票、档案等。这些文件在被拍照、扫描成电子文档的过程中,时常存在漏字、错位景象。究其原因,有个看似“冷门”却要害的技术点极大地影响了文字辨认成果,这个技术便是“版面剖析”。 近期,人工智能及大数据科技企业合合信息继续冲破版面剖析技术在版面宰割、区域间的逻辑关系解决等方面的难题,通过智能文字辨认、智能图像处理等外围技,助力使用者从各类简单的图片文档中精准获取信息。 深度学习助力版面剖析“泛化”难题冲破 版面剖析的目标是让机器“看懂”文档构造,行将文档图像宰割成不同类型内容的区域,并剖析区域之间的关系,这是内容辨认之前的关键步骤。 据中国科学院自动化研究所多模态人工智能零碎全国重点实验室联结多所高校公布的论文显示,版面剖析次要包含物理版面剖析(区域分割、分类,文本检测与定位,文本行宰割等),手写及印刷辨别,表格剖析(单元格提取与关系剖析),逻辑版面剖析(区域语义分类、浏览程序),以及签名、图标、印章等版面元素的提取等。 总体而言,版面剖析工作被分为物理版面剖析(或称为几何版面剖析)和逻辑版面剖析两类,前者次要解决区域分割问题,后者则关注区域之间的逻辑关系或浏览程序。 从上世纪80年代开始,较多专门钻研版面剖析的工作成绩开始涌现,尔后经验了多番理念办法迭代。传统的版面分析方法在进行版面布局剖析和表格解决时会显著受制于版式差别,在应答不同场景下的文档图片时泛化成果存在缺点,而深度神经网络的引入无效解决了这些问题。 合合信息技术人员在采访中提到,得益于全卷积神经网络(FCN)和图神经网络(GNN) 的冲破,文档版面剖析的办法和性能失去了很大倒退。公司基于深度学习的办法,联合文本区域的几何坐标、视觉特色、文本语义等多种模态信息对文本浏览程序进行预测,显著晋升分类后果。 合合信息智能文字辨认服务平台对存在图片、表格的简单文档进行辨认 同时,合合信息表格构造解析办法在逻辑版面剖析中也施展了重要作用,次要包含自上而下的办法、自下而上的办法以及端到端图像到标记的办法等。在财报相干表格辨认测试中,有线表辨认单元格构造准确率高于98%;无线表辨认中,在保障表格区域内容的完整性的同时,检测准确率较传统办法显著晋升。 教育、商务、文保,“小”技术有大利用 近期,中共中央、国务院印发《数字中国建设整体布局布局》,“数字中国”的建设迈上了新的征程。版面剖析是实现文档信息数字化的重要能力,解决了版面剖析的痛点,有助于各界用户将图像文档以数字化的伎俩更精准地转化为文档数据,晋升工作效率。 对于钻研人员或学生群体而言,版面剖析与OCR技术的联合能够广泛应用于课件、试卷、作业、学术论文等资料的数字化解决,自动识别和提取多种教育类文档文本、图像、公式、表格等元素进行不同场景的利用,简化教学和学习过程。 商务场景中,版面剖析与OCR技术能自动识别和提取财务数据、图表、文本等信息,并将印刷财报转换为可剖析的电子数据,在解决不同类型的财务报表时,可能晋升报告剖析效率和准确性,帮忙相干人员实现公司财务报告、审计报告、年度报告等文件的主动解决和剖析。 此外,版面剖析相干技术还可作用于文化爱护,通过自动识别和提取各种类型书籍的表格、图像信息,将不同时代、多种印刷版式、多种概念的纸质图样依照合乎人类了解的格局进行电子化存储,帮忙实现文献、古籍、报纸、杂志等材料的数字化和常识治理。 相干钻研表明,现阶段,针对简单版面文档和拍照变形文档的剖析辨认仍存在性能有余的状况。这个细小却重要的技术还须要更多的钻研机构及科技企业退出进来,独特推动实践的钻研与利用的冲破。
光学字符识别OCR技术(Optical Character Recognition)是指从图像中主动提取文字信息的技术。这项技术横跨了人工智能里的两大畛域:CV(计算机视觉)和NLP(自然语言解决),综合应用了这两大畛域中的很多技术成绩。 在过往40余年的技术倒退历程中,OCR始终具备很强的产业利用背景,是计算机领域里少数几个一开始就由工业界和学术界双轮驱动的畛域。近年来OCR技术曾经在工业界成熟落地利用,学术界里对此的钻研热度反而弱于其余方向。甚至有人认为OCR技术曾经充沛成熟,没有更多钻研必要了。然而随着近年来智能文本处理IDP(Intelligent Document Processing)在工业界的逐渐落地利用,OCR和IDP相结合的利用场景越来越多,用语义了解NLP的角度进一步去延长OCR的利用,呈现了很多更有产业利用价值的场景。本文回顾了OCR技术的倒退历程,并联合达观数据在工程实际方面的教训,介绍与语义剖析技术联合后,以后OCR技术的一些最新倒退和落地教训。 OCR技术的倒退历程OCR技术的诞生其实比计算机的历史还要悠久,早在1930年代,德国发明家Tausheck(陶舍克)和美国工程师Handel(汉德)别离申请了最早的OCR专利,这比计算机的诞生还要早20年工夫。因为当年还齐全没有计算机以及相干外设(如明天宽泛应用的扫描仪或高拍仪),所以最早提出的OCR技术采纳的是机械掩模和模板匹配的办法来解决打字机输入的文档。过后的技术雏形离理论利用还比拟边远。 OCR技术真正开始进入办公利用是到了1960年代,引领这项技术的是美国IBM公司。随着二战后美国经济的腾飞,计算机开始进入企业办公畛域,在一些日常处理量大且步骤繁琐的场景下OCR开始施展利用价值。例如1965年纽约世博会展出的IBM1287机器就能自动识别英文字母和数字,且准确率很高。尔后逐渐被用于一些订单编号的辨认派发,和信封邮政编码的辨认和邮件分拣等工作中。 1980年代起,随着日本经济尤其是电子技术的飞跃,富士通、日立、东芝、NEC等日本科技公司纷纷入场。这个期间的钻研特点是图像采集的电子器件失去疾速倒退,光栅扫描、成像、电子化图像传输等信号采集技术成长迅速,相应的轮廓提取、构造剖析等软件算法也开始呈现。 在以精细电器制作见长的日本企业推动下,扫描仪等采集设施的成果、速度、老本有了长足的提高,对规范打印字符的辨认成果越来越好,OCR零碎开始遍及利用。和其余很多高科技畛域里“先从大学有了晚期实践钻研冲破,而后逐渐在产业界孵化出实用零碎”的形式不同,在这个阶段,OCR技术始终是由工业界主导并获得了良好的利用成果。惟一的例外是对手写字符的辨认。因为手写字符的变动太大,各种连笔、涂改、变形等让计算机识别的确太难(甚至过于潦草的状况下让人辨识都很难),所以作为OCR畛域的钻研分支,成为了学术界的一个钻研热点。尤其1990年代模式识别(Pattern Recognition)衰亡,激发了学术研究界对手写字符识别的激情。此时呈现赫赫有名的MNIST数据集,由美国国家标准与技术研究所(NIST,National Institute of Standards and Technology)发动整顿了来自250个不同人的手写数字图片。 MNIST是OCR乃至模式分类畛域最出名的入门数据集 尔后大量的模式分类以及图像处理论文都以MNIST作为根底,进行各类特色抽取和模式分类的算法钻研。至今一些大学人工智能的入门课程还会用MNIST数据集来跑试验,堪称经久不衰。为什么只有手写字符集,不搞打印字符测试数据集?因为对打印字符的辨认准确率曾经极高(99.9%以上),没有科研必要了……此处顺便一提,百度创始人李彦宏1996年在美国IDD公司工作时也参加了OCR技术钻研,其中一篇优良的研究成果发表在机器学习界出名学术期刊IEEE Transaction PAMI上。 百度李彦宏的OCR论文,发表于IEEE Trans on PAMI 21世纪后,OCR被进一步利用于各行各业里卡证票据的辨认。针对的是日常生活中频繁应用到的发票、身份证、银行卡、营业执照、房产证、驾驶证、汽车牌照等实体证件。在这个阶段,图像扫描技术曾经高度成熟了,所以技术钻研根本集中在软件算法方面,并细分为信息检测(Detection)和辨认(Recognition)两个技术分支别离倒退,本文前面有更具体的技术介绍。 因为大部分常见的卡证票据都有绝对固定的格局布局,所以通常只须要有足够多的训练样本,通过样本标注生成元素的模板定位,就能解决绝大部分问题,不必大费周折应用“智能化”的检测算法。艰深地说,这类利用场景是”数据为王”。 自2015年之后OCR技术和利用又迎来了微小的变动,这次次要来自两个因素的推动。第一个因素是挪动手机拍照的遍及。在此之前,OCR的图像通常来自于扫描仪、高拍仪等企业级专用采集设施,图像的品质十分高,但因为固定在办公桌面应用,不够不便灵便,限度了利用场景,所以此前的OCR集中于企业级商用。而智能手机的迅速遍及,让咱们每个人都有了一个“拍摄+上传”的一体化终端,为OCR的利用遍及带来了新的历史时机,随之而来产生了很多新的利用场景。例如各种集体证照、文件等的自助式拍摄和上传,用于近程申报和审批等事项,或者拍摄并辨认文件进行内容主动解决等翻新场景(例如教育领域的拍题搜答案等)。 这个因素也随之带来了一些新的技术问题,例如手机因为拍摄绝对随便,集体拍摄的程度参差不齐,会导致图像存在暗影遮挡、角度畸变、失焦含糊等等一堆新的问题。也相应产生了一批解决这些问题的工程伎俩。(达观数据陈运文) 另一个重要因素来自深度学习技术的微小实践冲破。在深度神经网络的旋风刮到OCR畛域之前,用于检测和辨认的技术堪称是百花齐放,例如各种各样的信号处理(例如Fourier、Radon、Hough、Zernike)特色提炼办法、图像构造的办法(穿插线、圆圈、横竖线条)、各种算子(如SIFT、SURF、各类卷积算子等)等、以及各种映射技术等。针对一些专用的字符类型和非凡利用场景,还有专门结构的人工特征提取技术。 但深度学习时代里通过多层网络结构来主动进行特色学习,颠覆了这些传统的人工特征提取过程,成果也有显著的改善。近年来学术界的论文曾经是神经网络一统江湖了。加上之前限度深度学习的算力老本大幅度降低,新的更简单的网络结构层出不穷,将OCR技术的成果一直推上新的台阶。 在“智能手机+深度学习”这两个因素独特助推下,近年来OCR技术的研发迎来了三个新的热点方向,别离是: OCR与智能文本处理(IDP)相结合,进行无固定格局文档的语义了解和结构化解析,不仅辨认文字自身,而且了解文字的版面、构造、表格元素、段落内容等,从而实现对文本因素信息的还原和结构化抽取工作,并用于智能文档审阅解决等场景OCR与业余畛域的符号辨认相结合,如数学公式符号、物理公式、化学分子结构图、修建图纸等等,实现业余畛域的利用,如拍图搜题,图纸审核等场景OCR与凋谢场景的文字辨认相结合(常称为STR,Scene Text Recognition),例如路牌、店面招牌、商标文字、户外广告辨认等,用于交通、户外生产、主动驾驶等场景这三类以后的热点利用,都有各自的技术难点,也别离衍生出了相应的产品技术解决方案。其中OCR与IDP的联合是目前达观数据的次要钻研和利用方向,接下来会进行一些技术分享。 OCR技术的倒退状况以后学术界广泛将OCR解决分为 图像预处理、文本检测(Detection)、文本辨认(Recognition)这三大步骤,或者也有将检测和辨认合并,间接用端到端学习(End-to-End)进行解决工作。 图像预处理用于看待解决的原始图像进行一些改正操作,以助于升高后续的检测和辨认难度。例如应用一些工程化技术来调整图像对比度、旋转对齐、进行部分裁剪、折痕和墨点等烦扰信息的淡化等都属于绝对根底的预处理操作。因为在应用高拍仪或扫描仪等业余采集设施时,图像品质广泛较好,所以在2010年以前对图像预处理方面的系统性的钻研并不多,更多集中于对部分的畸变进行校对(Image Rectifier)或图像去噪。 经典的图像预处理常常用到各类滤波器(如高斯滤波、BM3D等)进行去噪,另外一些信号处理伎俩也罕用于对图像进行旋转对齐,横平竖直的文档会让后续的检测和辨认变得容易得多。智能手机拍摄遍及后,光照不平均、暗影遮挡、部分扭曲、甚至对焦含糊等简单状况层出不穷,所以在理论工程利用中,图像预处理的好坏对后续辨认精度价值很大,只管这个环节作为OCR的一个非核心环节,受到学术圈的器重较少,各大学术会议上也简直常见这方面的钻研论文(近年有几篇不错的Text deblurring论文)。但学术和工程的指标是不一样的,工程利用要在琐碎中见真章,会配置很多业务规定和解决步骤。 顺便一提,为了减少标注样本的数量,晋升算法在不同场景下的鲁棒性,生成反抗网络(GAN)的思维在OCR的样本生成方面也很罕用。尤其在标注样本不短缺的状况下,用GAN网络联合人工标注和积攒的实在样本,日拱一卒不断扩大训练样本库,也是罕用的做法。 文本检测是OCR的最重要环节之一(另一个是文本辨认),传统的文本检测应用了各种人工结构的特色,例如常见的二值投影、旋转仿射变换、各类图像算子如HoG算子、SURF算子,DPM模型(Deformable Parts Model)等来定位文本行列地位。在2010年前最常见的技术手段为滑动窗口检测、或基于连通区域检测的办法,由下而上逐渐拟合出文本块。 因为结构特色的过程偏定制,很难针对不同的文档类型造成大而全的普适计划。在具备特定构造法则的OCR畛域,尤其是卡证票据这类常见检测利用场景,传统的模板+滑动窗口定位检测的办法是管用的。 近10年来随着深度学习技术的飞速发展,多种多样的神经网络构造(如称为XXNET或XXNN)的检测成果显著优于传统人工结构的特色,以后支流的检测技术由深度学习来主导。 文本检测中常见的思维有两大类,一类是基于回归的办法,另一类是基于宰割的办法。 基于回归的检测办法,基本思路是先利用若干个默认锚点(Anchor),而后想方法进行合并造成文字框box。2016年ECCV发表的CTPN是基于回归思维的经典技术(Detecting Text in Natural Image with Connectionist Text Proposal Network,论文出自中科院,为咱们中国研究者点赞)。 CTPN是基于回归的文本检测中的经典办法 CTPN综合了CNN和LSTM的网络个性*,在假如文本曾经是程度横向散布的前提条件下,做了以下步骤的操作: VGG16位backbone提取空间特色,取conv5层输入特色在垂直vertical方向进行feature map,并进行reshape引入Bi-LSTM,从而更好地利用文字连贯性的特色来晋升检测成果应用相似Faster R-CNN的RPN网络取得text proposals对取得的大量text proposals,应用NMS(Non-Maximum Suppression,非极大值克制),或改良后的Soft NMS,Weighted NMS等,过滤和合并文本框。(这个阶段的工作和通用的指标检测工作类似)对失去的程度方向的文本小框合成一个残缺的横向文本行,并针对大量歪斜状况做一些改正CTPN综合了上述若干种网络结构的长处,有优良的检测成果,尤其对边框矩形的四个顶点的辨认很精确,对OCR检测技术的后续倒退有承前启后的意义。例如尔后的SegLink算法沿用了CTPN的思维,并引入了SSD和旋转角度学习的办法,来解决CTPN遗留的多角度文本检测的问题。 基于回归的办法对绝对工整(横平竖直)的书面文档文本的检测成果很好,但对各类天然场景下的文本的检测成果难以保障(例如各类蜿蜒形变的店铺招牌)。所以有另一类思维是源于图像宰割(image segmentation)的办法来进行文本检测,即:先从像素层面做分类,判断每一个像素点是否属于一个文本指标,失去文本区域的概率图,而后利用polygon等来绘制出这些候选区域的最小突围曲线,相当于把一堆散落的像素块像串联珍珠那样,链接到一起来造成边界框。 PSENet网络是基于宰割的文本检测技术,对显著蜿蜒的文本有良好效果 ...
合合信息对于文本纠错:晋升OCR工作准确率的办法了解 摘要:错字率是OCR工作中的重要指标,文本纠错须要机器具备人类程度相当的语言理解能力。随着人工智能利用的成熟,越来越多的纠错办法被提出。近年来深度学习在OCR畛域获得了微小的胜利,但OCR利用中辨认谬误时有呈现。谬误的辨认后果不仅难以浏览和了解,同时也升高文本的信息价值。 在某些畛域,如医疗行业,辨认谬误可能带来微小的损失。因而如何升高OCR工作的错字率受到学术界和工业界的宽泛关注。合合信息通过本文来解说文本纠错技术帮忙更多人解决业务问题。通常文本纠错的流程能够分为谬误文本辨认、候选词生成和候选词排序三个步骤。 文本纠错办法可包含基于CTC解码和应用模型两种形式,上面别离对这两种纠错形式进行介绍。 1.Beam Search该办法是针对CTC解码时的一种优化办法,这是因为当应用贪婪算法进行CTC解码时疏忽了一个输入可能对应多种对齐后果,导致在理论利用中错字率会颇高,并且无奈与语言模型联合。因此通过Beam Search的办法咱们可能失去top最优的门路,后续也能够利用其余信息来进一步优化搜寻后果。 1.1 prefix Beam Search[1]因为有许多不同的门路在many-to-one map的过程中是雷同的,当应用Beam Search时只会抉择Top N个门路,这就导致了很多有用的信息被舍弃了,如图1所示,生成“a”门路的概率为0.2·0.4+0.2·0.6+0.8·0.4=0.52,而生成blank的门路概率为0.8·0.6=0.48,当应用最佳门路的搜寻形式会偏向于抉择blank的门路,而不是整体概率更大的a门路。所以就有了Prefix Beam Search,其根本思维是,在每个t时刻,计算所有以后可能输入的规整字符串(即去除间断反复和blank的字符串)的概率。而后用Beam Search的办法,在每个时刻选取最好的N个门路,从而将每个工夫点t上的搜寻空间变为常数。在计算最优门路概率时,以t=3时刻,规整字符串为“a”为例,如图2所示。对于t+1时刻的可能状况有6种,能够看出在Prefix Beam Search中将规整后的字符串分为了以blank和非blank结尾的两种状况来计算t+1时刻的概率。通过Prefix Beam Search办法,解决了在many-to-one map过程所导致的后果雷同而门路可能不同的问题,搜寻后果是针对具备雷同后果门路的排序,而不是繁多门路的排序。 1.2 Vanilla Beam S对于输入是一个大小为 T × (C + 1) 的矩阵,进行解码时在每个工夫步t,每个beam-labeling都会被t+1时刻的所有可能的字符扩大,同时未被扩大前的beam-labeling也会被保留下来,这一搜寻过程能够示意为如图 3 所示的树状构造。为防止搜寻门路的指数增长,在每个工夫步仅保留N个最佳的beam-labeling。如果在t时刻两个beam-labeling相等,则会把二者的概率进行求和,而后删除其中一个来合并二者的门路。在这一过程中能够应用character-level LM的先验信息对beam-labeling可能的扩大进行打分。也能够引入一个词典,当呈现词汇表外的单词(OOV)时,就能够删除相干的beam,来保障解码后始终可能失去有意义的后果。 1.3 Word Beam Search[3]VBS工作在字符级别,不会从语义级别去判断解码的内容是否合乎规定,而WBS办法能够综合前后几个字符的信息来取得以后字符的精确信息,在可能将解码后的单词限度在词典里的同时,还容许单词之间领有任意数量的非单词字符,并且在解码中还能够应用word-level LM的先验信息,来晋升对CTC解码的准确性。 在进行解码时,当beam-labeling被标记为单词状态时,应用依据词典事后形成的prefix-tree,如图4所示,来束缚解码的后果始终在词典中,当beam-labeling转换为非单词状态时,则不用受prefix-tree的束缚进而可能实现非单词字符的解码,beam-labeling状态的转换受将要扩大字符的影响,如果字符为词典字符(对英文来说词典字符能够定义为英文字母)则其状态为单词状态,字符为非词典字符则为非词典状态。通过WBS办法能够进一步升高解码时的错字率。 2.基于深度模型的文本纠错针对文本纠错,除了在解码时引入Beam Search和LM先验常识来升高错字率外,还能够通过深度学习的办法,应用经过训练的纠错模型来辨认和纠正文本中呈现的谬误。 2.1 基于Seq2Seq 模型的纠错在Confusionset-guided Pointer Networks for Chinese Spelling Check[4]文中,提出了应用混同集和门控机制相结合的中文纠错模型,如图5所示。纠错模型应用的时Encoder-Decoder模式,编码器应用的是BiLSTM,对中文文本按字符级别进行编码,解码器应用的是LSTM,在解码器进行解码时,不仅接管上一个token的embedding的特征向量,还承受通过注意力机制将编码器的文本特色聚合成一个蕴含上下文信息的特征向量,从而达到基于语义信息的文本纠错。在解码器的每个工夫t所生成的特征向量,一方面通过线性变换投影到vocabulary的向量空间用于生成候选字符,另一方面也会通过一个Softmax层形成的门控机制,用于决定以后时刻解码器的输入后果是否间接复制原始的文本字符。此外当门控机制不抉择间接复制时,并且当要预测的字符呈现在事后设定好的混同集中的时候,解码器则会在混同集中抉择候选的字符,而不是在整个词典向量空间中抉择。 2.2 FASPell[5]尽管通过退出注意力机制Seq2Seq模型也能实现基于上下文信息的文本纠错,然而基于混同集进行候选词的结构,很容易在大量数据上过拟合,而且只利用混同集的办法也不够灵便,因为这一阈值是固定的导致字符之间的相似性没有被充分利用。 因此FASPell模型提出了基于预训练模型作为候选词生成器,并应用了置信度和类似度相结合的解码器实现不依赖混同集的中文纠错,模型构造如图6所示。首先是在Bert模型上进行训练(也就是文中说的自降噪编码器DAE),训练时将谬误的token用mask代替,为了避免过拟合也会随机对正确的token应用mask。 通过训练编码器生成的候选词后通过一个Confidence-Similarity Decoder,简略来说就是利用字符的字形和拼音类似度,再联合训练集上给出的置信度散布找出基于二者之间正确和谬误字符的分界线。在测试时不再仅仅依据Bert模型所给出的置信度来筛选候选词,而是加上候选字符与原始字符的类似度信息独特决定最终的后果。 FASPell尽管说该办法比RNN构造的纠错网络可能更快、更好的适用性、更加简略和更弱小,少了混同集但同时引入了字形类似度和拼音类似度,并且在解码时,决策边界的抉择也须要依据训练集进行调整,当训练集散布与理论应用时数据的散布不同时决策边界有可能也须要调整,能力获得较为理想的后果。 2.3 基于注意力机制的Seq2Seq纠错模型针对英文的纠错在Denoising Sequence-to-Sequence Modeling for Removing Spelling Mistakes[6]一文中应用Bert 的注意力机制代替了RNN构造,模型构造如图7所示。其中编码器应用了6层多头注意力构造,解码器与编码器构造雷同,与Seq2Seq解码形式一样,按工夫程序生成纠错后的文本,为了实现这一过程,在解码时应用了mask机制,使得解码器在t时刻的只能看到t时刻之前的信息。 相比RNN构造的降噪模型,模型性能有所晋升,因为没有应用预训练模型须要较大的训练集进行训练,而且在文中并没有提及具体的试验细节,编码器的特色是怎么送入解码器中的,文中也没有具体提及。 ...
PDFelement Pro Mac是一款能够帮忙用户编辑PDF的工具,其设计的性能针对中小型用户开发,反对惯例的编辑、批改、操作,并且能够实现PDF文件转换性能,您能够将word、Excel等office文件转换为PDF文件保留,让您能够领有一款简略、高效的PDF办公软件。 装置PDFelement 9 Pro
本文篇幅较长,倡议配合目录食用分次浏览。本文首发于CSDN平台 链接:https://blog.csdn.net/INTSIG/...2.倒退历程与现状2.1信息抽取技术倒退历程从自然语言文本中获取结构化信息的钻研最早开始于20世纪60年代中期,这被看作是信息抽取技术的初始钻研,它以两个长期的、研究性的自然语言解决我的项目为代表。 美国纽约大学发展的Linguistic String我的项目[3]开始于60年代中期并始终连续到80年代。该项目标次要钻研内容是建设一个大规模的英语计算语法,与之相干的利用是从医疗畛域的X光报告和医院入院记录中抽取信息格式(Information Formats),这种信息格式实际上就是当初咱们所说的模板(Templates)。 另一个相干的长期我的项目是由耶鲁大学Roger Schank及其共事在20世纪70年代发展的无关故事了解的钻研。由他的学生Gerald De Jong设计实现的FRUMP零碎是依据故事脚本实践建设的一个信息抽取零碎。该零碎从新闻报道中抽取信息,内容波及地震、工人罢工等很多畛域或场景。该零碎采纳了冀望驱动(top-down,脚本)与数据驱动(bottom-up,输出文本)相结合的解决办法。这种办法被起初的许多信息抽取零碎采纳。 从20世纪80年代末开始,信息抽取钻研蓬勃开展起来,这次要得益于音讯了解系列会议(MUC,Message Understanding Conference)的召开。正是MUC系列会议使信息抽取倒退成为自然语言解决畛域一个重要分支,并始终推动这一畛域的钻研向前倒退。 从1987年开始到1998年,MUC会议共举办了七届,它由美国国防高级钻研打算委员会(DARPA,the Defense Advanced Research Projects Agency)赞助。MUC的显著特点并不是会议自身,而在于对信息抽取零碎的评测[5]。只有加入信息抽取零碎评测的单位才被容许加入MUC会议。在每次MUC会议前,组织者首先向各参加者提供样例音讯文本和无关抽取工作的阐明,而后各参加者开发可能解决这种音讯文本的信息抽取零碎。在正式会议前,各参加者运行各自的零碎解决给定的测试音讯文本汇合。由各个系统的输入后果与手工标注的规范后果绝对照失去最终的评测后果。最初才是所谓的会议,由参与者交流思想和感触。起初,这种评测驱动的会议模式失去宽泛推广,如1992年开始举办的文本检索会议TREC2等。 从历次MUC会议,能够分明地看到信息抽取技术倒退的历程。 1987年5月举办的首届MUC会议基本上是探索性的,没有明确的工作定义,也没有制订评测规范,总共有6个零碎加入,所解决的文本是海军军事情报,每个零碎的输入格局都不一样。MUC-2于1989年5月举办,共有8个零碎加入,解决的文本类型与MUC-1一样。MUC-2开始有了明确的工作定义,规定了模板以及槽的填充规定,抽取工作被明确为一个模板填充的过程。MUC-3于1991年5月举办,共有15个零碎加入,抽取工作是从新闻报告中抽取拉丁美洲恐怖事件的信息,定义的抽取模板由18个槽组成。从MUC-3开始引入正式的评测规范,其中借用了信息检索畛域采纳的一些概念,如召回率和准确率等。MUC-4于1992年6月举办,共有17个零碎加入,工作与MUC-3一样,依然是从新闻报告中抽取恐怖事件信息。但抽取模板变得更简单了,总共由24个槽组成。从这次会议开始MUC被纳入TIPSTER文本我的项目。MUC-5于1993年8月举办,共有17个零碎加入:美国14个,英国、加拿大、日本各一个。此次会议设计了两个指标场景:金融畛域中的公司合资状况、微电子技术畛域中四种芯片制作解决技术的停顿状况。除英语外,MUC-5还对日语信息抽取零碎进行了测试。在本次会议上,组织者尝试采纳均匀填充错误率(ERR, Error Per Response Fill)作为次要评估指标。与以前相比,MUC-5抽取工作的复杂性更大,比方公司合资场景须要填充11种子模板总共47个槽,光工作形容文档就有40多页。MUC-5的模板和槽填充标准是MUC系列评测中最简单的。MUC-5的一个重要翻新是引入了嵌套的模板构造。信息抽取模板不再是扁平构造(flat structure)的单个模板,而是借鉴面向对象和框架常识示意的思维,由多个子模板组成。模板中每个槽的取值除了能够是文本串(如公司名)、格式化串(如将日期、工夫、金额等文本形容转化为某种标准模式)、无限汇合中的元素(如组织类型能够分为公司、政府部门、钻研机构等)外,还能够是指向另一个子模板的指针。MUC-6于1995年9月举办,训练时的指标场景是劳动争议的协商状况,测试时的指标场景是公司管理人员的职务变动状况,共有16家单位加入了这次会议。MUC-6的评测更为粗疏,强调零碎的可移植性以及对文本的深层理解能力。除了原有的场景模板(Scenario Templates)填充工作外,又引入三个新的评测工作:命名实体(Named Entity)辨认、共指(Coreference)关系确定、模板元素(Template Element)填充等。其中命名实体辨认即NER这个术语首次呈现在MUC会议中,其工作次要是要辨认出文本中呈现的专有名称和有意义的数量短语并加以归类;共指关系确定工作是要辨认出给定文本中的参照表达式,并确定这些表达式之间的共指关系;模板元素填充工作是要辨认出特定类型的所有实体以及它们的属性特色。 最初一届MUC会议——MUC-7于1998年4月举办。训练时的指标场景是飞机失事事件,测试时的指标场景是航天器(火箭/导弹)发射事件。除MUC-6已有的四项评测工作外,MUC-7又减少了一项新工作——模板关系工作,它意在确定实体之间与特定畛域无关的关系。共有18家单位加入了MUC-7评测。值得注意的是,在MUC-6和MUC-7中开发者只容许用周围的工夫进行零碎的移植,而在先前的评测中经常容许有6-9个月的移植工夫。1998年在MUC-7会议上第1次正式提出实体关系抽取工作。过后,这一工作次要利用模板的形式抽取出实体之间的关系,抽取的关系模板次要有location_of, employee_of, manufacture_of这三大类。在关系抽取方面,该会议次要以商业活动内容为主题,通过人工构建常识工程的办法,针对英语实现关系分类.钻研人员利用Linguistic Data Consortium提供的New York Times News Service Corpus训练集和测试集构建关系抽取模型,并实现模型的性能评估。. 在MUC中,掂量信息抽取零碎的性能次要依据两个评估指标:召回率和准确率。召回率等于零碎正确抽取的后果占所有可能正确后果的比例;准确率等于零碎正确抽取的后果占所有抽取后果的比例。 MUC系列会议对信息抽取这一钻研方向的确立和倒退起到了微小的推动作用。MUC定义的信息抽取工作的各种标准以及确立的评估体系曾经成为信息抽取钻研事实上的规范。 ACE于2000年12月正式启动,由美国国家安全局(NSA)、美国国家标准和技术学会(NIST)以及地方情报局(CA)独特主管。测评中须要的大量训练集和测试集均由语言资源联盟(Linguistic Data Consortium,LDC)提供。ACE次要关注6个畛域的信息:网络上的专线新闻(Newswire)、通过ASR(主动语音辨认)失去的播送新闻(Broadcast Conversations)、通过OCR(光学字符识别)失去的报纸新闻(Newspaper)、新闻组(Usenet)、对话性的电话谈话(Conversational Telephone Speech)和网络日志(Webbg)。其测评工作为实体探测与辨认(Entity Detection and Recognition,EDR)、价值探测与辨认(Value Detection and Recognition,VAL)、工夫表白辨认与标准化(Time Expression Recognition and Nomalization,TERN)、关系探测与辨认(Relation Detection and Recognition,RDR)以及事件探测与辨认(Event Detec-161tion and Recognition, VDR)。ACE的指标是倒退包含自动识别和标识文本在内的主动内容抽取技术,以反对对语料库的主动解决。ACE 会议指出,实体关系定义的是实体之间显式或者隐式的语义分割,因而须要事后定义实体关系的类型,而后辨认实体之间是否存在语义关系,进而断定属于哪一种预约义的关系类型。该会议事后定义了地位、机构、成员、整体局部、人社会五大类关系,次要应用机器学习(有监督、半监督)的办法,针对英语、阿拉伯语、西班牙语等语言实现关系抽取工作。此外,会议提供了肯定规模的标注语料(ACE2004,ACE2005)供大家钻研,这为后续的钻研提供了便当和反对。 与MUC相比, ACE评测不针对某个具体的畛域或场景,采纳基于漏报(标准答案中有而零碎输入中没有)和误报(标准答案中没有而零碎输入中有)为根底的一套评估体系,还对系统跨文档解决(Cross-document processing)能力进行评测。这一新的评测会议将把信息抽取技术钻研引向新的高度。 2009年ACE由TAC(Text Analysis Conference )正式接棒,ACE成为TAC的一个子工作,同时将关系抽取工作并入KBP (Knowledge Base Population)会议。TAC 是一系列评估研讨会,旨在促成自然语言解决和相干利用的钻研。KBP是人口知识库,旨在进步从文本主动填充知识库的能力。TAC和KBP会议提供的大规模开源知识库(TAC-KBP),极大地推动了面向知识库构建过程中的信息抽取技术的钻研和倒退。 ...
一、插件举荐跨平台Office文档、图片在线预览,视频播放原生插件Android和IOS图片在线预览,视频播放原生插件二、筹备工作1. Android、IOS端证书筹备工作Android端:生成Android打包keystore证书文件及获取MD5(<span style="color:red">十分重要</span>),参考文档:Android平台签名证书(.keystore)生成指南 - DCloud问答IOS端:Windows零碎下申请IOS证书、Mac零碎下申请IOS证书2. 百度材料筹备进入百度AI开放平台点击右上角控制台登录,若无账号,请先注册账号登录后,若没有实名认证,请先实名认证,举荐企业实名认证(可应用性能更多)抉择文字辨认 —》创立利用 获取API Key、Secret Key以及License文件 百度OCR接口免费详情,有收费赠送次数,用于开发及调试,请在百度控制台—》概述查看,或者间接查看产品定价文档 三、疾速上手Step1:下载本插件示例我的项目,或者下载GitHub - silianpan/Seal-UniPlugin-DemoStep2:关上manifest.json—》根底配置—》从新获取DCloud AppIDStep3:点击试用Step4:关上manifest.json—》App原生插件配置—》抉择云端插件 Step5:在我的项目根目录创立nativeplugins/Seal-OCR/android/assets层层文件夹,IOS端创立nativeplugins/Seal-OCR/ios目录Step6:将筹备工作中下载的Android端的aip.license(若下载文件名不同,对立改成此文件名)文件搁置到下面创立的assets目录,IOS端aip.license文件间接搁置到ios目录 Step7:制作自定义调试基座:在HBuilderX菜单中点击运行—》运行到手机或模拟器—》制作自定义调试基座,<span style="color:red">填写步骤及注意事项如下图</span> 附:debug.keystore下载链接,仅仅用作测试 Keystore name: “debug.keystore”Keystore password: “android”Key alias: “AndroidDebugKey”Key password: “android” md5:A5:61:77:2E:AA:63:15:18:47:D6:5B:EC:6A:FA:F4:0A Step8:抉择自定义调试基座:点击运行—》运行到手机或模拟器—》基座运行抉择—》自定义调试基座Step9:调试运行:点击运行—》运行到手机或模拟器—》运行到Android App基座四、接口使用手册插件办法:ocrocr办法参数参数类型默认值是否必填阐明akstringnull否百度AI开放平台控制台利用Api Key,正式公布举荐采纳License文件skstringnull否百度AI开放平台控制台利用Secret Key,正式公布举荐采纳License文件ocrTypestringnull<span style="color:red">是</span>辨认类型,具体阐明如下resultTypeint0否返回后果类型,0:只返回辨认后果,1:只返回被辨认图片,2:返回辨认后果+被辨认图片scaleWidthdouble0.2否拍照后显示的裁剪框宽度,取值范畴<span style="color:red">0.05 ~ 0.2</span>,值越小裁剪框越大,0.05为最大,宽度和高度可设不同,ocrType类型为 "身份证"、"银行卡" 和 "护照" 时有效,其余类型均无效scaleHeightdouble0.2否拍照后显示的裁剪框高度,取值范畴<span style="color:red">0.05 ~ 0.2</span>,值越小裁剪框越大,0.05为最大,宽度和高度可设不同,ocrType类型为 "身份证"、"银行卡" 和 "护照" 时有效,其余类型均无效albumEnablebooltrue否是否启用相册抉择,默认:true(是)backgroundColorstring#000000否辨认页面背景色彩,默认:#000000(彩色)hintTextEnablebooltrue否是否显示底部文字提醒,默认:true(是)hintTextstringnull否自定义底部提醒文字内容,不填则应用插件默认文字提醒hintTextColorstring#FFFFFF否提醒文字色彩,默认:#FFFFFF(红色)hintTextBackgroundColorstring#000000否提醒文字背景色彩,默认:#000000(彩色)hintTextSizeint14否提醒文字大小,默认:14pxtemplateSignstringnull否自定义模板IDocrType具体阐明 字段值阐明general通用文字辨认(含地位信息版)general_basic通用文字辨认accurate_basic通用文字辨认(高精度版)accurate通用文字辨认(含地位信息高精度版)general_enhanced通用文字辨认(含生僻字版),改服务曾经进行,改用高精度版general_webimage网络图片辨认bankcard银行卡辨认bankcard_scan银行卡扫描采集vehicle_license行驶证辨认driving_license驾驶证辨认license_plate车牌辨认business_license营业执照辨认receipt通用票据辨认passport护照辨认numbers数字辨认qrcode二维码辨认businesscard名片辨认lottery彩票辨认vatinvoice增值税发票辨认taxireceipt出租车票vincodeVIN码trainticket火车票trip_ticket行程单car_sell_invoice机动车销售发票vihicle_sertification车辆合格证example_doc_reg试卷剖析和辨认written_text手写文字辨认hukou_page户口本辨认normal_machine_invoice普通机打发票辨认weight_note磅单辨认medical_detail医疗费用明细辨认online_taxi_itinerary网约车行程单辨认idcard_front身份证侧面拍照辨认idcard_back身份证背面拍照辨认idcard_front_scan身份证侧面扫描(嵌入式品质管制+云端辨认)idcard_back_scan身份证背面扫描(嵌入式品质管制+云端辨认)custom自定义模板代码示例 sealOcrModule.ocr( { // ak: '', // sk: '', ocrType, scaleWidth: 0.1, scaleHeight: 0.1, albumEnable: false }, res => { uni.showModal({ content: '获取辨认后果:' + JSON.stringify(res) }) })接口回调后果状态码阐明 ...
作者:张伟辰(璟铭) 随着手机性能的一直晋升,在手机端进行简单的AI计算曾经成为各大厂商的外围倒退方向,在此之上产生了大量的端智能利用。这种端侧AI计算的模式,使得大量关涉时效性、老本和隐衷思考的场景实现变成了可能。在这里,咱们以宽泛应用的文字辨认技术(OCR)为例,介绍一下蚂蚁自研挪动端OCR技术(xNN-OCR)。 背景介绍文字辨认技术是计算机视觉畛域中历史悠久、利用宽泛的一个钻研方向,特地是随着深度学习技术的倒退,其能力空间不断扩大。相比云端计算形式,挪动端OCR算法可在离线状况下实现图片中文字提取,对于实时性、隐衷爱护和老本要求高的场景,有着很大的利用价值。另一方面,基于深度学习的OCR模型越来越简单,通常具备几十M的参数量以及几百GFlops的计算量,如何在手机无限的计算资源下,实现OCR模型运行是一个极具挑战的工作。在支付宝中,咱们联合自研的端侧推理引擎xNN和利用算法的深度优化,研发了又小、又快、又准的xNN-OCR技术产品,从2018年上线到银行卡号辨认场景开始,陆续撑持了数十个外围业务的技术升级。本文咱们将给大家残缺的开展xNN-OCR的技术演进和能力凋谢状况。 xNN-OCR技术演进一个端侧模型研发须要经验上面的几个流程:训练数据获取和标注、网络结构设计、训练调参、端侧移植和端侧部署,各个环节互相关联也相互影响。在根底算法方面,xNN-OCR经验了小字库、大字库到基于异构计算的三个模型研发阶段。咱们将从外围的数据、网络设计和模型压缩层面别离介绍最新成绩。 数据生成数据像弹药一样,很大水平决定了模型的成果,特地是文字辨认场景。中文的组合变幻无穷,很多场景很难获取到足够的理论数据。针对这个问题,咱们摸索了基于GAN技术的文字生成技术。在网络设计上,背景提取、文本提取和字体提取的三个编码器别离提取出对应的特色信息,通过字体迁徙和背景交融,实现从源文本内容到指标字体与背景的交融。在训练过程中,除了惯例的生成和反抗损失外,还退出了辨认损失函数监督合成的内容是否正确。同时,咱们为了将已有的实在数据应用起来,在训练链路退出Cycle-Path,晋升整体数据生成成果。采纳这种形式合成的卡证数据,只采纳本来10%的数据量,就能够达到采纳100%实在数据的辨认精度。 xNN-OCR网络架构有了数据之后,下一步就是模型设计,这里次要介绍xNN-OCR算法中次要的文字行检测、文字行辨认和结构化三个局部。 文本检测算法相比于通用物体检测工作,文本检测工作具备大宽高比和歪斜框的特点。针对这两个问题,传统的Anchor-based的检测计划须要配置十分大量的Anchor,带来计算量的回升。因而咱们设计了一个轻量级的检测网络,其中骨干网络基于ShuffleNet的设计思维,采纳多层Shuffle构造,网络头部采纳Pixel-based的密集预测形式,每个输入图的像素点都会输入类别和框地位回归,通过交融后处理之后失去最终检测后果。为了适应端侧计算环境,通常图输出的分辨率不会过大,带来小指标易失落和长指标边界不准的问题。咱们在训练时采纳Instance-balancing + OHEM的形式解决小指标失落问题,在预测时采纳加权交融NMS的形式解决边框预测不准的问题,获得了性能和精度的大幅度晋升。 文本辨认算法文字行检测后,对于内容的辨认通常采纳CRNN的构造,在之前工作的根底上,咱们针对骨干网络和网络head设计做了进一步的降级。为了失去一个高性能轻量骨干网络,咱们通过NAS面向文本辨认场景设计了相应的搜寻策略,搜寻出指标数据集上性价比最高的网络结构参数。对于CRNN的构造,咱们发现模型head局部计算量十分大,占到整体计算量50%以上,这次要是因为Softmax分类的One-hot的稠密编码方式导致。咱们通过将浓密的Hamming编码方式与CRNN模型联合,Head局部耗时相比本来的Softmax分类计划降落约70%。 文字结构化文字结构化指的是输入文字对应的构造信息,例如卡证场景中将OCR算法后果整顿为Key-Value的输入格局。传统的结构化办法通常是基于文本地位和辨认后果设计规定,调试较为简单,并且工程上须要针对不同卡证别离开发解决逻辑,部署和保护老本高。咱们从文本行检测动手,提出Instance检测算法进行卡证结构化。简略来讲,就是在检测网络头部减少文本框的类别信息进行学习,在结构化时间接将文本框的辨认内容与类别对应起来。这种办法能够节俭辨认运算耗时,简化上线调试部署流程,同时因为模型学习了字段间的隐含关系,晋升了整体的辨认精度。 模型压缩为了晋升端侧模型研发性能和成果,xNN在之前基于已有构造进行轻量化的根底上,自研了xNAS算法工具,提供模型构造搜寻能力。在支流NAS搜寻框架根底上,xNAS扩大了端侧模型关怀的计算量和硬件耗时等因素,联合超参搜寻(HPO)、Multi-Trial NAS、One-Shot NAS等算法,搜寻最优的挪动端模型构造。在OCR的场景,咱们重点针对辨认网络应用了NAS的计划,通过对每个Channel和卷积层数进行搜寻,使模型升高了70%的计算量并有2%的精度晋升。 在模型压缩方面,剪枝、浮点量化、定点化性能对于推理性能晋升至关重要,特地是定点化能力,可无效升高模型尺寸和运行耗时。为解决在OCR场景中定点参数难确定导致的精度问题,xNN联合NAS思维提出qNAS算法,无效晋升了定点化精度。咱们对文本检测和辨认模型进行了qNAS量化训练,在精度降落不到1%的状况下,模型包大小降落至本来1/4左右,端侧CPU上运算时耗降落约50%。 xNN-OCR 性能精度在根底模型研发的根底上,咱们将能力逐渐的笼罩到了大多数OCR利用场景,包含通用OCR辨认以及各种卡证类辨认,在保障较高精度的同时,能够在挪动端计算平台上达到近似实时运算的性能,具体指标如下(耗时为高通855上CPU单线程运算耗时): 能力凋谢xNN-OCR作为蚂蚁自研的挪动端OCR技术,实现了OCR辨认像扫码一样顺畅。目前在支付宝端内,曾经宽泛应用在平安风控、证件上传和数字金融等外围利用场景。为了让更多用户和内部业务可能应用到xNN-OCR,咱们在支付宝端内通过小程序插件的形式提供给内部开发者应用。支付宝外的用户能够用过蚂蚁mPaaS产品和阿里云视觉开放平台以离线SDK模式接入。 支付宝小程序接入可参考:https://forum.alipay.com/mini-app/post/29301014支付宝外应用可通过钉钉群(23124039)征询mPaaS产品或者拜访阿里云视觉开放平台接入离线SDK。 为了不便宽广开发者体验,咱们将已有的插件聚合在了“小程序体验核心“,可通过支付宝扫描上面的二维码进行体验。 关注【阿里巴巴挪动技术】,每周 3 篇挪动技术实际&干货给你思考!
文字是传递信息的高效路径,利用 OCR 技术提取文本信息是各行业向数字智能化转型的第一步。与此同时,针对 OCR 提取的海量文本信息,利用 NLP 技术进一步加工提取、剖析了解后能力最大化施展文本信息的价值。NLP 技术能够晋升 OCR 准确率,并从文本中抽取要害信息、构建常识图谱,搭建检索、举荐、问答零碎等。 尽管各行业智能化产业降级曾经在热火朝天的发展中,然而在理论利用落地中却遇到诸多困难,比方:数据样本不够、模型精度不高、预测时延大等。为此,百度飞桨针对实在、高频的产业场景,提供了从数据筹备、模型训练优化,到模型部署全流程的案例教程。 据说文档和代码曾经开源了,来吧⬇️https://github.com/PaddlePadd... 01 OCR+NLP串联技术难点市面上有不少开源的 OCR、NLP 产品,然而如果想间接利用这些工具,会面临底层框架不对立、串联难度高、成果无奈保障等问题。PaddleOCR 和 PaddleNLP 是面向产业界的开发库,均基于飞桨开源框架最新版本,可能将 OCR 和 NLP 技术无缝联合。 明天咱们针对金融行业研报、物流快递单,来看看 OCR + NLP 信息抽取技术的利用。 02 OCR+NLP 金融研报剖析以后,诸多投资机构都通过研报的模式给出对于股票、基金以及行业的判断,让公众理解热点方向、龙头公司等各类信息。然而,剖析和学习研报往往破费大量工夫,研报数量的一劳永逸也使得研报智能剖析诉求一直进步。这里咱们采纳命名实体辨认技术,主动抽取研报中的要害信息,例如,“中国银行成立于1912年。”中蕴含了组织机构、场景事件、工夫等实体信息。 ▲ OCR+NLP Pipeline 针对研报数据的命名实体辨认与词频统计整体流程如上图所示。首先将研报 pdf 数据应用 fitz 包拆分为图像格式,而后利用 PaddleOCR 套件在研报数据集上微调 PP-OCR[1]的检测模型,应用现有的辨认模型取得文本信息。PP-OCR 是 PaddleOCR 中由百度自研的明星模型系列,由文本检测、文本方向分类器与文本辨认模块串联而成。 ▲ PP-OCR Pipeline 对 OCR 辨认出的文本进行整顿后,调用 PaddleNLP 中的 Taskflow API 抽取文本信息中的组织机构实体。最初对这些实体进行词频统计,就可初步断定以后研报剖析的热点机构。 ▲ Taskflow 应用示意图 目前,Taskflow API 反对自然语言了解(NLU)和生成(NLG)两大场景共八大工作,包含中文分词、词性标注、命名实体辨认、句法分析、文本纠错、情感剖析、生成式问答和智能写诗,均可一键调用。 03 物流快递单信息抽取双十一要到了,想必很多人都准备了一个满满的购物车。去年双十一成交量4982亿元,全国快递企业共解决快件39亿件,这背地则是物流行业工作量的骤增。除了满负荷的长深高速公路,还有忙碌的快递小哥。无论是企业业务汇总,还是寄件信息填写,都少不了要害信息智能提取这一环节,这其中均采纳了命名实体辨认技术。 命名实体辨认大体上有三种计划:字符串匹配、统计语言模型、序列标注。前两种办法须要事后构建词典、穷举所有实体,无奈发现新词、变体等。本案例中采纳了目前的支流办法——序列标注。 数据集包含1600条训练集,200条训练集和200条测试集,采纳 BIO 体系进行标注。 ...
编者按:很长一段时间以来,文本辨认始终都是一个重要的对于文档数字化的研究课题。现有的文本识别方法通常采纳 CNN 网络进行图像了解,采纳 RNN 网络进行字符级别的文本生成。然而该办法须要额定附加语言模型来作为后处理步骤,以进步辨认的准确率。为此,微软亚洲研究院的研究员们开展了深入研究,提出了首个利用预训练模型的端到端基于 Transformer 的文本辨认 OCR 模型:TrOCR。该模型简略无效,能够应用大规模合成数据进行预训练,并且可能在人工标注的数据上进行微调。试验证实,TrOCR 在打印数据和手写数据上均超过了以后最先进的模型。训练代码和模型现已开源。心愿感兴趣的读者能够浏览全文,理解 TrOCR 的劣势所在! 光学字符识别(OCR)是将手写或印刷文本的图像转换成机器编码的文本,可利用于扫描文档、照片或叠加在图像上的字幕文本。个别的光学字符识别蕴含两个局部:文本检测和文本辨认。 文本检测用于在文本图像中定位文本块,粒度能够是单词级别或是文本行级别。目前的解决方案大多是将该工作视为物体检测问题,并采纳了如 YoLOv5 和 DBNet 的传统物体检测模型。文本辨认致力于了解文本图像并将视觉信号转换为自然语言符号。该工作通常应用编码器-解码器架构,现有办法采纳了基于 CNN 网络的编码器进行图像了解,以及基于 RNN 网络的解码器进行文本生成。在文本辨认畛域中,Transformer 模型被频繁采纳,其构造的劣势带来了显著的效率晋升。然而,现有办法仍次要采纳 CNN 网络作为骨干网络,并在此基础上配合自注意力机制来了解文本图像;另外,现有办法还仍旧采纳 CTC 作为解码器,配合额定的字符级别的语言模型来进步整体的准确率。这种混合模型尽管获得了微小的胜利,但依然有很大的晋升空间: 现有模型的参数是在合成或人工标注的数据上从零开始训练的,没有摸索大规模预训练模型的利用。图像 Transformer 模型变得愈发风行,特地是最近提出的自监督图像预训练。当初该当开始摸索预训练的图像 Transformer 是否能够代替 CNN 骨干网络,以及预训练的图像 Transformer 是否能够在繁多网络中配合预训练文本 Transformer 进行文本辨认工作。因而,微软亚洲研究院的研究员们聚焦文本辨认工作开展了多项钻研,并提出了首个利用预训练模型的端到端基于 Transformer 的文本辨认 OCR 模型:TrOCR,模型构造如图1。 图1:TrOCR 模型构造示意图 与现有办法不同,TrOCR 简略、高效,没有将 CNN 作为骨干网络,而是把输出的文本图像切分成图像切片,而后输出到图像 Transformer 中。TrOCR 的编码器和解码器则均应用了规范的 Transformer 构造以及自注意力机制,解码器生成 wordpiece 作为输出图像的辨认文本。为了更无效的训练 TrOCR 模型,研究员们应用了 ViT 模式的预训练模型和BERT模式的预训练模型,来别离初始化编码器和解码器。 论文:https://arxiv.org/abs/2109.10282代码/模型:https://aka.ms/trocrTrOCR 的劣势有三个方面: TrOCR 应用预训练的图像和文本模型,利用大规模无标注数据的劣势来进行图像了解和建模语言模型,不须要额定的语言模型染指。TrOCR 不须要任何简单的卷积网络来作为骨干网络,更加易于实现和保护。试验证实,TrOCR 在打印体和手写体文本辨认工作的基准数据集上均超过了以后最先进的办法,不须要任何简单的预/后处理步骤。TrOCR 能够很容易地扩大为多语言模型,只须要在解码器端应用多语种预训练模型即可。此外,通过简略调整预训练模型的参数量配置,使云/端部署变得极为简便。实现办法模型构造TrOCR 采纳了 Transformer 构造,包含图像 Transformer 和文本 Transformer,别离用于提取视觉特色和建模语言模型,并且采纳了规范的 Transformer 编码器-解码器模式。编码器用于获取图像切片的特色;解码器用于生成 wordpiece 序列,同时关注编码器的输入和之前生成的 wordpiece。 ...
南京云链智运科技有限公司,基于AI、大数据、云计算等先进技术,踊跃构建先进的智慧物流平台云生态体系,致力于打造国内规模最大的智慧物流平台云联盟。 价值成绩: 『云链智运』搭建的智能货运交易平台在新用户注册环节,接入百度OCR身份证辨认、驾驶证辨认、行驶证辨认,实现了对司机身份信息和货车车辆信息的自动化录入,将以往10分钟的人工录入、核验工作缩短至3分钟内,极大晋升了新用户注册效率,进一步助力实现货运物流智能化降级。同时,百度OCR身份证辨认反对危险检测,可判断上传的身份证照片是否为身份证复印件、长期身份证、屏幕翻拍身份证或被PS过的身份证,避免因身份证冒用、造假等问题给业务带来安全隐患。 外围诉求: 『云链智运』搭建智能货运交易平台,间接对接货主运货需要与货车运力,突破传统货运订车模式,优化货主用车体验,改变传统司机接单形式。货主能够在该平台公布货运订单,再通过平台进行运力匹配、调度,显著升高交易成本;对于车主或个体司机,则能够间接接触到一手货源,进步货车接单效率,进步利润。 然而,货主/车主/个体司机在进行新用户注册时,须要屡次上传证件照片,并手动输出各类证件信息,效率低且易出错;平台工作人员需逐个核查原件与用户手动填写信息是否统一,人力老本高,还容易呈现因审批不到位,侵害货主、车主或司机利益的状况。因而,实现信息智能化录入,晋升新用户/车辆注册效率,是云链智运的外围诉求。 解决方案: 司机身份信息录入通过百度OCR身份证辨认、驾驶证辨认技术,司机仅需拍摄并上传身份证、驾驶证照片至零碎,即可疾速精确辨认并提取司机的姓名、身份证号、驾驶车辆、证件有效期等要害信息,迅速实现新增司机注册。 车辆信息录入通过接入百度OCR行驶证辨认技术,货车车主拍摄并上传机动车驾驶证主页、最新年检页照片,即可主动录入车辆要害信息至零碎,一键实现新增车辆注册。 应用产品: 身份证辨认、驾驶证辨认、行驶证辨认 相干案例: 叭叭速配:人脸核身助叭叭速配近程身份验证 龙髯云:百度iOCR助力运输行业智能化改革 如需单干,请您点击【单干征询】提交具体征询信息;或可进入AI开发者社区,进行沟通交流。
尊敬的百度大脑AI开放平台用户, 感谢您长期以来对百度OCR产品的反对与关注。近日,磅单辨认全新上线,结构化辨认各类常见版式磅单的8个关键字段,为货运物流提速增效。申请试用即可享有200次/天收费测试资源。欢送大家体验、试用~ ➣ 磅单辨认 结构化辨认各类常见版式的磅单,包含“车牌号、打印工夫、净重、皮重、毛重、发货单位、收货单位、单号”8个关键字段。可用于公路货运过磅计重场景,无效晋升磅单数据的录入及核查效率。 查看详情: https://ai.baidu.com/tech/ocr... 如需试用,可退出百度文字辨认官网QQ群(三群:1055623827),分割管理员开明接口权限,申请即可享有200次/天收费测试资源,参考API文档调用测试: https://ai.baidu.com/ai-doc/O... ➣ 更多货运物流相干A I 能力 百度大脑OCR已凋谢多项货运物流场景相干AI能力: · 货运车辆管理场景,可利用车牌辨认、驾驶证辨认、行驶证辨认 · 司机身份认证场景,可综合利用身份证辨认、iOCR自定义模板文字辨认、EasyDL OCR自训练平台等,辨认身份证、路线运输证、司机从业资格证等多类证照 百度大脑OCR现已提供:通用场景文字辨认、卡证文字辨认、财务票据文字辨认、交通场景文字辨认、教育场景文字辨认、医疗票据文字辨认、iOCR自定义模板文字辨认、EasyDL OCR自训练平台及其他场景文字辨认等62款产品,全面笼罩各种文字辨认场景需要。其中38款产品已反对按量阶梯付费,29款产品已反对次数包购买。产品价格详情参见:https://ai.baidu.com/ai-doc/O... 扫码关注【百度OCR文字辨认】公众号,领先获取产品更新、性能降级、优惠活动等资讯。 同时,欢送大家退出百度文字辨认官网QQ群(三群:1055623827)或 AI开发者社区,进行沟通交流。
这个文本 OCR 小工具,能让你「所截即所得」。更多实用工具和干货,记得关注小编哈!在咱们办公时,是不是常常遇到图片内容转文字的需要? 你是用什么工具解决的呢?是手机自带拍照转文字性能?还是应用 QQ 外面的工具? 明天咱们就为大家介绍一款 GitHub 用户 ianzhao05 刚公布的小工具——textshot,只须要截屏就能实时生成文字。读者也能够通过此我的项目大抵理解如何对图像中的文本进行辨认。 我的项目链接:https://github.com/ianzhao05/textshot 应用办法运行 textshot.py,在屏幕上关上一个 overlay,在你心愿提取的文字区域画一个矩形。 应用可选的命令行参数指定语言。例如,python textshot.py eng + fra 将应用英语作为次要语言,应用法语作为主要语言。默认值为英语(eng)。同时确保为其余语言装置了实用于 Tesseract 的数据文件。 倡议将热键附加到此工具上。对于 Windows 来说,能够应用 AutoHotkey 脚本来实现此操作;textshot.ahk 同时也蕴含一个能够应用的示例 AHK 脚本。 如果是 Ubuntu 零碎,能够关上「键盘设置」,其中显示了所有 Gnome 快捷方式。底部有一个「+」按钮,可用于增加你本人的快捷方式。单击并将其命令设置为 / usr / bin / python3 <path-to-textshot.py>。如果应用的是 venv,则下面的 python3 门路应指向 venv 的 python3 而不是全局 python3。 如何装置装置 Python 3;复制 TextShot 库,并应用跳转命令 cd 进入该库;(可选项)创立一个虚拟环境,例如应用 python -m venv .venv ;应用 pip install -r requirements.txt 装置所需的软件包;装置 Google 的 Tesseract OCR 引擎(https://github.com/tesseract-...),并通过将目录增加到零碎门路来确保能够从命令行拜访 tesseract。这个实用小工具的开发也离不开谷歌经典 OCR 开源我的项目 Tesseract。 ...
事实中,你能够轻松无障碍的浏览各类立体印刷文字以及身边的所有,或者你未曾想过,视障人群该怎么办呢? 统计数据显示,中国大概有1700万的视障群体,相当于每100集体中就有超过1位是视障人士。但咱们在日常生活中却很少见到他们,那是因为视障群体在日常生活中会有诸多不便,出门对他们而言危机四伏。AI有可能成为他们的“眼睛”吗? 成为他们的眼睛:白描App与视障群体的故事 如果手机上只能有一款App,你会抉择哪一款?视障人士安之动摇地给出了答案——白描。因为白描App让视力不佳的他用另一种形式“看”清世界,文字不再遥不可及。他用白描“看”过柔美的诗篇,“听”过动人的乐章,甚至在单独上楼看不清所在楼层时,白描也精确地将答案通知了他,将他从困境中解救出来。一个App让已经望“字”兴叹的他更加怯懦的走出家门,参加丰富多彩的生存。 “白描是我的眼。”同为视障人士的小杰从不悭吝对白描的夸赞,甚至婉言白描是视障搭档赖以生存的工具。白描帮忙他解决了生存的难题,从各类电器、数码产品、药品说明书到各种洗漱用品包装都能够辨认,他还能够给可恶的小侄女讲绘本故事。如果没有白描,这种事件是他难以想象的。 白描是如何做到被视障群体视若瑰宝的呢?白描App是一款简洁高效的OCR文字辨认软件,不仅简略好用,而且设计好看,能够轻松实现“拍照-辨认文字-朗诵后果”一系列流程。同时,白描适配了手机无障碍辅助性能,视障者能够在手机上十分轻松地操作。 “白描”这个词本意是一种文学写作手法,鲁迅学生曾把这种手法概括成十二个字,即“有真意,去掩饰,少做作,勿卖弄”。白描App的开发者陶新乐正是这样的一个人,他察看到了不同人群的理论需要,用虚拟世界的代码满足了事实世界有需要的人,让他们的生存变得更加美妙、便捷。 白描App开发者的心路历程:切入不同场景、优化产品细节 你或者很难设想,作为一名集体开发者的陶新乐,他最早开发白描App是为了女朋友。陶新乐的女友酷爱浏览,常常做读书笔记。为了加重抄录压力,她尝试应用了过后市面上的各类文字辨认软件,但她发现:有的软件操作流程繁琐,有的费用昂扬,有的则辨认不精确……看到女朋友苦楚不已,陶新乐当下决定亲自做个体验好、成果佳的OCR文字辨认工具给女朋友应用,并且很快付诸了口头。这或者就是开发者独有的浪漫。 然而,一款App的开发过程是充斥未知与挑战的。在过后的条件下,开发一款具备OCR性能的软件,面临的一个微小挑战是:如何让文字辨认的又快又准。因而,他调研了市面上提供此服务的厂商,并对不同厂商的产品进行了比照,尝试辨认不同场景的图片,找出辨认成果最好的那个。于是他发现,百度大脑AI开放平台的OCR技术能力和应用体验都是最好的,尤其是辨认准确度更当先于其余厂商,所以在2017年他就毫不犹豫的抉择了百度OCR技术,并始终应用至今。 然而优良的底层技术并不意味着全副,百度大脑OCR已提供近60项技术能力,好的技术也须要利用于匹配的场景能力施展更大的价值。 于是,陶新乐首先对白描的应用场景做了细分钻研,比方:学生上课拍PPT提取文字记笔记、企业员工把纸质合同扫描成电子版并且制作PDF、把纸质表格转成Excel电子版、翻译图片上的文字、老师拍摄并辨认试题后对试题再加工、律师用来提取纸质文书上的文字等等。特地的是,视障人群非凡的应用需要,他都有关注和调研。 思考完用户的应用场景之后,再者就是对产品的一直打磨。过后,图片转文字经常会有辨认谬误的状况产生,为了补救这一问题,在辨认之前,白描APP会进行一些技术上的解决,比方图像压缩如何保障清晰度又尽量减小图片大小;如何在进行长图主动裁剪时,检测到长图的空行地位主动裁剪,且不会裁到文字;如何针对文章进行主动分段,更便于读者浏览等等。这些精细化的产品设计保障了图片的清晰度,让文字信息更易于被辨认。而在辨认之后,白描的校对性能,能够让辨认后果与原图显示在同一界面上,不便用户疾速找到须要批改的中央,在此基础上进行编辑。 依靠百度优良的深度学习算法和基于海量优质数据的预训练模型,以及白描App的图像预处理能力,最终实现了关键字段辨认准确率99%+。看到女友应用白描时绽开的笑颜,陶新乐感觉一切都是值得的,他也心愿更多人可能享受到这份高兴。 胜利的背地:用“匠人”之心雕刻产品之光 程序员出身的陶新乐在做产品这件事上始终怀揣一颗“匠人”之心。陶新乐提到,AI在落地的过程中会遇到很多的艰难,很多时候都是一边踩坑一边向前走。当遇到无奈解决的问题时,就须要一直学习,攻坚克难。 百度大脑OCR技术与有数像陶新乐一样的开发者并肩同行。作为最早规模化利用的AI技术之一,OCR技术的产业级利用继续获得冲破。百度大脑OCR技术可提供多场景、多语种、高精度的文字检测与辨认服务,多项ICDAR指标居世界第一,已宽泛实用于近程身份认证、财税报销、文档电子化等场景,为企业降本增效,为用户带来更智能化的利用体验。 当然,AI技术的利用落地,除了须要有百度大脑这样提供当先AI技术能力的平台外,还须要更多像陶新乐这样的开发者们,施展设想将AI利用在更多实在场景中,满足不同用户群体,甚至是容易被忽视的残障人群的需要,让社会更有“AI”。同时,为了升高独立开发者和企业自主训练OCR文字辨认模型的门槛,百度大脑推出业界首个EasyDL OCR自训练平台,提供零门槛、定制化、低成本的一站式OCR模型训练服务。保障高准确率的同时,满足多元化的场景需要,并无效保障数据安全。 在这个科技为公众生存赋能的时代,产品的设计更是一种普惠理念的输入。已领有超过800万用户的白描App,曾经成为业界的口碑产品。置信,将来还将有越来越多的开发者通过百度大脑AI开放平台提供的AI技术与服务,发明出更多与场景相结合的智能利用,让更多人生存更便捷、更美妙。 即刻收费体验百度OCR文字辨认能力:https://ai.baidu.com/tech/ocr
摘要:在这个算力还能够的时代,咱们的钻研人员一方面致力于一直地去钻研各中不同的场景中的的通用网络,一方面致力于优化神经网络的学习形式,这些都是在试图化缩小AI须要的算力资源。本文分享自华为云社区《OCR性能优化系列(二):从神经网络到橡皮泥》,原文作者:HW007 。 OCR是指对图片中的印刷体文字进行辨认,最近在做OCR模型的性能优化,用 Cuda C 将基于TensorFlow 编写的OCR网络重写了一遍,最终做到了5倍的性能晋升。通过这次优化工作对OCR网络的通用网络结构和相干的优化办法有较深的意识,打算在此通过系列博文记录下来,也作为对本人最近工作的一个总结和学习笔记。在第一篇《OCR性能优化系列(一):BiLSTM网络结构概览》中,从动机的角度来推演下基于Seq2Seq构造的OCR网络是如何一步步搭建起来的。接下来咱们讲从神经网络到橡皮泥。 1. 深扒CNN:也谈机器学习的实质当初,从OCR性能优化系列(一)中的图1左下角的输出开始,串一遍图一的流程。首先是输出27张待辨认的文字片段图片,每张图片的大小为32132。这些图片会通过一个CNN网络进行编码,输入32个27384的初步编码矩阵。如下图所示: 值得注意的是,在这步操作中呈现了维度秩序的调整,即输出由27(32132)变成了 27(384),你能够了解为把尺寸为32132的图片拉长拍扁成一行(14224),而后再进行降维为 1384了,相似于上文优化策略一中做计算量优化时把1024降到128的例子。怎么做这个从 274224到27384的降维呢?最简略粗犷的办法就是下面的Y=AX+B模型,间接给274224乘以一个4224384的矩阵A,矩阵A是通过喂数据训练失去的。很显著,对同样的X,不同的A失去的Y也不一样,而从4224到384这个维度降得又有点狠。于是,学者们便祭出了群殴大法,一个A不行,那就上多个A吧。于是在这里便祭出了32个A,这个32便是前面的LSTM网络的序列长度,与输出图片的宽度132成比例。当输出图片的宽度变成260时,就须要64个A了。 兴许有人会问在CNN中看不到你说的32个A啊?确实,那只是我对CNN网络性能的形象,重点在于让大家对CNN编码过程中维度的变动及其下一层LSTM网络的序列长度有个形象的意识,晓得LSTM的序列长度其实是“降维器”的数量。如果你比拟机智的话,你应该发现我连“降维”都说错了,因为如果把32个“降维器”输入的后果拼一起的话是32*384=12288,远大于4224,数据通过CNN网络后,维度岂但没有缩小,反而减少了!其实这个货色比拟正式的叫法是“编码器”或“解码器”,“降维器”是我本文中为了形象点借鉴的,不论叫猫还是叫咪,我心愿你能记住,他的实质就是那个系数矩阵A而已。 当初咱们还是沿着32个A这个思路走上来,通过CNN网络后,从外表上看,对于每个文字图片来说,数据维度从32132变成了32384,外表上看这个数据量增多了,但信息量并没有减少。就像我在这长篇累牍地介绍OCR,文字是增多了,信息量还是OCR的原理,或者能晋升点可读性或趣味性。CNN网络是怎么做到奇文瑰句(只减少数据量不减少信息量)的呢?这里隐含着一个机器学习模型中的一个顶级套路,学名叫“参数共享”。一个简略的例子,如果有一天你的敌人很快乐地通知你他有一个新发现,“买1个苹果要给5块钱,买2个苹果要给10块钱,买3个苹果要给15块钱...”,置信你肯定会狐疑他的智商,间接说“买n个苹果要5*n块钱”不就好了么?废话的实质在于,不做形象总结,间接疯狂的举例子,给一大堆冗余数据。不废话的实质就是总结出法则和教训,所谓的机器学习就是如这个买苹果的例子,你冀望简略粗犷的给机器举出大量的例子,机器便能总结出其中的法则和教训。这个法则和教训对应到上述的OCR例子中,便是整个模型的网络结构和模型参数。在模型网络上,目前支流还是靠人类智能,如对图片场景就上CNN网络,对序列场景就上RNN网络等等。网络结构选不对的话,学习进去的模型的成果会不好。 如下面的剖析中,其实在结构上,我用32个4224384的A矩阵是齐全能满足上述的CNN在数据的输出和输入的维度尺寸上的要求的,但这样的话训练进去的模型成果会不好。因为从实践上,用32个4224384的A矩阵的参数量是324224384=51904512。这便意味着在学习过程中,模型太自在了,很容易学坏。在下面买苹果的例子中,用越少的字就能陈说分明这个事实的人的总结能力就越强,因为越多的文字除了引入冗余外,还有可能会引入一些息息相关的信息对当前在应用这个法则的时候进行烦扰,假如这个苹果的价格是用10个字就能说分明,你用了20个字,那很有可能你其余的10个字是在形容比方下雨啊、工夫点啊之类的无关信息。这就是赫赫有名的“奥坎姆剃刀法令”,不要把简略的货色复杂化!在机器学习畛域次要利用于模型构造的设计和抉择中,“参数共享”的是其罕用的套路之一,简略说就是,如果32个4224384的A矩阵参数量太大了,导致模型在学习中太自在了,那咱们就加限度让模型不那么自在,肯定要逼它在10个字内把买苹果的事件说分明。办法很简略,比如说如果这32个A长得齐全截然不同,那这里的参数个数就只有4224384个而已,一下子就缩小32倍,如果感觉缩小32倍太狠了,那我略微放松一点,不要求这32个A截然不同,只要求他们长得很像就好。 在此我称这个剃刀大法为“不逼模型一把就不晓得模型有多优良大法”。可能有人会提出异议,尽管我容许你用20个字来说分明苹果的价格,并没有抹杀你主动性很强,谋求极致,用10个字就说分明了的可能性。如果上文中的只用一个A矩阵就能Cover住的话,那么我不论我给32个A还是64个A,模型都应该学出的是截然不同的A才对。这种说法在实践上是对的,但对于目前来说却是不事实的。 探讨这个问题还得回到机器学习的实质上,所有模型都能够形象示意为 Y=AX,其中X是模型输出,Y是模型输入,A是模型,留神在此段中的A不同于上文中的A,其既蕴含了模型的构造和又蕴含了参数。模型的训练过程便是已知X和Y,求解A。下面的问题其实就是解进去的A是不是惟一的?首先我退一步,假如咱们认为在事实世界中这个问题是存在法则的,也就是说这个A在事实世界中是存在且惟一的,就像物理定律一样,那咱们的模型是否能在大量的训练数据中捕捉到这个法则呢? 以物理上的质能方程 E=MC^2为例,在这个模型中,模型的构造是E=MC^2,模型的参数是光速C。这个模型爱因斯坦提出的,能够说是人类智能的结晶。如果用当初AI大法来解决这个问题呢,分两种状况,一种是强AI,一种是弱AI,首先说最极其的弱AI的办法,也就是目前的支流的AI办法,大部分人工小局部机器智能,具体说就是人类依据本人的智慧发现E和M之间的关系满足E=MC^2这样的模式,而后喂很多的E和M数据进去给机器,让机器把这个模型中的参数C学习进去,在这个例子中C的解是惟一的,而且只有喂给机器大量的M和C,就能把C解进去了。显然智能局部的工作量次要在于爱因斯坦大神是如何去排除如工夫、温度、湿度等等各种乌七八糟的因素,确定E就只和M无关,且满足E=MC^2。这部分工作在目前机器学习畛域被叫模型的“特征选择”,所以很多机器学习的工程师会戏称本人为“特色工程师”。 与之相同,强AI的预期就应该是咱们喂给机器一大堆的数据,如能量、品质、温度、体积、工夫、速度等等,由机器来通知我这外面的能量就只和品质相干,他们的关系是E=MC^2,并且这个常数C的值就是3.010^8(m/s)。在这里,机器岂但要把模型的构造学进去,还要把模型的参数学进去。要达到这个成果,首先要实现的第一步是,找到一种泛化的模型,通过加工后能形容世界上存在的所有模型构造,就像橡皮泥能被捏成各种各样的形态一样。这个橡皮泥在AI畛域就是神经网络了,所以很多偏实践的AI书或者课程都喜爱在一开始给你科普下神经网络的形容能力,证实它就是AI畛域的那块橡皮泥。既然橡皮泥有了,接下来就是怎么捏了,难点就在这里了,并不是生存中每个问题每个场景都能用一个个数学模型来完满示意的,就算这层成立,在这个模型构造被发现之前,没人晓得这个模型是什么样子,那你让机器怎么帮你捏出这个你自身都不晓得是什么形态的货色?惟一的方法就是,给机器喂很多的例子,说捏进去的货色要满足能走路、会飞等等。其实这个问题是没有惟一解的,机器能够给你捏出一只小鸟、也能够给你捏出一只小强。起因有二,其一在于你无奈把所有可能的例子都喂给机器,总会有“黑天鹅”事件;其二在于喂的例子太多的话,对机器的算力要求也高,这也是为啥神经网络很早就提出来了,这几年才火起来的起因。 通过下面一段的探讨,心愿你在此时能对机器学习的模型构造和模型参数能有一个比拟直观的了解。晓得如果靠人类智能设计出模型构造,再靠机器学习出参数的话,在模型构造精确的前提下,如下面的E=M*C^2,咱们只须要喂给机器很少的数据就好,甚至模型都能有很好的解析解!但毕竟爱因斯坦只有一个,所以更多的是咱们这种平庸的人把大量的例子喂给机器,冀望他能捏出咱们本人都不晓得的那个形态,更别提有解析解这么丑陋的性质了。对机器学习训练过程相熟的同学应该晓得,机器学习捏橡皮泥用的“随机梯度降落法”,艰深点说,就是先捏一小下,看捏进去的货色是否能满足你提的要求(即喂的训练数据),如果不满足再捏一小下,如此循环直至满足你的要求才停下来。由此可见,机器捏橡皮泥的能源在于捏进去的货色不满足你的要求。这就证实了机器是个很“懒”的货色,当他用20个字形容出苹果的价格法则后,就没能源去做用10个字来形容苹果价格的法则了。所以,当你本人都不晓得你想让机器捏出什么货色时,最好就是不要给机器太大的自在,这样机器会给你捏出一个很简单的货色,只管能满足你的要求,也不会很好用,因为违反了剃刀法令。而在机器学习的模型中,参数的数量越多,往往意味着更大的自由度和更简单的构造,呈现“过拟合”景象。因而很多经典的网络后果中都会应用一些技巧来做“参数共享”,达到缩小参数的目标,如CNN网络中应用的卷积的形式来做参数共享,LSTM中引入了一个变动不那么激烈的产量C矩阵来实现参数共享。 2. 牛刀小试:LSTM等你扒通过下面大节的探讨,置信你曾经get到剖析机器学习的一些套路了,最初以双向LSTM来练下手吧。 如上图,首先看LSTM网络的输出和输入,最显著能看到的输出有32个27384的紫色矩阵,输入是32个27256的矩阵,其中27256是由两个27128拼凑而成,别离由前向LSTM和反向LSTM网络输入。为了简略,咱们临时只看前向LSTM,这样的话其实输出就是32个27384的矩阵,输入是32个27128 的矩阵。依据上文中剖析的“降维器”套路,这里须要32个384*128的矩阵。在依据“参数共享”套路,真正的单个LSTM单元的构造如下图所示: 由图可知,真正的LSTM单元中并不是一个简略的384128的矩阵A,而是把LSTM单元序列中的上一个单元的输入节点H拉下来和输出X拼在一起,造成一个27512的输出,在乘以一个512512的参数矩阵,再联结上一个序列输入的管制节点C对失去的数据进行加工,把512维降到128维,最初失去两个输入,一个是27128的新输入节点H,一个是27*128的新管制节点C。这个新输入的H和C会被引入到下一个LSTM单元,对下一个LSTM单元的输入进行影响。 在这里,能够看到因为矩阵C和矩阵H的存在,即便LSTM序列32个单元中的那个512512的参数矩阵是截然不同的,即使每个单元的输出H和X之间的关系都是不大一样的,但因为都是乘以一样的512512矩阵失去的,所以只管不一样,相互间应该还是比拟像,因为他们遵循了一套法则(那个截然不同的512*512矩阵)。在这里咱们能够看到LSTM是通过把上一个单元的输入H和输出X拼起来作为输出,同时引入管制矩阵C来实现剃刀大法,达到参数共享,简化模型的目标。这种网络结构的结构也使得以后序列单元的输入和上个序列单元的输入产生分割,实用于序列场景的建模,如OCR、NLP、机器翻译和语音辨认等等。 在这里咱们还能看到,尽管神经网络是那块橡皮泥,但因为喂不了所有的状况的数据、机器算力不反对、或者咱们想进步机器的学习速度,在目前的AI利用场景中,咱们都是给依据理论利用场景精和本人的先验常识对网络结构进行精心地设计,再把这块由人类捏得差不多的橡皮泥交由机器来捏。因而我更喜爱称当初是个弱AI的时代,在这个算力还能够的时代,咱们的钻研人员一方面致力于一直地去钻研各中不同的场景中的的通用网络,如用于图像的CNN、用于序列RNN、LSTM、GRU等等,一方面致力于优化神经网络的学习形式,如基于SDG的各种优化变种算法和强化学习的训练形式等等,这些都是在试图化缩小AI须要的算力资源。 置信在人类的致力下,强AI的时代会到来。 点击关注,第一工夫理解华为云陈腐技术~
摘要: 想要对OCR进行性能优化,首先要理解分明待优化的OCR网络的构造,本文从动机的角度来推演下基于Seq2Seq构造的OCR网络是如何一步步搭建起来的。本文分享自华为云社区《OCR性能优化系列(一):BiLSTM网络结构概览》,原文作者:HW007。 OCR是指对图片中的印刷体文字进行辨认,最近在做OCR模型的性能优化,用 Cuda C 将基于TensorFlow 编写的OCR网络重写了一遍,最终做到了5倍的性能晋升。通过这次优化工作对OCR网络的通用网络结构和相干的优化办法有较深的意识,打算在此通过系列博文记录下来,也作为对本人最近工作的一个总结和学习笔记。 想要对OCR进行性能优化,首先要理解分明待优化的OCR网络的构造,在本文中我将尝试着从动机的角度来推演下基于Seq2Seq构造的OCR网络是如何一步步搭建起来的。 读懂此文的前提只须要理解在矩阵乘法中矩阵的维度变化规律,即np的矩阵乘以 pm 的矩阵等于 n*m 的矩阵。如果晓得CNN和RNN网络的构造,对机器学习模型的结构套路有点理解的话更好。 首先给出从本文要分析的OCR BILSTM 网络总体构造如下图: 接下来我将从这张图的右上角(模型的输入端)向左下角(模型的输出端)逐渐解释每一个构造的动机及其作用。 1. 结构最简略的OCR网络首先思考最简略状况下的OCR辨认场景,假如输出是只含有一个文字图片,图片的高和宽均为32个像素,即3232的矩阵,为了不便将其拉长便可失去一个 11024 的矩阵。在输入方面,因为文字的特殊性,咱们只能将所有的文字进行标号,最初输入所辨认的文字的编号便好,由此失去咱们的输入是一个 1*1 的矩阵,矩阵元素的内容就是所辨认的文字的编号。 怎么失去这个11的矩阵呢?依据概率统计的套路,咱们假如全世界存在10000个文字,将其表为1~1000号,那么这10000个元素都有概率成为咱们的输入,因而咱们如果先算出这10000个文字作为该输出图片的辨认后果的概率的话,再挑概率最大的那个输入便能够了。于是问题被转变成如何从一个 11024的矩阵(X)中失去一个 110000 的矩阵(Y)。在这里便能够上机器学习模型构造中最常见的线性假如套路了,假如Y和X是之间是线性相关的,这样便可失去最简略且经典的线性模型:Y = AX + B。 其中称X(维度:11024)为输出,Y(维度:110000)为输入,A和B均为该模型的参数,由矩阵乘法可知A的维度应该是 10241000,B的维度应该是 110000。至此,只有X是已知的,咱们要计算Y的话还须要晓得A和B的具体值。在机器学习的套路中,作为参数的A和B的值在一开始是随机设定的,而后通过喂大量的X及其标准答案Y来让机器把这两个参数A、B缓缓地调整到最优值,此过程称为模型的训练,喂进去的数据称为训练数据。训练完后,你便能够拿最优的A乘以你的新输出X在加上最优的B失去相应的Y了,应用argMax操作来筛选Y这110000个数中最大的那个数的编号,就是辨认进去的文字的编号了。 当初,再回头去看图1中右上角的那局部,置信你能看懂两个黄色的 38410000 和 110000的矩阵的含意了。图中例子和上段文字描述的例子的区别次要在于图中的输出是1张 11024的图片,上段文字中的是 27张 1384的图片罢了。至此,你曾经理解如何结构一个简略地OCR网络了。接下来咱们就开始对这个简略地网络进行优化。 2. 优化策略一:缩小计算量在下面的文字描述的例子中,咱们每辨认一个文字就要做一次 11024和102410000的矩阵乘法计算,这外面计算量太大了,是否有一些计算是冗余的呢?相熟PCA的人应该马上能想到,其实将 3232 的文字图片拉长为 11024的矩阵,这个文字的特色空间是1024维,即使每维的取值只有0和1两种,这个特色空间可示意的值都有2^1024种,远远大于咱们所假如的文字空间中所有文字个数10000个。为此咱们能够用PCA或各种降维操作把这个输出的特征向量降维到小于10000维,比方像图中的128维。 3. 优化策略二:思考文字间的相关性(揭示:在上图中为了体现出batch Size的维度,是按27张文字图片来画的,下文中的探讨均只针对1张文字图片,因而下文中维度为 1的中央均对应着图中的27) 兴许你曾经留神到了,图中与黄色的38410000矩阵相乘的“地位图像特色”的维度没有间接用一个1384,而是 1*(128+128+128)。其实这里隐含着一个优化,这个优化是基于文字间的关联假如的,简略地例子就是如果后面一个字是“您”,那其前面跟着的很可能是“好”字,这种文字程序中的统计法则应该是能够用来晋升文字图片的辨认准确率的。那怎么来实现这个关联呢? 在图中咱们能够看到左侧有一个10000128的参数矩阵,很容易晓得这个参数就像一个数据库,其保留了所有10000个文字图片通过加工后的特色(所谓加工便是下面提到的降维,原始特色应该是 100001024的),照图中的构造,我须要输出以后辨认的这个字的前一个字的辨认后果 (辨认工作是一个字接一个字串行地辨认进去的)。而后抉择出上个字对应的特色矩阵 1128,再通过一些加工转换后当做1384的输出中的前1/3局部内容。 同理,1384里靠后的两个1128又代表什么含意呢?尽管在句子中,后面一个字对前面一个字的影响很大,即便以后要预测的字在图片中很含糊,我也能够依据后面的字将其猜出来。那是否能够依据其前k个字或者后k个字猜出来呢?显然答案是必定的。因而靠后的两个1*128别离代表的是句子图片里文字“从前到后(Forward)”和“从后到前(Backward)”的图片特色对以后要辨认的字的影响,因而图中在后面加了个“双向LSTM网络”来生成这两个特色。 至此,改良版的OCR网络轮廓根本进去了,还有一些细节上的问题须要解决。不知你是否留神到,按下面所述,1384中蕴含了3个1128的特色,别离代表着前一个字对以后字的影响、图片中的整个句子中各个文字从前到后(Forward)的排序对以后文字的影响、图片中的整个句子中各个文字从后到前(Backward)的排序对以后文字的影响。 然而他们的特色长度都是128!!!一个字是128,一个句子也是128?对于不同的文字图片中,句子的长度还可能不一样,怎么可能都用一个字的特色长度就示意了呢? 如何示意一个可变长的句子的特色呢?乍一看确实是个很辣手的问题,好在它有一个很粗犷简略的解决办法,就是加权求和,又是概率统计外面的套路,管你有几种状况,所有的状况的概率求和后都得等于1。看到在这里不晓得是否被震撼到,“变动”和“不变”这样看起来水火不容的两个货色就是这么神奇地共存了,这就是数学的魅力,让人不禁拍手赞绝! 下图以一个理论的例子阐明这种神奇的形式的运作形式。当咱们要对文字片段中的“筷”字进行辨认时,只管改字已近被遮挡了局部,但依据日常生活中的一些教训常识积攒,要对该地位进行补全填空时,咱们分割上下文,把注意力放在上文中的“是中国人”和下文中的“吃饭”上。这个加权系数的机制便是用来实现这种注意力机制的。至于“日常生活中的教训”这种货色就是由“注意力机制网络”通过大量的训练数据来学习失去的。也就是图1中的那32个alpha的由来。注意力网络在业界个别由GRU网络负责,因为篇幅起因,在此不开展了,下回有机会再细说。看官们只需晓得在图一的左边还应该有个“注意力网络”来输入32个alpha的值便好。 点击关注,第一工夫理解华为云陈腐技术~
摘要:以后语义宰割办法面临3个挑战。本文分享自华为云社区《语义宰割数据集Cityscapes上SOTA办法总结》,原文作者:fdafad。 1 Cityscapes数据集介绍Cityscapes评测数据集即城市景观数据集,在2015年由奔驰公司推动公布,是目前公认的机器视觉畛域内最具权威性和专业性的图像宰割数据集之一。Cityscapes领有5000张精密标注的在城市环境中驾驶场景的图像(2975train,500 val,1525test)。它具备19个类别的密集像素标注(97%coverage),其中8个具备实例级宰割。具体类别名称见于下表1。 表1 Cityscapes数据集中的类别名称 2 Deep High-Resolution Representation Learning for Visual Recognition(HRNet)2.1动机以后语义宰割办法面临3个挑战,其中第一个挑战是基于FCN的分辨率由高到低会损失信息。 语义宰割办法须要高分辨率特色,图中1展现了几种基于FCN的经典办法的,它们的共同点通过一个网络失去 低分辨 feature map,而后通过上采样或反卷积复原到高分辨率。 图1 基于FCN办法的几种经典构造 这些看起来不同,但实质外围思路是差不多的。这些办法存在一个毛病,分辨率由高到低会损失信息! 2.2 模型构造与外围代码为了解决2.1中的问题,作者团队(MSRA和中科院)提出一个办法,外围思路是“不复原高分辨率,而是放弃分辨率”。如下图2中是一个根本的高分辨率放弃网络结构,该构造把不同分辨率的feature map并联,雷同分辨率的占一条分支,不同分辨率的占不同分支。并在不同分支之间增加通路(图中的斜线),造成high-resolution network。 图2 根本的high-resolution network构造 图2中的机构由4个stage组成,每一个蓝底色块为一个stage。在SOTA办法中,采纳的是HRNet-W48,其结构图如图3所示。 图3 HRNet-W48结构图 HRNet V2-W48是在4个stage(图3中蓝、绿、红、黄4种底色区域)的头部加上stem net(图3中红色底色区域),尾部加上segment head后(图中未画出)组成。上面依照先后顺序顺次对stem net、4个stage以及segment head进行介绍。 (1)stem net stem net由两个Bottelneck组成,与Resnet的构造一样,通过两个Bottelneck当前,输出图像的维度由HW3变成了(H/4)(W/4)256 (2)4个stage 每个 stage 上的各个组件配置如下表2,以 hrnet_48 为例stage之间通过transition_layer连贯,stage内由反复的根本单元HighResolutionModule组成。HighResolutionModule由分支以及分支开端的fuse_layers组成。每条分支内由反复的basicblock组成,具体数量见表2表2 HRNet-W48模型配置表 A:stage间的transition layer:实现 stage之间通道转换和尺寸下采样,即图3中不同底色之间连贯的直线和斜线stage之间的斜线,指向不做任何解决。 图4 stage间的transition layer构建代码 B:构建stage 每个stag均是有若干反复的HighResolutionModule组成,因而构架stage的外围在与构建HighResolutionModule。构建HighResolutionModule分两步:构建分支、构建分支开端的fuse_layers。 构建分支:图3种的4个间断的basicblock即一个分支。 图5 HighResolutionModule内分支构建代码 构建fuselayer: 以下图中蓝色框为例阐明fuselayer层的处理过程: 图6 fuselayer层 图6 HighResolutionModule内fuselayer层构建代码 3 Object-Contextual Representations for Semantic Segmentation(OCR)3.1 动机以后语义宰割办法面临3个挑战中第二个挑战是没有解决好物体上下文信息。 ...
FCN(全卷及网络)FCN将CNN最后的全链接层(FC)换成了卷积层,输出为一张已经label好的图网络结构分为四个阶段第一阶段:全链接层第二阶段:layer { name: “upscore” type: “Deconvolution” bottom: “score_fr” top: “upscore” param { lr_mult: 0 } convolution_param { num_output: 21 bias_term: false kernel_size: 64 stride: 32 }}layer { name: “score” type: “Crop” bottom: “upscore” bottom: “data” top: “score” crop_param { axis: 2 offset: 19 }}第三阶段:layer { name: “upscore16” type: “Deconvolution” bottom: “fuse_pool4” top: “upscore16” param { lr_mult: 0 } convolution_param { num_output: 21 bias_term: false kernel_size: 32 stride: 16 }}layer { name: “score” type: “Crop” bottom: “upscore16” bottom: “data” top: “score” crop_param { axis: 2 offset: 27 }}第四阶段:layer { name: “upscore8” type: “Deconvolution” bottom: “fuse_pool3” top: “upscore8” param { lr_mult: 0 } convolution_param { num_output: 21 bias_term: false kernel_size: 16 stride: 8 }}layer { name: “score” type: “Crop” bottom: “upscore8” bottom: “data” top: “score” crop_param { axis: 2 offset: 31 }}NMS(非极大值抑制)构建一个边框例子import numpy as npimport matplotlib.pyplot as pltboxes=np.array([[100,100,210,210,0.7], [250,250,420,420,0.8], [230,230,320,330,0.9], [100,100,210,210,0.7], [230,240,325,330,0.8], [220,230,315,340,0.9]]) def plot_bbox(dets, c=‘k’): x1 = dets[:,0] y1 = dets[:,1] x2 = dets[:,2] y2 = dets[:,3] plt.plot([x1,x2], [y1,y1], c) plt.plot([x1,x1], [y1,y2], c) plt.plot([x1,x2], [y2,y2], c) plt.plot([x2,x2], [y1,y2], c)plt.title(“Initial border”) plot_bbox(boxes,‘k’)def py_cpu_nms(dets, thresh): x1 = dets[:,0] y1 = dets[:,1] x2 = dets[:,2] y2 = dets[:,3] areas = (y2-y1+1) * (x2-x1+1) # 求像素点的面积所以加一 scores = dets[:,4] keep = [] index = scores.argsort()[::-1] while index.size >0: i = index[0] keep.append(i) x11 = np.maximum(x1[i], x1[index[1:]]) # 计算窗口i与其他所以窗口的交叠部分的面积 y11 = np.maximum(y1[i], y1[index[1:]]) x22 = np.minimum(x2[i], x2[index[1:]]) y22 = np.minimum(y2[i], y2[index[1:]]) w = np.maximum(0, x22-x11+1) h = np.maximum(0, y22-y11+1) overlaps = w*h ious = overlaps / (areas[i]+areas[index[1:]] - overlaps) idx = np.where(ious<=thresh)[0] index = index[idx+1] return keepkeep = py_cpu_nms(boxes, thresh=0.6)plt.title(“After nms”)plot_bbox(boxes[keep], ‘r’) ...
OCR:精准、稳定、易用的文字识别大家好,今天给大家介绍精准、稳定、易用的文字识别应用服务OCR。OCR是英文光学字符识别的缩写,通常叫法为文字识别。它的工作原理是通过扫描仪或数码相机等光学输入设备来获取纸张上的文字图片信息,利用各种模式识别算法,分析文字形态特征,判断出合适的标准编码,然后按照通用的格式,存储在文本文件中。由此可见OCR实际上是让计算机认字,实现文字的自动输入,它是一种快捷、省力、高效的文本输入方法。文字识别的基本三要素就是O、C、R。O代表光学,即识别的是光线给出的文字,而不是声音,或者人体的触感等等。那为什么会有光呢?主要是因为光的反射和物理会吸收光线。其次还要求字的颜色和背景是不一样的。那同样它对于输入的图片的话,尽可能的要保证图片的清晰度。第二个要素就是C,也就是字符的意思。大家需要注意的是,字符是信息的一种编码,不是字体。字符主要是实现信息的编码,比如说大家看到一张苹果的图片,那我们第一反应它可以代表中文的苹果这两个字符,或者对应到英文的apple这个字符。所谓的文字其实就是一种字符,比如说大家常用的汉字,那就是中国人的字符。计算机显然也是需要对应到一个编码字符。比如说我们常用的GBK、Unicode、UTF-8等等,那这时候就会产生一个问题,如果有的字的图像在计算机编码里面没有对应的信息,那是不是说这个文字就没办法被识别呢?答案是,的确如此。所以说我们所使用的文字编码级,一定要尽可能的覆盖我们所要识别的字符。文字识别第三个要素就是R,它代表了识别的意思。刚刚我们了解到了,O和C它分别代表了光学的图片和对应的字符。那如何将光学的图片映射到计算机编码呢?目前关于如何将图片字符转换到光学字符,有两种方法,一种是传统方法,还有一种是基于深度学习的方法。在我们华为云学院的课程中会给大家做一个详细的介绍。需要注意的是OCR是指文字识别,但是OCR所采用的技术不仅仅是适用于文字识别。那么对于企业来说,为什么要使用OCR技术呢?举个例子,大家出差之后需要进行报销,报销的时候需要填写很多的信息,同样公司的财务人员需要花费一个较长的时间来进行INVOICE的一次次审核,有可能一个报销单需要经过三个或者说更多的财务人员进行一次次的审核校对。那即便如此,在我们日常报销中,也多多少少会出现一些人为的错误。那么OCR技术可不可以帮助我们实现INVOICE的快速准确的读取呢?答案是肯定的。由此可见,OCR技术可以对于企业来说,它可以减少相关人员审核所产生的成本,以及减少审核所需要的流程。总结一下企业为什么需要使用OCR技术,第一,是为了降低重复性的劳动成本。第二,它可以提高业务效率,第三,它能够提高文本识别的精确度。OCR在企业中主要运用于哪些场景呢?这里做了一个总结。第一文档场景,它主要用于印刷文档的识别,翻译文字的识别,搜索识别,涂抹识别。第二,电商场景,主要用于电商用户身份的绑定,实名认证,商家身份认证。第三,图片反作弊场景,它主要识别图像和视频中的一些违规文字,进行一些违规的处理和风险管控。第四,办公场景,主要会用于企业证件、年报、财报、piao据识别。然后接着是金融场景,它主要会用于客户的身份识别,身份绑定,个人信息核实。最后一个就是视频场景,主要是会用于视频字幕的识别,视频标题的识别,视频反作弊,图像反作弊,评论反作弊等。文字识别的技术难点主要存在以下几个方面,第一就是图像质量差,很多场景待识别的文本图片的质量往往都很差,它存在严重的一些干扰曲线,倾斜、暗光或者曝光扭曲。比如说我们常用的一些海关的报关的扫描单据。第二它对精确度要求特别高,在某些场景,用户对于数值的精确度要求特别高。比如说文本中的一些税率、金额、币种等文字的精确度要求高达百分之百。第三就是识别内容较为复杂,文本内容的复杂多样性,例如说一个文本中有可能存在不同的字体和颜色,小数点近似的英文数字,特殊的字符,特殊的符号连接词以及数字的内容,它的识别难度会很大,很容易被漏识,或者误识。第四就是语言的种类的繁多,随着全球化现在越来越扩大,每家公司多多少少都会涉及到多个国家,这时候就要求OCR技术能够支持多语言多字符。以上对文字识别进行了简要的介绍,访问华为云学院(https://edu.huaweicloud.com/) ,报名学习《文字识别服务》课程,了解更多文字识别关键技术及应用实践。华为云学院现已发布推出《智能表单和证件文字识别》微认证,微认证结合OCR服务,让您体验智能识别带来的效率提升!
研究百度OCR的API,主要是向做对扫描版的各种PDF进行文字识别并转Word文档的需求。这里用Postman客户端进行测试和演示。因为Postman是对各种API操作的最佳入门方式。一旦在Postman里实现了正确的调用,剩下的就只是一键生成代码,和一些细节的修改了。参考百度云官方文档:文字识别API参考下载官方文档PDF:OCR.zh.pdf授权字符串 Access TokenToken字符串永远是你使用别人API的第一步,简单说,就是只有你自己知道的密码,在你每次向服务器发送的请求里面加上这个字符串,就相当于完成了一次登录。如果没有Token授权认证,API的访问可能会像浏览网页一样简单。Access Token一般是调用API最重要也最麻烦的地方了:每个公司都不一样,各种设置安全问题让你的Token复杂化。而百度云的Token,真的是麻烦到一定地步了。参考:百度API的鉴权认证机制 (建议你不要参考,因为它的流程图会先把你镇住的)简单说,获取百度云token字符串的主要流程就是:创建一个应用,获得只有自己知道的id和密码用POST方式把id和密码发给百度的一个链接:https://aip.baidubce.com/oauth/2.0/token其中,需要你向这个地址传送三个参数:grant_type = client_credentials 这个是固定的client_id = xxx 这个是你在百度云管理后台创建OCR应用的时候,那个应用的API Keyclient_secret = xxx 这个是你的应用的Secret Key等待服务器返还给你一个包含token字符串的数据记住这个token字符串,并用来访问每一次的API来看看怎么利用Postman操作,如下图所示:填好以后点击Send发送,就会获得一个JSON数据,如下图:然后你用你的程序(Python, PHP, Node.js等,随便),获取这个JSON中的access_token,即可用到正式的API请求中,做为授权认证。正式调用API: 以"通用文字识别"为例API链接:https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic提交方式:POST调用方式有两种:方式一:直接在URL填写信息直接把API所需的认证信息放在URL里是最简单最方便的。方式二:Headers填写信息方式建议忽略这种方式,需要填写很多request的标准headers,太麻烦。Headers设置:Content-Type = application/x-www-form-urlencoded只要填这一项就够了。Body数据传送的各项参数:access_token = xxx 把之前获取到的token字符串填到这里来image = xxx 把图片转成base64字符串填到这里,不需要开头的data:image/png;base64,url = xxx 也可以不用传图片而是传一个图片的链接。但是百年无效,不要用!language_type = CHN_ENG 识别语言类型。默认中英。Body的数据如图所示:然后就可以点Send发送请求了。成功后,可以得到百度云返回的一个JSON数据,类似下图:返回的是一行一行的识别字符。百度云的识别率是相当高的,几乎100%吧。毕竟是国内本土的机器训练出来的。API常用地址以下是百度云的OCR常用API地址,每个API所需的参数都差不多,略有不同。所有的API和地址以及详细所需的参数,参考官方文档,很简单。一个弄明白了就其他的都明白了。API请求地址调用量限制通用文字识别https://aip.baidubce.com/rest…50000次/天免费通用文字识别(含位置信息版)https://aip.baidubce.com/rest…500次/天免费通用文字识别(高精度版)https://aip.baidubce.com/rest…500次/天免费通用文字识别(高精度含位置版)https://aip.baidubce.com/rest…50次/天免费网络图片文字识别https://aip.baidubce.com/rest…500次/天免费
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦本文由云计算基础发表于云+社区专栏前言2018年3月27日腾讯云云+社区联合腾讯云智能图像团队共同在客户群举办了腾讯云OCR文字识别——智能图像分享活动,活动举办期间用户耐心听分享嘉宾的介绍,并提出了相关的问题,智能图像团队的科学家和工程师也耐心解答可用户的疑问。以下就是活动分享的全部内容。正文在日常生活工作中,我们难免会遇到一些问题,比如自己辛辛苦苦写完的资料,好不容易打印出来却发现源文件丢了。难的收集了一些名片,却要很麻烦的一个一个录入信息。快递公司的业务越来越好,但每天却需要花费很多时间登记录入运单,效率非常的低。那么,有没有什么技术能帮助我们解决这些难题呢?有的,那就是OCR文字识别技术。今天我们请到了腾讯云大数据AI产品中心的AI科学家冀永楠、产品经理Florali、陈英恬,高级工程师肖西华为咱们分享一下腾讯云近年来在这一领域的探索情况。什么是OCR?OCR 是实时高效的定位与识别图片中的所有文字信息,返回文字框位置与文字内容。支持多场景、任意版面下整 图文字的识别,以及中英文、字母、数字的识别。通俗的来说,就是将图片上的文字内容,智能识别成为可编辑的文本,例如:OCR的技术原理是什么?OCR本质是图像识别。其原理也和其他的图像识别问题基本一样。包含两大关键技术:文本检测和文字识别。先将图像中的特征的提取并检测目标区域,之后对目标区域的的字符进行分割和分类。以深度学习兴起的时间为分割点,直至近五年之前,业界最为广泛使用的仍然是传统的OCR识别技术框架,而随着深度学习的崛起,基于这一技术的OCR识别框架以另外一种新的思路迅速突破了原有的技术瓶颈(如文字定位、二值化和文字分割等),并已在工业界得到广泛应用。首先文本定位,接着进行倾斜文本矫正,之后分割出单字后,并对单字识别,最后基于统计模型(如隐马尔科夫链,HMM)进行语义纠错。OCR技术的难点是什么?复杂背景、艺术字体、低分辨率、非均匀光照、图像退化、字符形变、多语言混合、文本行复杂版式、检测框字符残缺,等等。如克服这些难点的?从几个方面入手。一是使用场景,另一方面是从技术上的改进腾讯优图实验室在文本检测技术方进行了深度优化,提出了Compact Inception,通过设计合理的网络结构来提升各尺度的文字检测/提取能力。同时引入RNN多层自适应网络和Refinement结构来提升检测完整性和准确性。img腾讯云OCR目前支持什么功能?基于腾讯优图实验室世界领先的深度学习技术,目前我们已支持: 身份证识别,银行卡识别,名片识别,营业执照识别,行驶证驾驶证识别,车牌号识别,通用印刷体识别,手写体识别。大家可以扫文章头部的小程序二维码体验下我们的小程序。通用印刷体的技术难点,使用场景我们知道身份证识别可广泛应用在金融行业中,有用户的身份认证中,可以减少用户的信息输入,提升效率,提高用户体验,营业执照的识别完全省去了手工录入的繁琐,还可以为企业省去大量的人力资源成本,这些场景大家都已经比较熟悉。对于通用印刷体,腾讯优图实验室自主设计一整套全方位多尺度文字识别引擎,可攻破模糊,散焦,透视,文字部分遮挡的问题,识别准确率高达90%以上,处于业界领先水平。使用场景广泛,例如对任意版面上图像的文字识别,可广泛应用在印刷文档、广告图、医疗、物流等行业中的识别。对于通用印刷体有没有什么好的例子?例如这个广告,内容多字体,中英文与数字混合,背景也比较随意。咱们的OCR通过透视矫正、去模糊等,能大幅还原图像真实度,极大提升算法的鲁棒性。再例如识别文字密集,行间距小,透视畸变等的海报。人工识别需要不仅耗费时间,肉眼也比较难识别。但腾讯云OCR 设计了小而精的特征提取网络,配合先进的预处理技术,识别准确率高达93%以上。有时候也会遇到识别率不理想的情况,如何可以提高识别准确率?首先会确认下当前的场景,造成准确度不高的原因。评估可提高的空间设计,之后做出相应的修改,列入预处理等等。关于腾讯云手写体识别这块有没有什么案例?腾讯是国内首家将手写体识别应用在复杂场景下的服务商,数字识别准确率高达90%以上,单字识别速度在15ms以内,复杂汉字准确率超过80%。 腾讯云手写体OCR已运用到的运单识别场景,解决了物流行业每日快递单人工输入工作量极大且极易出错,非常低效等问题。img运单识别与传统人工识别有什么区别呢?如果传统人工识别按照3min/单,1000单需要6.25个人/天,保证运单时效则需要耗费大量人力,考虑人力成本则影响运单及时性,成本和服务难两全。我们的运单识别速度可以达到毫秒级/单,并支持24小时识别服务 ,业务增长时只需要投入计算用服务器资源即可,弹性较大。与传统识别相比,不仅成本可以降低,提高准确性,还可以保护用户的隐私泄露风险。目前OCR应用现实中有很广泛的应用场景,腾讯云OCR有什么优势?咱们的OCR文字识别技术,目前支持中文简繁体、英文、数字、标点共10000+标签,覆盖上百种字体,生僻字版本更支持2W+标签 。那咱们在行业中也有不少落地客户了吧?新版手Q就用到了咱们的技术,在扫一扫、聊天窗口和空间图片大图预览共三个入口上支持了提取图片中文字的功能。方便用户阅读、编辑、保存图片上的文字,从而可以对提取出的文字进行翻译、搜索。在多种场景下可以极大提升用户对图片上文字的阅读和记录效率。企业微信中的名片识也用到了咱们OCR技术。用户只需拍照或选择名片图片,就能准确快速地识别出名片中的文字,并自动提取为对应的字段,极大简化了名片录入流程,也避免了手动录入过程可能出现的错误。互动QA经过上面的分享,用户也提出了不少问题,我们来看看用户都问了什么?Q:您好,我想问下OCR 识别是否支持H5开发呢?A:支持,接口是基于http协议,只要支持http协议都可以使用。Q:通用印刷体识别剩下的10%,有提高的思路吗?A:整体思路还是要回到我们的三大引擎上。逐一进行优化。背景识别定位引擎字段识别引擎Q:目前印刷体识别上使用的思路是先分割后识别吗?OCR支持离线识别吗?A:思路是先分割后识别,我们的OCR支持离线识别的。Q:OCR遇到无法分割或者分割错误的情况如何处理呢A:很少有无法分割的情况。分割错误肯定会对最后的结果又影响。我们的技术,即便是再字符重叠的情况下也可以做出正确的分割。Q:我想问下如果针对运单识别场景,请问是否可以智能纠正客户的地址呢?例如深圳,写成了深土川。A:我们会结合NLP技术,结合上下文进行智能纠错。Q:目前市面已提供有相关服务,那么咱们在这块有什么与众不同的地方或者更有优势的一面呢?A:我们在OCR上积累的很多的相关经验,也是国内首家将手写体识别应用在复杂场景下的服务商。Q:那请问腾讯云OCR业务支持什么语言呀,对文字大小字体等有要求嘛?A:中文(简体和繁体),英文及数字。Q:之前有提到总的分类高达2w+,这种大分类模型是怎么训练的。A:分级,分批训练。Q:那我还想问您下车牌自动识别已应用于日常生活场景中。想了解下这个的技术难点是什么呢?A:相比于证照类输入图来说,车牌输入图受限于实际场景配置的摄像监控设备,及车辆位置的随机变化,产生各种极端角度及光照案例,其质量变化范围远大于证照类采集图像。Q:您刚才展示都是平整的图片,对于手机拍的纸质文档有一定弧度,比如折过的纸没压平,就会有一定弧度,这个能处理吗?A:轻微的弧度我们可以通过技术处理,严重变形的相对比较困难。Q:除了支持标准车牌,我们支持识别新能源车吗?A:支持的,我们目前已支持蓝牌、黄牌、军牌、警牌、教练车牌、新能源车牌等,目前识别率可达到97%-98%Q:请问针对物流公司司机手机拍的照片,一是面单不平整,二是光线有的不理想,三是拍照角度有倾斜。针对以上情况技术方面有没有解决办法?A:拍照角度可以通过几何算法矫正。光线的问题也可以通过图像的归一化增强。单面不平整,这个得看不平整到什么程度了。Q:车辆运行中,您这个80%的准确率是指车辆运动过程中拍摄下来的图还是车辆停止时候拍的图?A:我们是按帧处理的。Q:是否可以经过一定数据积累,纠错等训练,从而使其能识别手写文字?A:我们已实现手写体识别Q:OCR对运动模糊的场景识别率有多高A:模糊的程度差异性很大。不好做标准化的统计。图像质量不佳,最直白的处理方法是做图像的增强。Q:贵司技术有相关paper可以查阅吗?A:https://cloud.tencent.com/dev…https://cloud.tencent.com/dev...https://cloud.tencent.com/dev…可以看看咱们社区的文章哦很多文章都是鹅厂的精华呢~Q:图片有点模糊,能不能说下比较好具体算法,这个太笼统了A:有很多的滤波器都可以处理不同程度的模糊图像。也有采用神经网络的的方式处理。我们看到不管是复杂文字识别场景还是小程序应用腾讯云OCR都可以解决,对本文提问有任何疑问的同学,大家都可以去腾讯云问答社区(https://cloud.tencent.com/developer/ask)提出自己的疑问,届时会有邀请相关的产品同学回答您的问题。感谢大家对腾讯云云+社区及腾讯云智能图像的支持,如需了解更多腾讯云OCR识别,请点击:https://cloud.tencent.com/pro…)。腾讯云OCR接入流程第 1 步:登陆账号注册并通过实名认证后,您可以登录【腾讯云控制台】(链接:https://console.cloud.tencent.com/ai)进行使用。如果没有账号,请参考 【账号注册教程】(链接:https://cloud.tencent.com/document/product/378/9603)。第 2 步:创建秘钥完成注册后,您需要在【访问管理】(链接:https://console.cloud.tencent.com/cam/capi )创建秘钥。AppID、SecretID和SecretKey是您进行应用开发的唯一凭证,请妥善保管。第 3 步:生成签名通过签名来验证请求的合法性,用户可以使用AppID、SecretID和SecretKey生成签名,具体签名生成方法请参阅【签名鉴权】(链接:https://cloud.tencent.com/document/product/641/12409)第 4 步:调用API我们为您提供了丰富多样的API接口,您可以查看并调用【OCR】(链接:https://cloud.tencent.com/document/product/641/12407)服务。第 5 步:查看调用您可以登录【腾讯云控制台】(链接:https://console.cloud.tencent.com/ai/ocr/namecard),查OCR的各服务调用情况。问答OCR文字识别技术有哪些应用?相关阅读文字识别OCR知识资料全集(入门/进阶/论文/综述/代码/专家,附查看)我的AI之路 —— OCR文字识别快速体验版借你一双“慧眼”:一文读懂OCR文字识别︱技术派 【每日课程推荐】机器学习实战!快速入门在线广告业务及CTR相应知识