前端代码是怎样智能生成的-表单表格专项识别篇

本文涉及的产品
OCR统一识别,每月200次
票证核验,票证核验 50次/账号
企业资质识别,企业资质识别 200次/月
简介: 作为阿里经济体前端委员会四大技术方向之一,前端智能化项目经历了2019双十一的阶段性考验,交出了不错的答卷,天猫淘宝双十一会场新增模块79.34%的线上代码由前端智能化项目自动生成。在此期间研发小组经历了许多困难与思考,本次《前端代码是怎样智能生成的》系列分享,将与大家分享前端智能化项目中技术与思考的点点滴滴。

作为阿里经济体前端委员会四大技术方向之一,前端智能化项目经历了 2019 双十一的阶段性考验,交出了不错的答卷,天猫淘宝双十一会场新增模块 79.34% 的线上代码由前端智能化项目自动生成。在此期间研发小组经历了许多困难与思考,本次《前端代码是怎样智能生成的》系列分享,将与大家分享前端智能化项目中技术与思考的点点滴滴。

概述

在前端智能化领域,特别是中后台智能方向上,表单表格的识别是非常重要的一环。因为表单表格的开发工作,占据了中后台前端开发工作量中的绝大部分,如果能够通过智能的手段,从设计稿图片秒级生成表单表格代码,那么将会是巨大的生产力提升。本文将会揭秘秒级生成表单表格代码的技术细节。

所在分层

表单/表格识别使用了组件识别、布局算法、物料属性识别等技术,在这些技术中,核心技术是物料属性识别,在整体分层中的物料识别层中,如图所示。

image.png
(D2C识别能力技术分层)

秒级生成表单/表格代码效果展示

只需要截图粘贴,并点击识别,就可以秒级生成表单、表格等通用前端组件协议,甚至连字段都翻译好了,还是小驼峰命名法哦!

1573619637059-0be3cc85-74d6-45da-90c4-5e8afcd25f2f.gif表单识别效果图

1573619653426-09c273fb-0087-40fb-b6cb-0f7e840c9f99.gif
表格识别效果图

表单/表格识别技术揭秘

表单识别的主要思路是:

1.通过目标检测技术检测出所有的组件类型及其坐标。
2.通过文字识别技术和自动翻译技术识别出所有文字及其坐标并翻译为英文。
3.通过代码转换器从上述组件信息和文字信息中提取表单/表格的布局、label、type、字段等各种属性。

目标检测+文字识别

目标检测使用的fasterrcnninceptionv2模型训练和预测的,具体细节参考本系列文章中的组件识别篇。文字识别使用的通用的文字识别技术,可以检测出文字内容和坐标,具体细节也不再赘述。

图中红框为目标检测信息,绿框为文字识别信息

image.png

代码转换器

本文将重点介绍,如何使用代码转换器提取表单 / 表格的各种属性。

绝对坐标转行列

首先,为了方便处理信息,我们先把目标检测信息和文字识别信息的绝对坐标转为行列,行列的具体数据结构是个二维数组,第一维是列,第二维是行。具体算法思路如下:

  • 将所有识别出的带有绝对坐标的框垂直排序。
  • 遍历垂直排序后的框,将同一行的框放到一个数组中并水平排序,作为一行。
  • 将所有行按先后顺序放到一个数组中,最终生成行列二维数组。

计算表单 / 表格布局

通过上述行列信息,我们可以计算出表单 / 表格的布局信息了。

先看表单,表单项的布局是二维的,与上述组件识别的行列信息一致,所以直接将组件识别行列信息通过嵌套循环 map 为表单协议即可。而表格则是一维的,只要表头就可以确定表格的结构了,那么我们直接从文字识别行列信息中提取第一行作为表头即可。

计算表单 / 表格字段值

计算完了布局,我们来算具体的字段值及其类型。

先看表单,表单字段的值就是 label 翻译为英文,并转为小驼峰。那么如何提取label 呢?根据常识我们知道表单项的 label 要么在左边,要么在上边,所以我们的算法就是:先提取左边的 label,没有的话,就提取上面的 label。

再看表格,表格字段就是表头,我们从文字识别行列信息中提取第一行即可拿到表头的所有值。为了保险起见,可以 doublecheck 一下,第一行是不是表头,比如通过长度来过滤,长度小于3的行就过滤掉了。

计算表单 / 表格的字段类型

由于表单项有 input、select、redio 等类型,表格有纯文本、链接等类型,所以我们还需要计算这些字段类型。

先看表单,表单字段类型从目标检测信息中拿,因为目标检测的任务之一就是为了提取表单项的类型。

再看表格,表格字段类型同样也是从目标检测信息中拿,不过由于表格每一列的类型都是相同的,所以我们只需要提取每一列的第一个类型即可。

计算表单 / 表格其他属性信息

上述信息基本上已经可以帮我们节约大量工作量了,但是如果还想提取更多的属性信息,可以使用如下办法:

  • 递归识别:比如,识别出一个 input 之后,将其剪裁出来,递归到另一个模型中识别,比如可以识别是否是 disabled,是否必选等等。
  • 继续提取其他位置的文字信息:比如表单项中间的可能是 placeholder 或者defaultValue。

未来展望

逍遥子在今年的云栖大会说过,大数据和算力是数字经济时代的石油和发动机。当前在前端行业,组件化已经初具规模,海量的组件可以作为大数据,同时,业界算力也在不断提升,人工智能技术有很大可能性会改变前端开发的格局,让我们拭目以待。

相关文章
|
15天前
|
前端开发 JavaScript 开发者
利用代码分割优化前端性能:高级技巧与实践
【10月更文挑战第2天】在现代Web开发中,代码分割是优化前端性能的关键技术,可显著减少页面加载时间。本文详细探讨了代码分割的基本原理及其实现方法,包括自动与手动分割、预加载与预取、动态导入及按需加载CSS等高级技巧,旨在帮助开发者提升Web应用性能,改善用户体验。
|
16天前
|
JavaScript 前端开发 数据安全/隐私保护
前端技术分享:使用Vue.js构建响应式表单
【10月更文挑战第1天】前端技术分享:使用Vue.js构建响应式表单
|
1月前
|
前端开发 数据安全/隐私保护
【前端web入门第二天】03 表单-下拉菜单 文本域 label标签 按钮 【附注册信息综合案例】
本文档详细介绍了HTML表单的多种元素及其用法,包括下拉菜单(`<select>` 和 `<option>`)、文本域(`<textarea>`)、标签解释(`<label>`)、各类按钮(`<button>`)及表单重置功能、无语义布局标签(`<div>` 和 `<span>`)以及字符实体的应用。此外,还提供了一个完整的注册信息表单案例,涵盖个人信息、教育经历和工作经历等部分,展示了如何综合运用上述元素构建实用的表单。
【前端web入门第二天】03 表单-下拉菜单 文本域 label标签 按钮 【附注册信息综合案例】
|
24天前
|
前端开发 小程序 JavaScript
信前端里的循环显示如何编写代码?
信前端里的循环显示如何编写代码?
60 5
|
5天前
|
前端开发 JavaScript API
前端基于XLSX实现数据导出到Excel表格,以及提示“文件已经被损坏,无法打开”的解决方法
前端基于XLSX实现数据导出到Excel表格,以及提示“文件已经被损坏,无法打开”的解决方法
33 0
|
1月前
|
缓存 前端开发 数据可视化
前端基础(七)_表单的基本组成与使用
本文详细介绍了HTML表单的基本组成和使用,包括`<form>`标签、`<input>`表单域、`<select>`下拉列表、`<textarea>`多行文本域等元素。文章解释了表单的提交方式(GET和POST)、表单域的各种类型(文本、密码、单选按钮、复选框等)、提交按钮和重置按钮的作用,以及如何通过`<label>`标签提高表单的可访问性。此外,还讨论了表单元素的属性,如`readonly`、`disabled`、`maxlength`等。
18 1
|
1月前
|
前端开发 程序员
【前端web入门第二天】01 html语法实现列表与表格_合并单元格
本文介绍了HTML中的列表与表格的使用方法。列表包括无序列表(`&lt;ul&gt;`嵌套`&lt;li&gt;`)、有序列表(`&lt;ol&gt;`嵌套`&lt;li&gt;`)和定义列表(`&lt;dl&gt;`嵌套`&lt;dt&gt;`和`&lt;dd&gt;`)。
52 19
|
1月前
|
机器学习/深度学习 数据采集 JavaScript
ADR智能监测系统源码,系统采用Java开发,基于SpringBoot框架,前端使用Vue,可自动预警药品不良反应
ADR药品不良反应监测系统是一款智能化工具,用于监测和分析药品不良反应。该系统通过收集和分析病历、处方及实验室数据,快速识别潜在不良反应,提升用药安全性。系统采用Java开发,基于SpringBoot框架,前端使用Vue,具备数据采集、清洗、分析等功能模块,并能生成监测报告辅助医务人员决策。通过集成多种数据源并运用机器学习算法,系统可自动预警药品不良反应,有效减少药害事故,保障公众健康。
ADR智能监测系统源码,系统采用Java开发,基于SpringBoot框架,前端使用Vue,可自动预警药品不良反应
|
1月前
|
前端开发 数据安全/隐私保护
【前端web入门第二天】02 表单-input标签-单选框-多选框
本文介绍了HTML中`&lt;input&gt;`标签的基本使用方法及其应用场景,如登录、注册页面和搜索区域。通过设置`type`属性,可以实现文本框、密码框、单选框、多选框及文件上传等功能。此外,还详细说明了占位文本的使用、单选框的常用属性及多选框的默认选中状态,并提供了示例代码与效果展示。
|
1月前
|
前端开发
前端使用xlsx模板导出表格
【9月更文挑战第10天】在前端使用 `xlsx` 模板导出表格需完成以下步骤:首先引入 `xlsx` 库,准备数据与模板;接着读取模板文件,选择特定工作表并填充数据;最后将填充后的表格转换为二进制数据,创建 Blob 对象并触发下载。整个过程中可根据需求调整模板格式和数据填充方式。