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

本文涉及的产品
票证核验,票证核验 50次/账号
文档理解,结构化解析 100页
车辆物流识别,车辆物流识别 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。

未来展望

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

相关文章
|
6月前
|
人工智能 自然语言处理 前端开发
DeepSite:基于DeepSeek的开源AI前端开发神器,一键生成游戏/网页代码
DeepSite是基于DeepSeek-V3模型的在线开发工具,无需配置环境即可通过自然语言描述快速生成游戏、网页和应用代码,并支持实时预览效果,显著降低开发门槛。
1226 93
DeepSite:基于DeepSeek的开源AI前端开发神器,一键生成游戏/网页代码
|
11月前
|
缓存 前端开发 JavaScript
利用代码分割优化前端性能:策略与实践
在现代Web开发中,代码分割是提升页面加载性能的有效手段。本文介绍代码分割的概念、重要性及其实现策略,包括动态导入、路由分割等方法,并探讨在React、Vue、Angular等前端框架中的具体应用。
|
5月前
|
自然语言处理 前端开发 IDE
用通义灵码全新智能体+MCP实现从设计稿到前端代码,个人免费用
通义灵码全新升级,发布国内首个支持“自主决策+工具链闭环”的编程智能体,面向个人免费!新增功能包括智能体模式、混合推理模型Qwen3支持、全面集成MCP中文社区(涵盖2400+服务)及长期记忆能力。用户可通过IDE插件使用,兼容主流开发环境如JetBrains、VS Code和Visual Studio。教程展示如何将MasterGo设计稿转化为前端代码,简化开发流程。探索链接:[通义灵码官网](https://lingma.aliyun.com/)。
|
6月前
|
前端开发 JavaScript 安全
|
10月前
|
缓存 监控 前端开发
探索前端性能优化:关键策略与代码实例
本文深入探讨前端性能优化的关键策略,结合实际代码示例,帮助开发者提升网页加载速度和用户体验,涵盖资源压缩、懒加载、缓存机制等技术。
|
12月前
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
894 14
|
12月前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
237 0
|
12月前
|
人工智能 自然语言处理 运维
前端大模型应用笔记(一):两个指令反过来说大模型就理解不了啦?或许该让第三者插足啦 -通过引入中间LLM预处理用户输入以提高多任务处理能力
本文探讨了在多任务处理场景下,自然语言指令解析的困境及解决方案。通过增加一个LLM解析层,将复杂的指令拆解为多个明确的步骤,明确操作类型与对象识别,处理任务依赖关系,并将自然语言转化为具体的工具命令,从而提高指令解析的准确性和执行效率。
358 6
|
SpringCloudAlibaba JavaScript 前端开发
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
分布式组件、nacos注册配置中心、openfegin远程调用、网关gateway、ES6脚本语言规范、vue、elementUI
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
|
12月前
|
存储 弹性计算 算法
前端大模型应用笔记(四):如何在资源受限例如1核和1G内存的端侧或ECS上运行一个合适的向量存储库及如何优化
本文探讨了在资源受限的嵌入式设备(如1核处理器和1GB内存)上实现高效向量存储和检索的方法,旨在支持端侧大模型应用。文章分析了Annoy、HNSWLib、NMSLib、FLANN、VP-Trees和Lshbox等向量存储库的特点与适用场景,推荐Annoy作为多数情况下的首选方案,并提出了数据预处理、索引优化、查询优化等策略以提升性能。通过这些方法,即使在资源受限的环境中也能实现高效的向量检索。
462 1