基于 ERNIELayout&pdfplumber-UIE 的多方案学术论文信息抽取
本项目链接:https://aistudio.baidu.com/aistudio/projectdetail/5196032?contributionType=1基于 ERNIELayout&pdfplumber-UIE 的多方案学术论文信息抽取,小样本能力强悍,OCR、版面分析、信息抽取一应俱全。
0.问题描述
可以参考 issue: ERNIE-Layout 在(人名和邮箱)信息抽取的诸多问题阐述#4031
ERNIE-Layout 因为看到功能比较强大就尝试了一下,但遇到信息抽取错误,以及抽取不全等问题
使用 PDFPlumber 库和 PaddleNLP UIE 模型抽取,遇到问题:无法把姓名和邮箱一一对应。
1.基于 ERNIE-Layout 的 DocPrompt 开放文档抽取问答模型
ERNIE-Layout 以文心文本大模型 ERNIE 为底座,融合文本、图像、布局等信息进行跨模态联合建模,创新性引入布局知识增强,提出阅读顺序预测、细粒度图文匹配等自监督预训练任务,升级空间解偶注意力机制,在各数据集上效果取得大幅度提升,相关工作 ERNIE-Layout: Layout-Knowledge Enhanced Multi-modal Pre-training for Document Understanding 已被 EMNLP 2022 Findings 会议收录[1]。考虑到文档智能在多语种上商用广泛,依托 PaddleNLP 对外开源业界最强的多语言跨模态文档预训练模型 ERNIE-Layout。
支持:
发票抽取问答
海报抽取
网页抽取
表格抽取
长文档抽取
多语言票据抽取
同时提供 pipelines 流水线搭建
更多参考官网,这里就不展开了
ERNIE-Layout GitHub 地址:https://github.com/PaddlePaddle/PaddleNLP/tree/develop/model_zoo/ernie-layout
Hugging Face 网页版:https://huggingface.co/spaces/PaddlePaddle/ERNIE-Layout
可以看到效果不好,多个实体不能一同抽取,需要构建成单个问答,比如姓名和邮箱分开抽取,尝试构造合理的开放式 prompt。
小技巧
Prompt 设计:在 DocPrompt 中,Prompt 可以是陈述句(例如,文档键值对中的 Key),也可以是疑问句。因为是开放域的抽取问答,DocPrompt 对 Prompt 的设计没有特殊限制,只要符合自然语言语义即可。如果对当前的抽取结果不满意,可以多尝试一些不同的 Prompt。
支持的语言:支持本地路径或者 HTTP 链接的中英文图片输入,Prompt 支持多种不同语言,参考以上不同场景的例子。
可以看出得到的效果不是很好,比较玄学,原因应该就是 ocr 识别对应姓名人名准确率相对不高,无法全部命中;并且无法一一对应。
这块建议看看 paddleocr 具体实现步骤,研究一下在看看怎么处理。
下面讲第二种方法
2.基于 PDFplumber-UIE 信息抽取
2.1 PDF 文档解析(pdfplumber 库)
安装 PDFPlumber!pip install pdfplumber --user
官网链接:https://github.com/jsvine/pdfplumber
pdf 的文本和表格处理用多种方式可以实现, 本文介绍 pdfplumber 对文本和表格提取。这个库在 GitHub 上 stars:3.3K 多,使用起来很方便, 效果也很好,可以满足对 pdf 中信息的提取需求。
pdfplumber.pdf 中包含了.metadata 和.pages 两个属性。
metadata 是一个包含 pdf 信息的字典。
pages 是一个包含 pdfplumber.Page 实例的列表,每一个实例代表 pdf 每一页的信息。
每个 pdfplumber.Page 类:pdfplumber 核心功能,对 PDF 的大部分操作都是基于这个类,类中包含了几个主要的属性:文本、表格、尺寸等
page_number 页码
width 页面宽度
height 页面高度
objects/.chars/.lines/.rects 这些属性中每一个都是一个列表,每个列表都包含一个字典,每个字典用于说明页面中的对象信息, 包括直线,字符, 方格等位置信息。
一些常用的方法
extract_text() 用来提页面中的文本,将页面的所有字符对象整理为的那个字符串
extract_words() 返回的是所有的单词及其相关信息
extract_tables() 提取页面的表格
2.1.1 pdfplumber 简单使用
!pip install xlwt
更多功能(表格读取,图片提取,可视化界面)可以参考官网或者下面链接:
https://blog.csdn.net/fuhanghang/article/details/122579548
2.1.2 学术论文特定页面文本提取
发表论文作者信息通常放在论文首页的脚末行或参考文献的后面,根据这种情况我们可以进行分类(只要获取作者的邮箱信息即可):
第一种国外论文:首页含作者相关信息 or 首页是封面第二页才是作者信息 【获取前 n 页即可,推荐是 2 页】
第二种国内论文:首页含作者信息(邮箱等)在参考文献之后会有各个做的详细信息,比如是职位,研究领域,科研成果介绍等等 【获取前 n 页和尾页,推荐是 2 页+尾页】
这样做的好处在于两个方面:
节约了存储空间和数据处理时间
节约资源消耗,在模型预测时候输入文本数量显著减少,在数据面上加速推理
针对 1 简单阐述:PDF 原始大小 614.1KB
针对二:以下 6 中方案提速不过多赘述,可以参考下面项目
模型选择 uie-mini 等小模型预测,损失一定精度提升预测效率
UIE 实现了 FastTokenizer 进行文本预处理加速
fp16 半精度推理速度更快
UIE INT8 精度推理
UIE Slim 数据蒸馏
SimpleServing 支持支持多卡负载均衡预测
UIE Slim 满足工业应用场景,解决推理部署耗时问题,提升效能!:https://aistudio.baidu.com/aistudio/projectdetail/4516470?contributionType=1
之后有时间重新把 paddlenlp 技术路线整理一下
2.2 UIE 信息抽取(论文作者和邮箱)
2.2.1 零样本抽取
2.3 长文本的答案获取
UIE 对于词和句子的抽取效果比较好,但是对应大段的文字结果,还是需要传统的正则方式作为配合,在本次使用的 pdf 中,还需要获得法院具体的判决结果,使用正则表达式可灵活匹配想要的结果。
2.4 正则提升效果
对于长文本,可以根据关键词进行分割后抽取,但是对于多个实体,比如这篇公告中,通过的多个议案,就无法使用 UIE 抽取。
4.总结
本项目提供了基于 ERNIELayout&PDFplumber-UIEX 多方案学术论文信息抽取,有兴趣同学可以研究一下 UIE-X。
UIE-X 延续 UIE 的思路,基于跨模态布局增强预训练模型文心 ERNIE-Layout 重训模型,融合文本、图像、布局等信息进行联合建模,能够深度理解多模态文档。基于 Prompt 思想,实现开放域信息抽取,支持零样本抽取,小样本能力领先.
版权声明: 本文为 InfoQ 作者【汀丶】的原创文章。
原文链接:【http://xie.infoq.cn/article/6d8ff98cdc9adbfcb9880ad12】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论