合合信息新推出反光消除技术,助力手写文字识别更精准

 

近期,合合信息旗下扫描全能王推出液晶手写板(简称手写板),为用户带来仿真、流畅的书写绘画体验,一同发布的还有扫描全能王APP的新功能拍手写板该功能可帮助用户在拍摄手写板内容后去除图片上的反光干扰形成更贴近白纸、板报的图片,并通过手写字迹识别,快捷、有序地获取可编辑、可分享的电子文档,助力工作效率提升。家庭场景中,父母可使用该功能清晰扫描、分享孩子的画作,记录其成长轨迹。

 

 扫描全能王“拍手写板”不同滤镜表现效果

 

据悉,“反光消除”技术是“拍手写板”功能的核心亮点。此前,人们消除图像反光需要使用专业的电脑端图像处理软件,进行图层复制、前景色填充、反光区域涂抹等系列复杂操作。“拍手写板”功能让用户直接通过移动设备操作,一键去除反光,助力无纸化生活、学习、办公记录,进入扫描全能王“工具箱”模块即可体验。

 

 

保留手写质感,AI助力“无伤”去反光

 

随着手机、相机等数码产品的普及,数字图像成为人们生活中重要的信息载体之一反光则是数字图像中常见的干扰因素。比如,高校学生想通过拍照来记录老师写在黑板上的知识点,却发现画面总是被几道反光“切割”,导致有些知识点看不清,十分恼人。“拍手写板”中的“板报”模式可以完整还原黑板上的粉笔书写效果,美观又清晰。

扫描全能王“反光消除”效果展示

 

反光消除重点需要解决反光定位、消除,以及消除后的图像质量保留等问题。具体实践中,机器需要从黑板、手写板上精准检测、定位到反光区域,并引入人工智能技术对反光区域进行处理,以消除或减弱反光现象。

 

合合信息是一家人工智能及大数据科技公司,在智能文字识别、智能图像处理技术研发应用上有着十余年深耕经验。公司技术人员提到,反光通常会不同程度地盖住一些画面上的信息,所以处理过程中需要尽量保留图像的原始细节,避免因消除反光导致图像质量下降扫描全能王拍手写板功能采用了公司独创的智能图像处理技术,可在去除画面上反光、指印痕迹的同时,尽可能还原笔锋、笔触等贴近真实的书写细节。

扫描全能王“拍手写板-板报”模板效果展示

 

反光消除为手写识别清扫障碍

 

现代社会中,人们通常会选择直接在电子设备上输出文字,传递或存储信息,但在许多场景中,手写依然是重要的表达方式,例如开会讨论时迅速产出“脑图”、记录待办事件,或者在“头脑风暴”时,通过写字涂鸦打草稿的方式达到沉浸思考的效果。

 

近年来,手写文字自动识别成为计算机视觉领域研究的热点。通过手写识别技术,大众在满足书写需求的同时,也能对相关内容进行电子化存储,解决了纸质文件保存难的问题

 

值得关注的是,在手写识别场景中,反光会导致部分区域的文字无法被准确识别,给后续的文字识别和理解工作带来了很大的挑战。合合信息反光消除技术能够根据手写板笔迹的风格进行特征提取,并对手写文字进行特征编码,助力文档图像中反光区域文字的提取。相关技术人员表示,除了文档图像处理外,反光消除技术在专业摄影、视频处理等领域也具备广阔的应用空间,有望为科研记录、观察提供强大的支撑。

 

本文转载于网络 如有侵权请联系删除

相关文章

  • Ledoit-Wolf收缩

    importnumpyasnp importmatplotlib.pyplotasplt fromscipy.linalgimporttoeplitz,cholesky fromsklearn.covarianceimportLedoitWolf,OAS np.random.seed(0) n_features=100 #模拟协方差矩阵 r=0.1 real_cov=toeplitz(r**np.arange(n_features)) coloring_matrix=cholesky(real_cov) n_samples_range=np.arange(6,30,1) repeat=100 lw_mse=np.zeros((n_samples_range.size,repeat)) oa_mse=np.zeros((n_samples_range.size,repeat)) lw_shrinkage=np.zeros((n_samples_range.size,repeat)) oa_shrinkage=np.zeros((n_samples_range.size,repeat))

  • 【小Y学算法】⚡️每日LeetCode打卡⚡️——37. 只出现一次的数字

    ????前言????原题样例:只出现一次的数字????C#方法:位运算????Java方法:位运算????总结????往期优质文章分享????前言????算法题????????每天打卡一道算法题,既是一个学习过程,又是一个分享的过程????????提示:本专栏解题编程语言一律使用C#和Java两种进行解题????要保持一个每天都在学习的状态,让我们一起努力成为算法大神吧????!????今天是力扣算法题持续打卡第37天????!????算法题????????原题样例:只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明: 你的算法应该具有线性时间复杂度。你可以不使用额外空间来实现吗?示例1:输入:[2,2,1] 输出:1复制示例2:输入:[4,1,2,1,2] 输出:4复制????C#方法:位运算思路解析 代码:publicclassSolution{ publicintSingleNumber(int[]nums){ intret=0; foreach(inteinnums)ret^=e; returnret; }

  • 什么是 MQ?

    文章目录MQ的相关概念1.什么是MQ2.为什么要用MQ3.MQ的分类4.MQ的选择MQ的相关概念1.什么是MQMQ(messagequeue),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了MQ之后,消息发送上游只需要依赖MQ,不用依赖其他服务。2.为什么要用MQ1.流量消峰举个例子,如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰绰有余,正常时段我们下单一秒后就能返回结果。但是在高峰期,如果有两万次下单操作系统是处理不了的,只能限制订单超过一万后不允许用户下单。使用消息队列做缓冲,我们可以取消这个限制,把一秒内下的订单分散成一段时间来处理,这时有些用户可能在下单十几秒后才能收到下单成功的操作,但是比不能下单的体验要好。2.应用解耦以电商应用为例,应用中有订单系统、库存系统、物流系统、支付系统。用户创建订单后,如果耦合调用库存系统、物流系统、支付系统,任何一个子系统出了故障,都会造成下单操作

  • 想尝试 Linux? 教你如何在虚拟机中安装 Linux

    前言可能许多小伙伴都对Linux有一定的兴趣,但是又不想在实体机上安装,所以想在虚拟机上安装试试水。这篇文章则会教你如何在虚拟机上安装自己Linux系统(以Ubuntu18.04为例)。准备工作Ubuntu获取地址:官网[1]image清华镜像站[2]imageVMware获取地址[3]安装过程Vmware的安装过程此处不在赘述,不清楚如何安装的请自行百度,参见VMware14安装教程[4]然后就是Vmware中安装Ubuntu18.04的过程如下:imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage总结至此,Ubuntu18.04的安装结束,接下来你就可以尽情的捣鼓安装好的系统了QAQ。所有权建议关注「公众号」,文章会优先发布在此处,此外还有大量精品资源等着你。部分资源截图分类JavaPython办公个人提升小编收集资源也很辛苦,大家看完文章后,记得顺手点个在看!或者赞赏个鸡腿儿也是很满足鸭!比心♥Reference[1]官网:https://www.ubu

  • 【Pyecharts可视化分享】杭州步行热门路线等~

    前言本文包括内容如下:杭州步行热门路线渐变效果散点图均是Echarts官方提供等示例,本文将会通过Pyecharts来进行实现。杭州步行热门路线因为代码中需要调用百度地图,所以开始之前你需要去百度申请一个开发者AK:百度地图开放平台。数据源:https://echarts.baidu.com/examples/data/asset/data/hangzhou-tracks.json完整代码frompyechartsimportoptionsasopts frompyecharts.chartsimportBMap frompyecharts.globalsimportChartType,SymbolType,ThemeType importrequests #通过requests获取数据 r=requests.get('https://echarts.baidu.com/examples/data/asset/data/hangzhou-tracks.json') data=r.json() data_pair=[] #新建一个BMap对象 bmap=BMap

  • Ubuntu16.04搭建GitLab服务器教程

    GitLab官方搭建教程地址:https://about.gitlab.com/install/#ubuntu 1.依赖包安装sudoapt-getupdate sudoapt-getinstall-ycurlopenssh-serverca-certificates复制执行完成后,邮件配置时选择Internet即可.2.GitLab安装2.1官方教程如果按照官方安装方法,直接运行下列命令即可.curlhttps://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh|sudobash sudoapt-getinstallgitlab-ce复制但按照官方教程安装会非常慢,推荐使用下列方式,利用清华源安装.2.2清华源首先信任GitLab的GPG公钥curlhttps://packages.gitlab.com/gpg.key2>/dev/null|sudoapt-keyadd-&>/dev/null复制接下来打开gitlab-ce.list文本sudovim/etc/apt/

  • Python 比特币教程之二: 机器人收发比特币

    在上一篇教程Python比特币教程之一:创建机器人中,我们创建了自动回复消息的机器人,当用户发送消息"Hello,World!"时,机器人会自动回复同一条消息。第二课:机器人接受比特币并立即退还用户按本篇教程后学习后完成后,你的机器人将会接受用户发送过来的加密货币,然后立即转回用户。 完整代码如下:app.pyfrommixin_ws_apiimportMIXIN_WS_API frommixin_apiimportMIXIN_API importmixin_config importjson importtime fromioimportBytesIO importbase64 importgzip try: importthread exceptImportError: import_threadasthread defon_message(ws,message): inbuffer=BytesIO(message) f=gzip.GzipFile(mode="rb",fileobj=inbuffer) rdata_injson=f

  • git提交代码添加作者信息

    https://blog.csdn.net/weixin_39800144/article/details/84821897 git提交代码时,如果没有设置作者信息,提交记录可能看不出来时谁提交的,如下:修改方式如下:这两条配置很重要,每次Git提交时都会引用这两条信息,说明是谁提交了更新,所以会随更新内容一起被永久纳入历史记录:$gitconfig--globaluser.name"JohnDoe" $gitconfig--globaluser.emailjohndoe@example.com//这个也可以不配置复制如果用了--global选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。如果要在某个特定的项目中使用其他名字或者电邮,只要去掉--global选项重新配置即可,新的设定保存在当前项目的.git/config文件里。修改后再次提交如下:相关资料:https://git-scm.com/book/zh/v1/起步-初次运行-Git-前的配置

  • Python 多线程编程(二):threading 模块中 Lock 类的用法详解

    在前面一篇博文《Python多线程编程(一):threading模块Thread类的用法详解》我有简单介绍怎么利用threading模块进行多线程的编码。但那只是多线程编码最简单的部分,真正难的其实是多个线程之间的通信和数据同步。大概可以这样讲,多线程最难的是如何正确协调各个线程修改同一份数据。以卖票的例子作为说明。买票有多个窗口,假设有3个好了,窗口之间共享一个票池,每个窗口都可以买票直到票池里面没有票可以卖。不难写出下面的代码。importthreading importrandom classWindowThread(threading.Thread): def__init__(self,name): threading.Thread.__init__(self,name=name) self.name=name self.tickts=0 defrun(self): globaltickt_count whiletickt_count>0: print('%snotice:Therehas%dticktsremain'%(self.name,

  • 微信客户端性能监控和优化简述

    今天主题,产品数量级上去了之后很多人都会去关心性能问题。这里是Info对微信性能优化上的一些探寻,值得参考。陈岳伟(Lylechen),微信客户端开发团队负责人,统筹微信在iOS、Android、Mac和Windows等平台的开发管理工作。2010年加入微信团队,从无到有构建出微信的第一个iOS版本,并持续不断进行架构优化和性能稳定性打磨。近年来主要关注微信终端监控体系以及微信重度用户的性能提升和体验优化。 一款产品能否与用户产生化学反应,客户端在这一过程中的性能作用最关键。启动时间太长、内存消耗太大、ANR等等,都会直接影响用户对一款应用的判断和使用体验。 如微信Slogan说的那样:微信,是一个生活方式。所以,微信App本身就包含非常多且复杂度高的业务模块(如搜索、视频等),也接入了很多第三方的插件,这势必会拖慢应用的启动时间和响应速度,尤其是目前出现了“微信重度用户”这一现象,迫使微信追求更多的分析和优化措施。在由听云联合极客邦科技/InfoQ共同主办的APMCon2017会议上,我们邀请微信“小黑屋11人”之一的微信客户端开发团队负责人陈岳伟(Lylechen)来APMCon现

  • “让你的应用看见世界”——“微信智能平台WeMage挑战赛”狮城完美收官

    首届“WeMage视觉搜索挑战赛”于近日在狮城新加坡完美收官。本次挑战赛由“腾讯-ROSE(腾讯-新加坡南洋理工-北京大学)博云搜索联合实验室”主办,以微信智能平台为开发基础,面向全新加坡高校在校生开放,以鼓励学生开发有趣有用的移动应用。此外该赛事同时受到了新加坡最有影响力的媒体AsiaOne的关注与报道。决战狮城挑战赛历时5个月,最终6支团队从参赛的51支团队中脱颖而出,闯入决赛环节。由TechBizXcceleratorCEO,新加坡经济发展局负责人,新加坡南洋理工创投孵化器Ntutivie代表,以及微信智能平台团队组成阵容强大的评审团,对决赛团队进行了现场评审。经过紧张激烈的角逐,最终UGuide,Market-AFoodie'sApp,Retravel三项应用进入前三甲,UGuide拔得头筹获得10,000新元现金大奖。所有决赛团队均将获得新加坡南洋理工创投孵化器10,000新元的创业扶持基金!腾讯公司副总裁王巨宏女士代表腾讯向获奖团队颁奖。照片左起:ViktorChengTBXCEO,王巨宏腾讯公司副总裁,ShengLI&YanWANGUGuide团队成员,

  • 只在UnitTest和WebHost中的出现的关于LogicalCallContext的严重问题

    最近一直在进行公司内部框架的升级工作,其中一个小的部分就是通过HttpSessionState和CallContext建立一套统一的、可扩展的用于管理上下文信息的框架。在为写好的程序编写UnitTest和QuickStart的时候,遇到了两个基于LogicalCallContext的严重问题。导致这两个问题的根源还没有来得及去追踪,或许是微软VS UnitTest框架本身和WebHost本身的一个Bug。现在将其写出来,一来是希望读者在遇到相同情况的时候知道LogicalCallContext可能是影响因素之一,另一方面也希望借助社区的力量快速找到问题的症结。以下内容假定读者已经对CallContext有一个大概的了解,并且明白LogicalCallContext和IllogicalCallContext之间的区别。对此不了解的读者,可以参考我的文章《如何实现对上下文(Context)数据的统一管理》。一、在VSUnitTest下设置LogicalCallContext导致的序列化问题为了演示在UnitTest下设置LogicalCallContext会导致怎样的问题,为此我写了一个非

  • python爬虫(二)_HTTP的请求和响应

    HTTP和HTTPSHTTP(HyperTextTransferProtocol,超文本传输协议):是一种发布和接收HTML页面的方法HTTPS(HyperTextTransferProtocoloverSecureSocketLayer)简单讲是HTTP的安全版,在HTTP下加入SSL层。 SSL(SecureSocketLayer安全套接层)主要用于web的安全传输协议,在传输层对网络连接进行加密,保障在Internet上数据传输的安全。HTTP的端口号为80 HTTPS的端口号为443HTTP工作原理网络爬虫抓取过程可以理解为模拟浏览器操作的过程。浏览器的主要功能是向服务器发出请求,在浏览器窗口中展示您选择的网络资源,HTTP是一套计算机通过网络进行通信的规则。HTTP的请求和响应 HTTP通信由两部分组成:客户端请求消息与服务器响应消息浏览器发送HTTP请求的过程当用户在浏览器的地址栏中输入一个URL兵按回车键之后,浏览器会向HTTP服务器发送HTTP请求。HTTP请求主要分为"Get"和"Post"两种方法。 当我们在浏览器中输入URL

  • 新领导上任

    新领导上任,重新规划一切…… 不想多说了,之前的领导貌似有预感,所以一直在折腾我们,不停地规划,好不容易规划完了,他走了……

  • 第十五章:面向对象编程

    1:派生类不能访问基类的私有变量,设计这种规则原则是:基类为公有的,私有的,则表示不希望类外看到私有的;而有了继承,则需要考虑一些变量对派生类开放,故而在私有的局部成员中分出一部分为保护的;故而保护的是相对派生类的公有,而对类外相当于私有。由此设计基类时,先考虑哪些为公有,私有;再在私有中考虑哪些为派生可访问哪些不能。2:基类指针不可以转为派生类指针,而派生类可以转为基类。3:如果希望覆盖虚函数机制,则必须显示用作用域操作符。4:不同级别的继承,会导致基类成员成为派生类成员的什么类型成员。上级的私有是不能被访问的。如果上级的公有被继承为私有了,则表示下级就不能访问了。5:友元不被继承6:静态成员,在继承层次中只有一个。7:http://blog.csdn.net/fg100emil/article/details/1417737对虚函数有个很好的认识。8:istream的成员函数:istream&getline(char*s,streamsizen,chardelim);string头文件中,定义的是一个全局的函数:istream&getline(istream&

  • 各个模式的accesstoken续期详解

    一些预备知识 jwt的时间格式 转换为时间可以用js, newDate(1531841745*1000) ==>TueJul17201823:35:45GMT+0800(中国标准时间) 关于Refreshtoken refreshtoken仅仅在hybrid,authorization和ResourceOwnPassword三种模式中支持 通常在IdentityServer中, 如果客户端是.net程序,我们使用hybrid和ResourceOwnPassword授权 如果客户端是纯js程序,那么使用implicit授权. 需要加上offline_access的scope权限,才可以拿到refresh_token 参考https://stackoverflow.com/questions/42162769/identity-server-4-angular-2-token-expiration 5downvoteaccepted Icanrecommendthelibraryformanagingtokenforthejavascriptapplication:http

  • 460. LFU Cache

    相关问题:146.LRUCache 问题: 设计类LFUCache,实现LFUCache Least FrequentlyUsed 优先度为:访问频率最多优先的缓存。 缓存大小一定,capacity get(key):通过key查找value,若缓存中不存在key,返回-1 put(key,value):插入缓存key=value。 Example1: Input ["LFUCache","put","put","get","put","get","get","put","get","get","get"] [[2],[1,1],[2,2],[1],[3,3],[2],[3],[4,4],[1],[3],[4]] Output [null,null,null,1,null,-1,3,null,-1,3,4] Explanation //cnt(x)=theusecounterforkeyx //cache=[]willshowthelastusedorderfortiebreakers(leftmostelementismostrecent) LFUCachelfu

  • 利用Selenium+PhantomJS 实现截图

    usingOpenQA.Selenium; usingOpenQA.Selenium.PhantomJS; usingSystem; usingSystem.Drawing; usingSystem.Drawing.Imaging; usingSystem.IO; usingSystem.Threading.Tasks; namespaceWebKitTest { internalclassProgram { privatestaticvoidMain(string[]args) { Parallel.For(0,20,i=> { varurl="http://www.baidu.com"; IWebDriverdriver=newPhantomJSDriver(GetPhantomJSDriverService()); driver.Navigate().GoToUrl(url); ITakesScreenshotscreenshotDriver=driverasITakesScreenshot; Screenshotscreenshot=screenshotDriver.G

  • PHP扩展--opcache安装及配置

    简介 Optimizer+是Zend开发的闭源但可以免费使用的PHP优化加速组件,是第一个也是最快的opcode缓存工具。现在,Zend科技公司将Optimizer+在PHPLicense下开源成为ZendOpcache。 ZendOPcache通过opcode缓存和优化提供更快的PHP执行过程。它将预编译的脚本文件存储在共享内存中供以后使用,从而避免了从磁盘读取代码并进行编译的时间消耗。同时,它还应用了一些代码优化模式,使得代码执行更快。 当解释器完成对脚本代码的分析后,便将它们生成可以直接运行的中间代码,也称为操作码(OperateCode,opcode)。Opcodecache的目地是避免重复编译,减少CPU和内存开销。如果动态内容的性能瓶颈不在于CPU和内存,而在于I/O操作,比如数据库查询带来的磁盘I/O开销,那么opcodecache的性能提升是非常有限的。 现代操作码缓存器(Optimizer+,APC2.0+,其他)使用共享内存进行存储,并且可以直接从中执行文件,而不用在执行前“反序列化”代码。这将带来显着的性能加速,通常降低了整体服务器的内存消耗,而且很少有缺点。 o

  • Java byte[]与List转换工具 | Java工具类

    前言 其实这个工具是给自己写的,因为自己老是忘记。所以记录一下。 Maven依赖 <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>30.1.1-jre</version> </dependency> 复制 代码 packageai.guiji.csdn.tools; importcom.google.common.primitives.Bytes; importjava.util.Arrays; importjava.util.List; /**@Author剑客阿良_ALiang@Date2022/1/2614:51@Description:byte工具*/ publicclassByteUtils{ /** *字节组转list * *@parambytes字节组 *@returnList */ publicstaticList<Byte>by

  • 又一个php与js数据交互的例子

    php和js如何通过json互相传递数据相关问题探讨 作者:字体:[增加 减小]类型:转载   json是js的一种数据格式,可以直接被js解析,php无法直接读取json数据,但是php提供了json_decode函数来对json数据进行转化,从而可以被php脚本访问,今天,站长就和大家一起来探讨这个问题,感兴趣的你可以参考下哦     当我们在结合php和javascript实现某些功能时,经常会用到json。json是js的一种数据格式,可以直接被js解析。而php无法直接读取json数据,但是php提供了json_decode函数来对json数据进行转化,从而可以被php脚本访问。同时,php也提供了json_encode函数来将数据转化成json格式。那么,js中的原生json与php中通过json_encode函数转化后的json是否完全一样呢?今天,站长就和大家一起来探讨这个问题。我们通过php向javascript传递数组数据时,通常要将其转化为json格式,一遍javascript来获取,那么我们就以数组为例,先来看一下两者之间

相关推荐

推荐阅读