百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

小米表格识别技术官方解读,支持智能提取图片中的表格

toyiye 2024-06-21 12:08 10 浏览 0 评论

IT之家 9 月 3 日消息,今日晚间,小米创办人、董事长兼 CEO 雷军通过社交媒体表示,小米工程师研发了一套表格识别算法,该算法高效准确地将图片中的表格转化为可编辑的 Excel 文件,大幅提升使用体验。

同时,小米技术官方也发文对表格识别算法中的一些技术实现原理进行了解读,涉及总体框架、表格检测算法、表格识别算法、对齐算法等内容。

以下为小米技术官方解读内容:

表格识别是指将图片中的表格结构和文字信息识别成计算机可以理解的数据格式,在办公、商务、教育等场景中有着广泛的实用价值,也一直是文档分析研究中的热点问题。围绕这个问题,我们研发了一套表格识别算法,该算法高效准确地提取图片中的表格,转化为可编辑的 Excel 文件。目前算法已经成功落地于小米 10S 系列、MIX Fold 2 等旗舰机型,大家可以从相册-更多-表格识别,或者扫一扫进入体验。

▲ 图一雷军在 MIX Fold 2 发布会上介绍小米表格识别算法

一、背景

大多数人日常办公处理的文件,主要是表格和文档,其中表格的重要性毋庸置疑。在各行各业的桌面办公场景中,Excel 和 WPS 是电子表格的事实标准。我们经常遇到这种需求:将一个表格图片的内容导入 Excel。

以前我们只能对着图片一点点把内容录入 Excel,既低效又容易出错。近年来,随着技术的发展,OCR(光学字符识别)的可用性不断提升,用户可以借助 OCR 软件,从图片中自动提取文本信息。

然而对于表格场景,仅提取文字是不够的,用户还需反复手动复制粘贴以还原出电子表格,这仍会耗费大量时间。为此我们实现了一套表格图像提取方案,它能切实提升用户办公效率。图二是我们的识别效果展示:

▲ 图二表格识别效果展示

二、总体框架

图三展示的是我们目前算法的一个总体框架图,主要包含手机端的表格检测算法和服务端的表格识别算法。

▲ 图三表格识别技术框架

表格检测算法主要是从图片中准确的提取表格区域,并对表格进行矫正,得到平整的表格图片以便下一步的表格识别;表格识别算法主要是从图片中提取表格结构和表格文字内容,然后将这些信息有效的结合在一起,输出可编辑的 Excel 表格。下文将详细介绍表格检测算法和表格识别算法。

三、表格检测算法

表格检测有以下难点:一方面是手机上的算法和内存有限,另一方面是对表格检测结果要求非常高,表格周围往往包含其他文字,如果检测结果不准,会对后面的识别结果造成负面影响。我们的表格检测算法会同时检测到表格区域和表格的四个角点,通过透视变换和我们自研的抗扭曲算法得到只有表格区域的平整表格,效果如图四所示。

▲ 图四表格检测算法效果

表格检测算法框架如图五所示,由于算法运行在手机端,需要保证运行速度和模型大小,我们采用了一个非常轻便的一阶段检测框架,backbone 采用 shuffleNetV2;在检测出表格框的同时,回归出关键点信息,便于表格的透视矫正,并用 Wing loss 代替 L1 loss 让关键点回归更加准确;数据方面,用算法低成本地从公开数据中挖掘大量表格检测数据,显著性地提高表格检测效果。最终模型大小为 1M 左右,顺畅地运行在小米手机上。

▲ 图五表格检测算法框架

四、表格识别算法

表格识别算法如图三所示,该算法在服务端运行,主要包含的模块有:文本检测、文本识别、表格结构预测、单元格匹配、对齐算法、Excel 导出。文本检测识别模块采用了我们之前已经上线的 OCR 服务,这里不再做重点介绍。下面将主要介绍表格结构预测算法和 Cell 坐标聚合算法。数据方面,由于表格数据标注困难,我们完成了一套表格渲染工具,可以合成各种样式的表格数据,极大地降低了标注成本。

表格样式多样,有线的表格、无线的表格、隔段横线表格等,并且表格中有非常多各种复杂的合并单元格出现;另外,图片含有阴影、光照、扭曲、变形等也增大了表格预测的难度。表格结构预测前人有不少研究,基于传统算法提取表格线,再由表格线推导行、列、合并单元格的信息;基于目标检测,检测出单元格,再用后处理方法组织单元格还原表格结构;基于语义分割,分割出表格线,然后对分割结果进行后处理还原表格结构;以上算法有一个共同的问题,后处理复杂并且鲁棒性较差,通常需要针对特定表格的算法适配。

目前主流的方法是将表格用 HTML 的超文本表示,然后对 HTML 进行编码,预测 HTML 序列和对应的坐标信息。该方法在开源数据集上取得了不错的效果,中国平安科技和百度也采用了这种方案,但是 HTML 的标签过多导致表格结构识别容易出错。针对该方法的不足,我们对表格采用全新的编码方式,仅用四个标签就能表示任意结构的表格,极大地提高了表格结构识别准确率。

如图六所示,将表格定义为 M*N 个单元格组成的矩阵,以及内部合并单元格组成。“0”:代表普通的单元格、“1”:代表向左合并单元格、“2”:表示向上合并单元格;并且每个单元格对应一个坐标框,以便后续把 OCR 识别的结果与之匹配。这样定义的优点:无人为语法规则;数据组织具有天然的二维对齐属性,网络更不容易产生漂移;少量标签可以还原出任意表格结构,无开放集分类问题。

▲ 图六表格结构定义

我们采用了如图七所示的表格结构预测框架,该方法基于 cnn+transformer decoder 的图像到序列学习网络,在解码阶段包含两个预测头,分别预测表格序列和表格 Cell 的坐标信息。

▲ 图七表格结构预测框架

表格结构效果如图八所示,表格结构识别算法预测出每个单元格的位置信息和每个位置对应的序列信息。图八左右两个图是一一对应的,同一种颜色的检测框对应右边 Cell 单元格,Cell 是有顺序的。

▲ 图八表格结构识别效果展示

表格识别在部署过程中,采用 Fastertransformer 推理框架进行加速,我们的推理速度提升了大约 20 倍,明显改善用户体验。

Cell 坐标聚合算法主要是将文本检测到的内容与表格预测的单元格进行正确匹配,算法流程如图九所示。文本框与单元格框进行匹配,首先匹配 IOU 最大的,如果 IOU=0,则匹配两个框中心距最近的。如果一个单元格中包含多个文本框的结构,还要在单元格内按照阅读顺序输出,并实现智能换行从而改善用户体验。

▲ 图九 Cell 坐标聚合算法流程

最终我们的算法在表格结构提取和端到端表格还原的准确率上,均领先业界的主要竞品。

五、对齐算法

上述算法已经基本还原出表格信息,但是同一表格里单元格的对齐方式并不相同,可能同时存在“左对齐” “右对齐” “居中对齐”。我们设计了一套对齐算法,通过分析表格中单元格的位置信息实现自动对齐,完全还原出真实表格,明显改善用户体验。对齐算法效果如图十所示:

▲ 图十 对齐算法效果

相关推荐

Python第三课3. Python 的非正式介绍

3.Python的非正式介绍?在下面的例子中,通过提示符(>>>与...)的出现与否来区分输入和输出:如果你想复现这些例子,当提示符出现后,你必须在提示符后键入例子中的每...

如何使用 Python 构建一个“谷歌搜索”系统?| 内附代码

来源|hackernoon编译|武明利,责编|Carol出品|AI科技大本营(ID:rgznai100)在这篇文章中,我将向您展示如何使用Python构建自己的答案查找系统。基本上,这...

Python 模拟微博登陆,亲测有效!(如何用python爬微博)

今天想做一个微博爬个人页面的工具,满足一些不可告人的秘密。那么首先就要做那件必做之事!模拟登陆……代码是参考了:https://www.douban.com/note/201767245/,我对代码进...

Python 驱动的 AI 艺术批量创作: 免费的Bing 绘图代码解析

这篇文章将深入分析一段Python代码,该代码利用Bing的AI绘图功能,即bing的images/create,根据用户提供的文本提示生成图像。我们将详细探讨其工作原理、代码结构、...

Python爬虫Scrapy库的使用入门?(python scrapy爬虫)

Scrapy是一个开源的并且支持高度可扩展的Python爬虫框架,主要被用来实现从网站提取数据。出现之初就是为网页抓取而设计,但是现在它也可以被用于从APIs中抓取数据或通用的Web抓取任务。Sc...

Python3 标准库概览(python标准库有什么)

操作系统接口os模块提供了不少与操作系统相关联的函数。>>>importos>>>os.getcwd()#返回当前的工作目录'C:\\Python34...

零基础入门学习Python(三):变量和字符串

分享兴趣,传播快乐,增长见闻,留下美好!亲爱的您,这里是LearningYard新学苑。今天小编为大家带来的是...

Python读写docx文件(python读写word)

Python读写docx文件Python读写word文档有现成的库可以处理pipinstallpython-docx安装一下。https://python-docx.readthedocs.io/...

如何利用Xpath抓取京东网商品信息

前几小编分别利用Python正则表达式和BeautifulSoup爬取了京东网商品信息,今天小编利用Xpath来为大家演示一下如何实现京东商品信息的精准匹配~~HTML文件其实就是由一组尖括号构成的标...

如何利用Xpath选择器抓取京东网商品信息

前几小编分别利用Python正则表达式和BeautifulSoup爬取了京东网商品信息,今天小编利用Xpath来为大家演示一下如何实现京东商品信息的精准匹配~~HTML文件其实就是由一组尖括号构成的标...

python之Scrapy爬虫案例:豆瓣(python爬虫书籍豆瓣评分)

python模块之Scrapy爬虫框架...

Python编程入门学习:最常见加密方式和Python实现

前言我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes。所以当我们在Python中进行加密操作的时候,要确保我们操作的是Bytes,否则就会报错。将字符串...

一日一技:Python中的string.rindex()方法

string.rindex()方法string.rindex()方法返回字符串内子字符串的最高索引(如果找到)。如果未找到子字符串,则会引发异常。rindex()的语法为:...

Asterisk-ARI对通道中的DTMF事件处理

Asterisk通道中关于DTMF处理是一个非常重要的功能。通过DTMF可以实现很多的业务处理。现在我们介绍一下关于ARI对通道中的DTMF处理,我们通过自动话务员实例来说明Asterisk如何创建一...

PyQt5 初次使用(pyqt5下载官网)

本篇文章默认已安装Python3,本篇文章默认使用虚拟环境。安装pipinstallPyQt5PyQt一些图形界面开发工具QtDesigner、国际化翻译工具Liguist需要另外...

取消回复欢迎 发表评论:

请填写验证码