产品概述
文档智能(Document Mind)是阿里云基于多年技术积累打造的一款多模态文档识别与理解引擎。由达摩院提供智能服务,依托先进的文档智能预训练技术,旨在将非结构化文档高效解析为结构化数据,以满足企业在多样化文档处理方面的需求。并于今年8月率先通过中国信通院权威评测,获得“可信AI认证”,在技术能力、产品能力、应用能力三项上均获得最高的5级评价。它具备如下核心功能:
- 文档解析与结构化输出
- 文档智能能够处理多种格式的文档,如PDF、Word、Excel、图片等,并准确识别其中的文字、表格、图片等元素。
- 通过先进的算法,文档智能能够将识别出的元素进行结构化处理,以层级树、版面信息等形式呈现,方便用户进一步分析和利用。
- 多模态识别与理解
- 文档智能不仅限于文字识别,还综合运用自然语言处理、图像处理等多种技术,实现对各类非结构化和半结构化文档的智能自动化处理。
- 用户无需手动处理复杂的文档内容,只需简单操作即可完成文档解析和信息提取工作。
- 文档格式转换
- 文档智能支持多种文件格式的转换,如PDF转Word、图片转Excel等,进一步满足了用户的多样化需求。
- 在转换过程中,文档智能能够尽量保持原文档的格式和样式,提高转换质量。
- 自定义场景与API接口
- 用户可以根据自身使用需要,选择合适的产品能力,并通过API接口调用文档智能服务,实现与现有系统的无缝对接。
- 文档智能提供了丰富的API接口和SDK,方便用户将服务集成到自己的系统中,提升整体工作效率。
拥有如下核心优势:
- 高精度识别:文档智能在处理各类文档时表现出了较高的识别精度,能够准确识别文档中的文字、表格、图片等元素,并正确解析其位置和关系。
- 高效处理:文档智能能够快速响应并处理大量文档,提高整体工作效率。
- 稳定性强:在测试和使用过程中,文档智能表现出了较高的稳定性,没有出现崩溃或异常退出的情况。
- 易于集成:文档智能提供了丰富的API接口和SDK,方便用户将服务集成到自己的系统中,降低了集成难度和成本。
产品体验
开通试用
从上述的产品概述来看,文档智能包含两个大功能,一个是文档理解,一个是格式转换。本次体验将着重阐述其文档解析(大模型版)。
由于当前产品尚处在公测阶段,所以开通试用会有免费额度可享。点击文档解析(大模型版)即可前往产品的管理控制台,点击立即开通即可。
在接下来的开通页面勾选协议,点击立即开通。
完成开通后,来到管理控制台首页,可以看到开通能力总数有5个。
可以点击详情,进一步查看到免费的额度,文档解析(大模型版)有3000页的调用量。
回到文档解析(大模型版)管理控制台,即可开始体验文档解析功能了,官网提供了两种体验方式,一种是直接上传文档,一种就是通过API调用。下面将逐个进行体验。
手动上传
点击上传文档,支持拖拽和点选。
上传文档的格式、页数有要求,文档大小不超过100MB、页数不超过100页,如果是图片格式,大小不超过10MB,否则会触发异常。支持的格式如下:
- .png/.jpg/.jpeg/.bmp/.gif
- .pdf (支持扫描页)
- .doc/.docx/.rtf/.docm
- .pptx/.ppt
- .xlsx/.xls
- .txt/.epub/.mobi
- .md/.html
这里我上传了一张图片文档,解析的效果如下:
单从效果上来看,100分的话本轮可以打85分,扣分点出现在并没有将图片上的文字全部识别出来,二是出现了识别的重复内容。
我再次上传了一张PDF格式的电子发票,识别效果如下:
可以看到对于文字部分基本全部实现了识别,而对于图章这块,也是识别成了单独的图文格式,还是挺友好的。
再次上传一个PDF格式的电子图书,识别效果如下:
可以非常直观地看到,文字部分可以基本实现识别,图片部分也是非常精准地实现了识别。这个特性对于创作者来说还是非常实用且必要的。
API调用
如果你是开发者,需要调用文档智能服务,官网友好地提供了API使用指南,点击即可前往。API使用指南
文档解析(大模型版)接口可进行通用文档抽取和理解,从文档中提取出文本markdown内容等。
接口调用步骤:
文档解析(大模型版)接口为异步接口,需要先调用文档解析异步提交服务SubmitDocParserJob接口进行异步任务提交,然后调用文档解析(大模型版)状态查询服务QueryDocParserStatus接口进行处理状态查询,最后根据处理状态,调用GetDocParserResult接口进行结果查询。
- 使用本地文档提交异步任务
import com.aliyun.docmind_api20220711.models.*;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.docmind_api20220711.Client;
import com.aliyun.teautil.models.RuntimeOptions;
import java.io.File;
import java.io.FileInputStream;
public static void submit() throws Exception {
// 调用接口时,程序直接访问凭证,读取您的访问密钥(即AccessKey)并自动完成鉴权。
// 运行本示例前,请先完成步骤二:配置身份认证。
// 本示例使用默认配置文件方式,通过配置Credentials文件创建默认的访问凭证。
// 使用默认凭证初始化Credentials Client。
com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client();
Config config = new Config()
// 通过Credentials获取配置中的AccessKey ID。
.setAccessKeyId(credentialClient.getAccessKeyId())
// 通过Credentials获取配置中的AccessKey Secret。
.setAccessKeySecret(credentialClient.getAccessKeySecret());
// 访问的域名,支持IPv4和IPv6两种方式,IPv6请使用docmind-api-dualstack.cn-hangzhou.aliyuncs.com。
config.endpoint = "docmind-api.cn-hangzhou.aliyuncs.com";
Client client = new Client(config);
// 创建RuntimeObject实例并设置运行参数。
RuntimeOptions runtime = new RuntimeOptions();
// 替换成具体异步任务提交类API接口的入参和方法,示例方法是文档智能解析。
SubmitDocStructureJobAdvanceRequest advanceRequest = new SubmitDocStructureJobAdvanceRequest();
File file = new File("D:\\example.pdf");
advanceRequest.fileUrlObject = new FileInputStream(file);
advanceRequest.fileName = "example.pdf";
// 4 发起请求并处理应答或异常。
SubmitDocStructureJobResponse response = client.submitDocStructureJobAdvance(advanceRequest, runtime);
}
- 传入文档URL提交任务
import com.aliyun.docmind_api20220711.models.*;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.docmind_api20220711.Client;
public static void submit() throws Exception {
// 调用接口时,程序直接访问凭证,读取您的访问密钥(即AccessKey)并自动完成鉴权。
// 运行本示例前,请先完成步骤二:配置身份认证。
// 本示例使用默认配置文件方式,通过配置Credentials文件创建默认的访问凭证。
// 使用默认凭证初始化Credentials Client。
com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client();
Config config = new Config()
// 通过Credentials获取配置中的AccessKey ID。
.setAccessKeyId(credentialClient.getAccessKeyId())
// 通过Credentials获取配置中的AccessKey Secret。
.setAccessKeySecret(credentialClient.getAccessKeySecret());
// 访问的域名,支持IPv4和IPv6两种方式,IPv6请使用docmind-api-dualstack.cn-hangzhou.aliyuncs.com。
config.endpoint = "docmind-api.cn-hangzhou.aliyuncs.com";
Client client = new Client(config);
// 替换成具体异步任务提交类API接口的入参和方法,示例方法是文档智能解析。
SubmitDocStructureJobRequest request = new SubmitDocStructureJobRequest();
request.fileName = "example.pdf";
request.fileUrl = "https://example.com/example.pdf";
SubmitDocStructureJobResponse response = client.submitDocStructureJob(request);
}
- 调用查询服务QueryDocParserStatus接口
import com.aliyun.docmind_api20220711.models.*;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.docmind_api20220711.Client;
public static void submit() throws Exception {
// 使用默认凭证初始化Credentials Client。
com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client();
Config config = new Config()
// 通过credentials获取配置中的AccessKey ID
.setAccessKeyId(credentialClient.getAccessKeyId())
// 通过credentials获取配置中的AccessKey Secret
.setAccessKeySecret(credentialClient.getAccessKeySecret());
// 访问的域名,支持ipv4和ipv6两种方式,ipv6请使用docmind-api-dualstack.cn-hangzhou.aliyuncs.com
config.endpoint = "docmind-api.cn-hangzhou.aliyuncs.com";
Client client = new Client(config);
QueryDocParserStatusRequest resultRequest = new QueryDocParserStatusRequest();
resultRequest.id = "docmind-20220902-824b****";
QueryDocParserStatusResponse response = client.queryDocParserStatus(resultRequest);
}
- 调用GetDocParserResult接口
import com.aliyun.docmind_api20220711.models.*;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.docmind_api20220711.Client;
public static void submit() throws Exception {
// 使用默认凭证初始化Credentials Client。
com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client();
Config config = new Config()
// 通过credentials获取配置中的AccessKey ID
.setAccessKeyId(credentialClient.getAccessKeyId())
// 通过credentials获取配置中的AccessKey Secret
.setAccessKeySecret(credentialClient.getAccessKeySecret());
// 访问的域名,支持ipv4和ipv6两种方式,ipv6请使用docmind-api-dualstack.cn-hangzhou.aliyuncs.com
config.endpoint = "docmind-api.cn-hangzhou.aliyuncs.com";
Client client = new Client(config);
GetDocParserResultRequest resultRequest = new GetDocParserResultRequest();
resultRequest.id = "docmind-20220902-824b****";
resultRequest.layoutStepSize = 10;
resultRequest.layoutNum = 0;
GetDocParserResultResponse response = client.getDocParserResult(resultRequest);
}
对比分析
从日常工作能够使用到的文档处理应用来分析,对比维度如下:
维度 | 文档智能(Document Mind) | 金山文档 | Azure 文档智能 | AI材料星 | 百度文库AI助手 | WPS AI |
---|---|---|---|---|---|---|
开发商 | 阿里巴巴达摩院 | 金山办公 | Microsoft Azure | 西安筷子帮信息科技有限公司 | 百度 | 金山办公软件 |
主要功能 | 多模态文档识别与理解,文档格式转换 | 在线文档编辑,协作办公,WPS AI | 智能文档处理解决方案,数据提取 | AI辅助公文写作 | AI写作、总结、PPT生成等 | 智能写作、纠错、分析、推荐 |
适用场景 | 文档识别,格式转换,智能处理 | 团队协作,在线编辑,文档分享 | 表单和文档数据提取,智能处理 | 公文写作,体制内办公 | 工作、学习、生活全方位支持 | 办公文档写作、编辑、分析 |
平台支持 | 网页端,小程序、支持API集成 | 多端同步(电脑、手机、平板),小程序 | 云端服务,支持REST API | 苹果App Store | 多平台支持 | WPS办公软件内集成 |
智能特性 | 文档理解,表格解析,文档抽取 | AI生成内容,智能润色,翻译等 | 自定义模型,预生成模型 | AI公文写作模型,文章纠错 | AI写作建议,PPT生成 | 智能写作框架,实时纠错 |
数据安全 | 提供加密存储,安全策略 | 加密存储,权限控制 | Azure云服务安全标准 | 依托第三方 | 依托百度安全体系 | 加密存储,权限设置 |
用户群体 | 企业用户,需要文档智能处理的场景 | 个人及企业用户,团队协作 | 需要智能文档处理解决方案的企业 | 体制内公文写作用户 | 广泛用户群体,包括职场、学生等 | WPS办公软件用户 |
定制化能力 | 可能通过API实现定制化 | 模板库,但定制化能力有限 | 自定义模型训练,高度定制化 | 针对公文写作的定制化功能 | 一定的定制化服务 | 模板、素材推荐,但定制化有限 |
价格 | 根据服务开通情况收费 | 免费及付费功能 | 根据使用量和模型复杂度收费 | 根据会员等级区分功能使用 | 根据会员等级区分功能使用 | 包含在WPS办公软件内,或有额外付费功能 |
从表格上对比可以很直观看出,文档智能(Document Mind)不仅能够实现基本文档的识别,依托大模型平台还可以进行多模态理解,多维度上都领先于当下市面上其他文档处理应用。
体验总结
文档AI是OCR技术的进一步升级。传统OCR主要针对固定版式下的文字识别,难以应对复杂情况。文档AI能够分析各种随机版式,识别文档中的层级和结构关系,甚至理解复杂的表格。由于任务复杂多样,文档AI一直是业界公认的高难度技术之一。精准、快速的信息处理对于企业数字化转型至关重要。企业需要对图片、PDF、Word、Excel等多种格式的文档进行处理,不仅耗费大量人力,准确率也有限,影响了企业的高效办公。
阿里云文档智能平台提供了文档版面分析、文档图像分类、文档表格理解、文档信息抽取、文档智能翻译、文档视觉问答等一站式解决方案。可应用于多格式、多版式、多语言的复杂文档场景,包括企业财务报表、采购单据、招投标公告、判决书、产品说明书、进出口报关单、订舱委托书、物流运单等。为了满足多样化的需求,平台提供了零门槛的自学习训练工具,让企业人员无需算法经验,只需标注少量数据就能调优,训练出自己专属的文档AI。该平台还能与企业内部应用程序打通,支持和RPA、BPM等互补技术集成,减少重新配置部署、协作集成的麻烦,有助于加速业务流程的自动化。
(1)针对本次体验,不论是开发者社区还是官方文档都为用户提供了丰富的资源和指导。但对于一个成熟的产品来说,我觉得还欠缺如下部分内容:
- 缺乏必要案例:提供案例可以非常好地让用户直观地了解产品在实际应用中的效果和价值,更好地理解和应用产品的功能。
- 缺乏视频教程:通过视频类互动式教程,用户可以逐步了解产品的功能和操作方法,而无需阅读大量的文字文档。
- 缺乏在线实验:文档智能作为文档AI的重磅产品,其涉及的产品功能会很多,可以提供典型产品功能在线实验,让用户边动手边学习。
(2)提供的SDK和API接口设计合理,易于集成。对文档的解析速度也非常理想,从实际体验来看,一个80页的文档解析耗时也就32秒,且解析效果非常好。这对于需要大量处理文档的用户来说,办公效率将大大提升。不足的一点就是对于固有格式的处理欠缺,比如表格类元素,这些都是用户希望能够准确识别并保留的。
(3)针对大模型建设的场景,从体验来看,我觉得可以改善的点有如下:
- 提高模型泛化能力:增加训练数据的多样性和复杂性,以及采用更先进的模型架构来提升泛化能力,从而从容应对更加复杂或者特殊格式。
- 增加智能标注和分类:希望产品能够增加智能标注和分类功能,自动为解析后的文档内容添加标签或分类信息。这样可以让用户更快地找到所需的信息,提高信息检索的效率和准确性。
- 提升跨文档处理能力:在处理多个相关文档时,希望产品能够支持跨文档信息融合,将不同文档中的相关信息进行关联和整合。让用户更好地理解文档之间的关系和上下文,提高信息理解和应用的深度。
- 增加解析后的文档下载方式:当前对于解析后的文档,仅提供了Json格式的,可复制使用。希望后期可以提供更多样地文档格式供下载。
(4)我觉得可以与文档智能联动的产品组合有如下:
- 与钉钉、企业微信等办公协同软件联动:将文档解析-大模型版与钉钉、企业微信等办公协同软件联动。用户可以在办公协同软件中直接上传文档,并通过文档解析-大模型版进行解析和处理。解析结果可以实时共享给团队成员,实现协同办公。
- 与人工智能和机器学习联动:将文档解析-大模型版与阿里云NLP(自然语言处理)产品联动。解析后的文档内容可以直接输入到NLP产品中,进行进一步的处理和分析;将文档解析-大模型版与阿里云PAI(机器学习平台)等机器学习产品联动。解析后的文档数据可以作为训练数据输入到机器学习模型中,进行模型训练和预测。
- 与数据库产品联动:将文档解析-大模型版与阿里云RDS(关系型数据库服务)、MongoDB等数据库产品联动。解析后的数据可以直接导入数据库,进行结构化存储和查询。
- 与存储产品联动:将文档解析-大模型版与阿里云OSS(对象存储服务)等云存储产品联动。用户可以将文档上传到OSS,然后通过文档解析-大模型版进行解析和处理。
此外,还可以与企业自身的流程管理或者企业规划系统进行联动,将解析后的文档结果可以作为业务流程的输入或输出,实现业务流程的自动化和智能化管理;或者作为ERP系统的输入数据,用于资源规划、生产计划、库存管理等方面。