基于ERNIELayout&UIE-X的多方案學(xué)術(shù)論文信息抽取

本項(xiàng)目鏈接:https://aistudio.baidu.com/aistudio/projectdetail/5196032?contributionType=1 基于ERNIELayout&pdfplumber-UIE的多方案學(xué)術(shù)論文信息抽取,小樣本能力強(qiáng)悍,OCR、版面分析、信息抽取一應(yīng)俱全。
具體代碼見(jiàn)項(xiàng)目鏈接
0.問(wèn)題描述
可以參考issue: ERNIE-Layout在(人名和郵箱)信息抽取的諸多問(wèn)題闡述#4031
ERNIE-Layout因?yàn)榭吹焦δ鼙容^強(qiáng)大就嘗試了一下,但遇到信息抽取錯(cuò)誤,以及抽取不全等問(wèn)題
使用PDFPlumber庫(kù)和PaddleNLP UIE模型抽取,遇到問(wèn)題:無(wú)法把姓名和郵箱一一對(duì)應(yīng)。
1.基于ERNIE-Layout的DocPrompt開(kāi)放文檔抽取問(wèn)答模型
ERNIE-Layout以文心文本大模型ERNIE為底座,融合文本、圖像、布局等信息進(jìn)行跨模態(tài)聯(lián)合建模,創(chuàng)新性引入布局知識(shí)增強(qiáng),提出閱讀順序預(yù)測(cè)、細(xì)粒度圖文匹配等自監(jiān)督預(yù)訓(xùn)練任務(wù),升級(jí)空間解偶注意力機(jī)制,在各數(shù)據(jù)集上效果取得大幅度提升,相關(guān)工作ERNIE-Layout: Layout-Knowledge Enhanced Multi-modal Pre-training for Document Understanding已被EMNLP 2022 Findings會(huì)議收錄[1]??紤]到文檔智能在多語(yǔ)種上商用廣泛,依托PaddleNLP對(duì)外開(kāi)源業(yè)界最強(qiáng)的多語(yǔ)言跨模態(tài)文檔預(yù)訓(xùn)練模型ERNIE-Layout。

支持:
發(fā)票抽取問(wèn)答
海報(bào)抽取
網(wǎng)頁(yè)抽取
表格抽取
長(zhǎng)文檔抽取
多語(yǔ)言票據(jù)抽取
同時(shí)提供pipelines流水線搭建
更多參考官網(wǎng),這里就不展開(kāi)了
ERNIE-Layout GitHub地址:https://github.com/PaddlePaddle/PaddleNLP/tree/develop/model_zoo/ernie-layout
Hugging Face網(wǎng)頁(yè)版:https://huggingface.co/spaces/PaddlePaddle/ERNIE-Layout
可以看到效果不好,多個(gè)實(shí)體不能一同抽取,需要構(gòu)建成單個(gè)問(wèn)答,比如姓名和郵箱分開(kāi)抽取,嘗試構(gòu)造合理的開(kāi)放式prompt。
小技巧
Prompt設(shè)計(jì):在DocPrompt中,Prompt可以是陳述句(例如,文檔鍵值對(duì)中的Key),也可以是疑問(wèn)句。因?yàn)槭情_(kāi)放域的抽取問(wèn)答,DocPrompt對(duì)Prompt的設(shè)計(jì)沒(méi)有特殊限制,只要符合自然語(yǔ)言語(yǔ)義即可。如果對(duì)當(dāng)前的抽取結(jié)果不滿意,可以多嘗試一些不同的Prompt。
支持的語(yǔ)言:支持本地路徑或者HTTP鏈接的中英文圖片輸入,Prompt支持多種不同語(yǔ)言,參考以上不同場(chǎng)景的例子。
可以看出得到的效果不是很好,比較玄學(xué),原因應(yīng)該就是ocr識(shí)別對(duì)應(yīng)姓名人名準(zhǔn)確率相對(duì)不高,無(wú)法全部命中;并且無(wú)法一一對(duì)應(yīng)。
這塊建議看看paddleocr具體實(shí)現(xiàn)步驟,研究一下在看看怎么處理。
下面講第二種方法
2.基于PDFplumber-UIE信息抽取
2.1 PDF文檔解析(pdfplumber庫(kù))
安裝PDFPlumber !pip install pdfplumber --user
官網(wǎng)鏈接:https://github.com/jsvine/pdfplumber
pdf的文本和表格處理用多種方式可以實(shí)現(xiàn), 本文介紹pdfplumber對(duì)文本和表格提取。這個(gè)庫(kù)在GitHub上stars:3.3K多,使用起來(lái)很方便, 效果也很好,可以滿足對(duì)pdf中信息的提取需求。
pdfplumber.pdf中包含了.metadata和.pages兩個(gè)屬性。
metadata是一個(gè)包含pdf信息的字典。
pages是一個(gè)包含pdfplumber.Page實(shí)例的列表,每一個(gè)實(shí)例代表pdf每一頁(yè)的信息。
每個(gè)pdfplumber.Page類:pdfplumber核心功能,對(duì)PDF的大部分操作都是基于這個(gè)類,類中包含了幾個(gè)主要的屬性:文本、表格、尺寸等
page_number 頁(yè)碼
width 頁(yè)面寬度
height 頁(yè)面高度
objects/.chars/.lines/.rects 這些屬性中每一個(gè)都是一個(gè)列表,每個(gè)列表都包含一個(gè)字典,每個(gè)字典用于說(shuō)明頁(yè)面中的對(duì)象信息, 包括直線,字符, 方格等位置信息。
一些常用的方法
extract_text() 用來(lái)提頁(yè)面中的文本,將頁(yè)面的所有字符對(duì)象整理為的那個(gè)字符串
extract_words() 返回的是所有的單詞及其相關(guān)信息
extract_tables() 提取頁(yè)面的表格
2.1.1 pdfplumber簡(jiǎn)單使用
!pip install xlwt
更多功能(表格讀取,圖片提取,可視化界面)可以參考官網(wǎng)或者下面鏈接:
https://blog.csdn.net/fuhanghang/article/details/122579548
2.1.2 學(xué)術(shù)論文特定頁(yè)面文本提取
發(fā)表論文作者信息通常放在論文首頁(yè)的腳末行或參考文獻(xiàn)的后面,根據(jù)這種情況我們可以進(jìn)行分類(只要獲取作者的郵箱信息即可):
第一種國(guó)外論文:首頁(yè)含作者相關(guān)信息 or 首頁(yè)是封面第二頁(yè)才是作者信息 【獲取前n頁(yè)即可,推薦是2頁(yè)】
第二種國(guó)內(nèi)論文:首頁(yè)含作者信息(郵箱等)在參考文獻(xiàn)之后會(huì)有各個(gè)做的詳細(xì)信息,比如是職位,研究領(lǐng)域,科研成果介紹等等 【獲取前n頁(yè)和尾頁(yè),推薦是2頁(yè)+尾頁(yè)】
這樣做的好處在于兩個(gè)方面:
節(jié)約了存儲(chǔ)空間和數(shù)據(jù)處理時(shí)間
節(jié)約資源消耗,在模型預(yù)測(cè)時(shí)候輸入文本數(shù)量顯著減少,在數(shù)據(jù)面上加速推理
針對(duì)1簡(jiǎn)單闡述:PDF原始大小614.1KB
| 處理方式 | pdf轉(zhuǎn)文字時(shí)延 | 存儲(chǔ)占用空間 | | -------- | -------- | -------- | | 保存指定前n頁(yè)面文字 | 242ms | 2.8KB | | 保存指定前n頁(yè)面文字和尾頁(yè) | 328ms | 5.3KB | | 保存全文 |2.704s | 64.1KB |
針對(duì)二:以下6中方案提速不過(guò)多贅述,可以參考下面項(xiàng)目
模型選擇 uie-mini等小模型預(yù)測(cè),損失一定精度提升預(yù)測(cè)效率
UIE實(shí)現(xiàn)了FastTokenizer進(jìn)行文本預(yù)處理加速
fp16半精度推理速度更快
UIE INT8 精度推理
UIE Slim 數(shù)據(jù)蒸餾
SimpleServing支持支持多卡負(fù)載均衡預(yù)測(cè)
UIE Slim滿足工業(yè)應(yīng)用場(chǎng)景,解決推理部署耗時(shí)問(wèn)題,提升效能?。篽ttps://aistudio.baidu.com/aistudio/projectdetail/4516470?contributionType=1
之后有時(shí)間重新把paddlenlp技術(shù)路線整理一下
2.2 UIE信息抽取(論文作者和郵箱)
2.2.1 零樣本抽取
2.3長(zhǎng)文本的答案獲取
UIE對(duì)于詞和句子的抽取效果比較好,但是對(duì)應(yīng)大段的文字結(jié)果,還是需要傳統(tǒng)的正則方式作為配合,在本次使用的pdf中,還需要獲得法院具體的判決結(jié)果,使用正則表達(dá)式可靈活匹配想要的結(jié)果。
start_word = '如下' end_word = '特此公告' start = re.search(start_word, record) end = re.search(end_word, record) print(record[start.span()[1]:end.span()[0]]) : ???谥性赫J(rèn)為:新達(dá)公司的住所地在海口市國(guó)貿(mào)大道 48 號(hào)新達(dá)商務(wù)大廈,該司是由海南省工商行政管理局核準(zhǔn)登記 的企業(yè),故??谥性簩?duì)本案有管轄權(quán)。因新達(dá)公司不能清償 到期債務(wù),故深物業(yè)股份公司提出對(duì)新達(dá)公司進(jìn)行破產(chǎn)清算 ? 1 ? 的申請(qǐng)符合受理?xiàng)l件。依照《中華人民共和國(guó)企業(yè)破產(chǎn)法》 第二條第一款、第三條、第七條第二款之規(guī)定,裁定如下: ?受理申請(qǐng)人深圳市物業(yè)發(fā)展(集團(tuán))股份有限公司對(duì)被 申請(qǐng)人海南新達(dá)開(kāi)發(fā)總公司破產(chǎn)清算的申請(qǐng)。 ?本裁定自即日起生效。 ?二、其他情況 ?本公司已對(duì)海南公司賬務(wù)進(jìn)行了全額計(jì)提,破產(chǎn)清算對(duì) 本公司財(cái)務(wù)狀況無(wú)影響。 ?具體情況請(qǐng)查閱本公司2011年11月28日發(fā)布的《董事會(huì) 決議公告》。 ?
2.4正則提升效果
對(duì)于長(zhǎng)文本,可以根據(jù)關(guān)鍵詞進(jìn)行分割后抽取,但是對(duì)于多個(gè)實(shí)體,比如這篇公告中,通過(guò)的多個(gè)議案,就無(wú)法使用UIE抽取。
# 導(dǎo)入正則表達(dá)式相關(guān)庫(kù) import re ?schema = ['通過(guò)議案'] start_word = '通過(guò)以下議案' start = re.search(start_word, record) input_data = record[start.span()[0]:] print(input_data) ie = Taskflow('information_extraction', schema=schema) pprint(ie(input_data)) # 正則匹配“一 二 三 四 五 六 七 八 九 十” ?print(re.findall(r"[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341]、.*\n", input_data)) ['一、2021 年第三季度報(bào)告 \n', '二、關(guān)于同意全資子公司收購(gòu)擔(dān)保公司 60%股權(quán)的議案 詳見(jiàn)公司于 2021 年 10 月 29 日刊登在《證券時(shí)報(bào)》、《中國(guó)證券\n', '三、關(guān)于同意控股子公司廣西新柳邕公司為認(rèn)購(gòu)廣西新柳邕項(xiàng)\n', '四、關(guān)于續(xù)聘會(huì)計(jì)師事務(wù)所的議案 \n', '五、關(guān)于向銀行申請(qǐng)綜合授信額度的議案 \n', '一、向中國(guó)民生銀行股份有限公司深圳分行申請(qǐng)不超過(guò)人民幣 5\n', '二、向招商銀行股份有限公司深圳分行申請(qǐng)不超過(guò)人民幣 6 億\n', '六、經(jīng)理層《崗位聘任協(xié)議》 \n', '七、經(jīng)理層《年度經(jīng)營(yíng)業(yè)績(jī)責(zé)任書(shū)》 \n', '八、經(jīng)理層《任期經(jīng)營(yíng)業(yè)績(jī)責(zé)任書(shū)》 \n', '九、關(guān)于暫不召開(kāi)股東大會(huì)的議案 \n']
3.基于基于UIE-X的信息提取
3.1 跨模態(tài)文檔信息抽取
跨模態(tài)文檔信息抽取能力 UIE-X 來(lái)了。 信息抽取簡(jiǎn)單說(shuō)就是利用計(jì)算機(jī)從自然語(yǔ)言文本中提取出核心信息,是自然語(yǔ)言處理領(lǐng)域的一項(xiàng)關(guān)鍵任務(wù),包括命名實(shí)體識(shí)別(也稱實(shí)體抽取)、關(guān)系抽取、事件抽取等。傳統(tǒng)信息抽取方案基于序列標(biāo)注,需要大量標(biāo)注語(yǔ)料才能獲得較好的效果。2022年5月飛槳 PaddleNLP 推出的 UIE,是業(yè)界首個(gè)開(kāi)源的面向通用信息抽取的產(chǎn)業(yè)級(jí)技術(shù)方案 ,基于 Prompt 思想,零樣本和小樣本能力強(qiáng)大,已經(jīng)成為業(yè)界信息抽取任務(wù)上的首選方案。
除了純文本內(nèi)容外,企業(yè)中還存在大量需要從跨模態(tài)文檔中抽取信息并進(jìn)行處理的業(yè)務(wù)場(chǎng)景,例如從合同、收據(jù)、報(bào)銷單、病歷等不同類型的文檔中抽取所需字段,進(jìn)行錄入、比對(duì)、審核校準(zhǔn)等操作。為了滿足各行業(yè)的跨模態(tài)文檔信息抽取需求,PaddleNLP 基于文心ERNIE-Layout[1]跨模態(tài)布局增強(qiáng)預(yù)訓(xùn)練模型,集成PaddleOCR的PP-OCR、PP-Structure版面分析等領(lǐng)先能力,基于大量信息抽取標(biāo)注集,訓(xùn)練并開(kāi)源了UIE-X–––首個(gè)兼具文本及文檔抽取能力、多語(yǔ)言、開(kāi)放域的信息抽取模型。
支持實(shí)體抽取、關(guān)系抽取、跨任務(wù)抽取
支持跨語(yǔ)言抽取
集成PP-OCR,可靈活定制OCR結(jié)果
使用PP-Structure版面分析功能
增加渲染模塊,OCR和信息抽取結(jié)果可視化
項(xiàng)目鏈接: https://aistudio.baidu.com/aistudio/projectdetail/5017442
3.2 產(chǎn)業(yè)實(shí)踐分享:基于UIE-X的醫(yī)療文檔信息提取
PaddleNLP全新發(fā)布UIE-X ??,除已有純文本抽取的全部功能外,新增文檔抽取能力。
UIE-X延續(xù)UIE的思路,基于跨模態(tài)布局增強(qiáng)預(yù)訓(xùn)練模型文心ERNIE-Layout重訓(xùn)模型,融合文本、圖像、布局等信息進(jìn)行聯(lián)合建模,能夠深度理解多模態(tài)文檔?;赑rompt思想,實(shí)現(xiàn)開(kāi)放域信息抽取,支持零樣本抽取,小樣本能力領(lǐng)先。
官網(wǎng)鏈接:https://github.com/PaddlePaddle/PaddleNLP/tree/develop/applications/information_extraction
本案例為UIE-X在醫(yī)療領(lǐng)域的實(shí)戰(zhàn),通過(guò)少量標(biāo)注+模型微調(diào)即可具備定制場(chǎng)景的端到端文檔信息提取
目前醫(yī)療領(lǐng)域有大量的醫(yī)學(xué)檢查報(bào)告單,病歷,發(fā)票,CT影像,眼科等等的醫(yī)療圖片數(shù)據(jù)?,F(xiàn)階段,針對(duì)這些圖片都是靠人工分類,結(jié)構(gòu)化錄入系統(tǒng)中,做患者的全生命周期的管理。 耗時(shí)耗力,人工成本極大。如果能靠人工智能的技術(shù)做到圖片的自動(dòng)分類和結(jié)構(gòu)化,將大大的降低成本,提高系統(tǒng)錄入的整體效率。
項(xiàng)目鏈接: https://aistudio.baidu.com/aistudio/projectdetail/5261592
4.總結(jié)
本項(xiàng)目提供了基于ERNIELayout&PDFplumber-UIEX多方案學(xué)術(shù)論文信息抽取,有興趣同學(xué)可以研究一下UIE-X。
UIE-X延續(xù)UIE的思路,基于跨模態(tài)布局增強(qiáng)預(yù)訓(xùn)練模型文心ERNIE-Layout重訓(xùn)模型,融合文本、圖像、布局等信息進(jìn)行聯(lián)合建模,能夠深度理解多模態(tài)文檔?;赑rompt思想,實(shí)現(xiàn)開(kāi)放域信息抽取,支持零樣本抽取,小樣本能力領(lǐng)先.