征服PDF:超越纯文本的文档理解
如果所有数据都以干净、清晰的纯文本形式出现,那么自然语言处理和数据科学将会非常简单。然而在实际应用中,大量数据隐藏在PDF、Word文档、扫描件和其他格式中,处理这些格式一直是个难题。本次演讲将介绍一种新的模块化方法,用于构建鲁棒的文档理解系统,该方法利用最先进的模型和强大的Python生态系统。将展示如何从PDF转换到结构化数据,甚至为特定用例构建完全定制化的信息提取流水线。
在实践示例中,将使用spaCy、新的Docling库以及布局分析模型。内容还将涵盖用于图像文本的光学字符识别技术、如何将表格数据转换为pandas DataFrame,以及为信息提取任务创建训练和评估数据的策略,这些任务包括使用PDF和其他文档作为输入进行文本分类和实体识别。
资源与工具
- 博文:从PDF到AI就绪的结构化数据:深入探讨
- 链接:基于此演讲的博文,介绍了如何为行业用例构建端到端的文档理解和信息提取流水线。
- Docling
- 链接:用于处理PDF、Word文档及类似格式的开源库和模型,包含布局分析、OCR和表格结构识别功能。
- spaCy Layout
- 链接:用于使用spaCy处理PDF、Word文档等的开源库和插件,由Docling驱动。
- Prodigy PDF
- 链接:Prodigy标注工具的插件,包含基于图像和基于文本的PDF标注方案。
- Docling技术报告
- 链接:Auer等人,2024年。
- TableFormer:使用Transformers进行表格结构理解
- 链接:Nassar等人,2022年。
- 人机交互提炼实用指南
- 链接:关于如何在现实世界应用中使用最新的先进模型,并将其知识提炼成更小、更快、可在内部运行和维护的组件的实用解决方案。
核心内容与技术方法
- 挑战:企业通常需要与纸质文件1:1映射的电子副本,数据往往“在PDF里”或“在电脑上”。许多自然语言处理系统的核心由扁平分类组成。虽然许多分类任务现在已易于解决,但如果一个模型需要同时处理所有任务,复杂性会急剧增加。
- 解决方案:
- 统一结构格式:使用像DoclingDocument这样的统一结构格式(类似于spaCy的Doc对象)来早期地从PDF中提取数据。PDF本身不是一个可靠的数据源。
- 模块化处理:将文档处理与可独立开发的自然语言处理组件相结合。模块化是超级能力。
- 技术流程:
- 处理PDF等文档,创建包含基于文本的内容、文档布局、布局区块、区块类型、边界框、内容、词元和偏移量的spaCy Doc对象。
- 将自然语言处理流程应用于Doc对象,获取命名实体、词性标签、依存关系等信息。
- 利用布局信息,例如查找包含实体的布局区块、其边界框以及最近的标题。
- 利用TableFormer等模型进行表格结构理解,并将表格转换为pandas DataFrame,甚至可以自定义表格的文本表示。
- 实践工作流:
- 文档处理与标注:结合布局分析和自然语言处理。使用特定工具的命令进行PDF区块手动标注,可以指定标签和关注的区块类型,标注数据保存至数据集。
- 模型训练与评估:使用标注的数据集训练自然语言处理模型,并评估其性能。
- 部署应用:训练好的模型可应用于PDF处理流程,实现文档的规模化处理、模型应用以及最终的部署上线。
- 展望:布局分析模型正在持续变得更好、更快、更小!这仅仅是个开始。建议从一个统一的结构化格式开始工作,并尽可能早地将数据从PDF中提取出来。结合文档处理与可独立开发的自然语言处理组件,模块化是取得成功的关键。