一张纸质文档上的文字内容如何提取出来?拍照,对照片使用光学字符识别(OCR)软件进行识别,很容易就可以搞定。
然而,同样一张纸质文档上的文字,如何让计算机程序理解其中所包含的内容?单凭OCR就不行了,这时候需要用到自然语言处理和实体提取技术。
Amazon Textract是一项机器学习(ML)服务,能够轻松从各类文档扫描件中提取文本与数据。Textract超越了简单的OCR来识别表单中的字段内容和表中存储的信息。基于此,大家可以使用Amazon Textract即时「读取」几乎任何类型的文档,并在无需任何人工或代码编写的前提下准确提取其中的文本与数据。
Amazon Textract在各个领域中拥有诸多实际应用。例如,人才管理企业可以使用Amazon Textract对候选人的技能集进行自动化提取,医疗保健组织则可从文档中快速提取患者信息以满足医疗需求等。
在组织处理各类文档时,往往要求我们从文档中的非结构化文本处提取实体。例如,合同文档中可能包含大量文本段落,其中的名词与合同条款以自然语言形式直接列出,而非如表格数据般具有清晰的键/值或表单结构。Amazon Comprehend是一项自然语言处理(NLP)服务,能够从非结构化文本当中提取关键性短语、地点、名称、组织、事件以及情感等。使用自定义实体识别,大家可以将并未预先受到支持的新实体类型划归至预设的通用实体类型当中,借此根据特定业务提取实体以满足实际需求。
在本文中,我们将展示如何使用Amazon Textract与Amazon Comprehend从文档扫描件中提取自定义实体。
用例概述
在本文中,我们将对Resume Entities for NER数据集中的简历文档进行处理,提取其中的实体,并尝试以自动化方式实现整个流程以获得多种洞察见解,例如候选人掌握的具体技能等。我们使用Amazon Textract从这些简历中提取文本,并使用Amazon Comprehend自定义实体功能,将亚马逊云科技 (Amazon Web Services)、C以及C++等技能识别为自定义实体。以下截屏所示,为示例输入文档。
以下截屏所示,为使用Amazon Textract与Amazon Comprehend生成的相应输出。
解决方案概述
下图所示,为一套无服务架构解决方案。该架构能够处理传入文档,使用Amazon Textract进行自定义实体提取,并使用Amazon Comprehend对自定义模型进行训练。在将文档上传至Amazon Simple Storage Service (Amazon S3) 存储桶时,即会触发对应的Amazon Lambda函数。该函数将调用Amazon Textract DetectDocumentText API以提取文本,并使用提取到的文本内容调用以进一步检测其中的自定义实体。
整个解决方案分为两个部分:
- 训练:
- 使用Amazon Textract从PDF文档中提取文本
- 使用Amazon SageMaker Ground Truth标记结果数据
- 使用Amazon Comprehend配合标记数据进行自定义实体识别训练
- 推理:
- 向Amazon Textract发送文档以进行数据提取
- 将提取到的数据发送至Amazon Comprehend自定义模型以进行实体提取
启动Amazon CloudFormation堆栈
在本文中,我们将使用Amazon CloudFormation堆栈部署解决方案,并创建方案中所需要的各项资源,具体包括S3存储桶、Amazon SageMaker实例以及必要的亚马逊云科技身份与访问管理(Amazon Identity and Access Management,简称IAM)角色。关于各栈的更多详细信息,请参阅演练:堆栈更新。
- 下载相应CloudFormation模板并将其保存在您的本地磁盘上。
- 使用IAM用户名与密码登录至亚马逊云科技管理控制台。
- 在Amazon CloudFormation控制台上,选择Create Stack。
或者也可以直接选择Launch Stack以启动该栈。
- 在Create Stack页面上,选择Upload a template file并上传我们之前下载完成的CloudFormation模板。
- 选择Next。
- 在下一页面中,为该堆栈输入名称。
- 其他各项皆保留默认设置。
- 在Review页面中,选择I acknowledge that Amazon CloudFormation might create IAM resources with custom names(我已知悉Amazon CloudFormation可能使用自定义名称创建IAM资源)。
- 选择Create stack。
- 等待该堆栈完成运行。
大家可以在Events选项卡的堆栈创建流程部分,检查各类事件。堆栈创建完成之后,请查看Resources选项卡以查看Amazon CloudFormation模板创建的所有资源。
- 在CloudFormation栈的Outputs选项卡部分,记录Amazon SageMaker实例URL。
在Jupyter notebook上运行工作流
要运行工作流,请完成以下操作步骤:
- 打开在上一步中保存的Amazon SageMaker实例URL。
- 在New下拉菜单中,选择Terminal。
- 在终端内,克隆GitHub cd Sagemaker; git clone URL。
到这里,将看到如以下截屏所示的文件夹结构。
- 打开Textract_Comprehend_Custom_Entity_Recognition.ipynb。
- 运行各Notebook单元。
代码演练
将所有文档上传至S3存储桶。
现在各PDF已经准备就绪,可供Amazon Textract执行OCR处理。通过StartDocumentTextDetection异步API调用启动处理流程。
在本文中,我们受篇幅所限,仅展示两份PDF格式的简历。如果需要,可以使用全部220份简历。我们已经将所有简历处理完成,供您直接参考。
要使用Amazon Comprehend训练自定义实体识别模型,那么与任何模型训练工作一样,训练数据都是必不可少的前提条件。在本文中,我们使用Ground Truth标记我们的实体。在默认情况下,Amazon Comprehend能够识别诸如人员、职务以及组织之类的实体。关于更多详细信息,请参阅检测实体。为了展示自定义实体识别功能,我们将重点关注简历中的候选人技能实体。Ground Truth已经提供充足的标记数据,大家可以通过GitHub repo直接获取这部分数据(详见enity_list.csv文件)。关于标记数据的操作说明,请参阅使用Amazon SageMaker Ground Truth与Amazon Comprehend开发NER模型。
现在,我们已经掌握了原始数据与标记数据,可以开始训练模型了。要启动此流程,可使用create_entity_recognizer API 调用。提交训练作业之后,可以在Amazon Comprehend控制台上看到正在训练的识别器。
在训练过程中,Amazon Comperhend会保留一部分数据作为测试素材。在识别器训练完成之后,大家还可以查看各实体的识别性能以及识别器自身的整体性能水平。
我们准备了部分文本样本,用于测试刚刚训练完成的自定义实体识别器。我们通过相同的步骤执行OCR,而后将Amazon Textract输出上传至Amazon S3,并启动自定义识别器作业。
在提交作业后,可以在Amazon Comprehend控制台的Analysis Jobs之下查看分析进度。
分析作业完成后,可以下载输出并查看结果。在本文的示例中,我们将JSON结果转换为表格形式以提高可读性。
总结
机器学习与人工智能能够极大提升组织的敏捷水平,将原本只能手动完成的任务转为自动化流程,借此增强执行效率。在本文中,我们演示了一套端到端架构,可通过Amazon Textract与Amazon Comprehend提取候选人技能等自定义实体。本文还将大家讲解了如何使用Amazon Textract进行数据提取,以及如何使用Amazon Comprehend通过自有数据集训练自定义实体识别器,并借此实现自定义实体识别。这一流程可以广泛应用于各个行业,例如医疗保健与金融服务等。
要了解关于Amazon Textract提供的各项文本与数据提取功能的更多详细信息,请参阅Amazon Textract工作原理解读。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。