大模型时代来咯!讲究的就是一个通用!

  本文记录我使用PaddleNLP中UIE做增值税发票信息提取的过程,同理适用于任何图片信息提取

  首先上个图镇场子,里面红底的就是做图片信息提取,所需要重点关注的文件

   telegram的的官网的最新下载的地方在哪呢在这里插入图片描述

  项目

  PaddleNLP:https://github.com/PaddlePaddle/PaddleNLP

  其中UIE部分:

  https://github.com/PaddlePaddle/PaddleNLP/tree/develop/model_zoo/uie

  发票信息提取使用的UIEX:

  https://github.com/PaddlePaddle/PaddleNLP/tree/develop/applications/information_extraction/document

  教程/文档

  跨模态文档通用信息抽取模型UIE-X来了

  uie的简单介绍b站视频【AI快车道|通用信息抽取技术与产业应用实战】 https://www.bilibili.com/video/BV1Q34y1E7SW/?share_source=copy_web&vd_source=679c63061dfbdf7484b5a4a666d4b9e1

  AI快车道PaddleNLP系列直播课https://aistudio.baidu.com/aistudio/education/group/info/24902

  UIE(Universal Information Extraction)官方telegram的网站在哪呢

  UIE原始论文
官方telegram的的下载
  论文阅读笔记

   telegram官方的下载的地方在这里插入图片描述

  在这里插入图片描述

  Paddle-UIE-X

  UIE(Universal Information Extraction):Yaojie Lu等人在ACL-2022中提出了通用信息抽取统一框架UIE。该框架实现了实体抽取、关系抽取、事件抽取、情感分析等任务的统一建模,并使得不同任务间具备良好的迁移和泛化能力。为了方便大家使用UIE的强大能力,PaddleNLP借鉴该论文的方法,基于ERNIE 3.0知识增强预训练模型,训练并开源了首个中文通用信息抽取模型UIE。该模型可以支持不限定行业领域和抽取目标的关键信息抽取,实现零样本快速冷启动,并具备优秀的小样本微调能力,快速适配特定的抽取目标。

  来源:https://github.com/PaddlePaddle/PaddleNLP/tree/develop/model_zoo/uie

  官方大佬对UIEX的解释:https://zhuanlan.zhihu.com/p/592422623

  paddle基于论文中的UIE做了修改,论文中的UIE是对text文本字段进行实体抽取、关系抽取、事件抽取、情感分析四种任务处理的,Paddle全新升级UIE-X,除已有纯文本抽取的全部功能外,新增文档抽取能力,具体来说paddle就是在前面增加了paddleOCR的det和rec功能,图片转化为识别出来的文本,再送入进行UIE,再结合布局分析等功能做了优化。UIE-X把这个功能端到端打通了。使用起来非常方便

  在这里插入图片描述

  🤗Huggingface hub 正式兼容 PaddleNLP 预训练模型,支持 PaddleNLP Model 和 Tokenizer 直接从 🤗Huggingface hub 下载和上传,欢迎大家在 🤗Huggingface hub 体验 PaddleNLP 预训练模型效果中文的telegram 版下载的地址是什么

  网页直接体验UIEX原始模型:https://huggingface.co/spaces/PaddlePaddle/UIE-X

  输入schema,点击submit即可

  在这里插入图片描述

  环境安装

  基本都是使用一键预测功能:Taskflow API去做使用的,安装包,引入库,然后就三行代码,就可以使用了,封装得很完善

  安装

  环境依赖

  python >= 3.7paddlepaddle >= 2.3

  pip安装

  或者可通过以下命令安装最新 develop 分支代码:

  更多关于PaddlePaddle和PaddleNLP安装的详细教程请查看get_started官方telegram下载地方在哪呢。

  来源:https://github.com/PaddlePaddle/PaddleNLP#readme

  使用docker的环境安装

  对于环境依赖,可以直接pull预安装 PaddlePaddle 的镜像,再在docker里面安装paddlenlp

  快速开始

  这里以信息抽取-命名实体识别任务,UIE模型为例,来说明如何快速使用PaddleNLP:

  text类信息提取

  PaddleNLP提供一键预测功能,无需训练,直接输入数据即可开放域抽取结果:

  图片类信息提取(使用uie-x)

  直接在/root/目录下运行,第一次运行会在根目录生成.paddlenlp和.paddleocr的隐藏文件夹,用于存储自动下载的uie和ocr模型,然后开始推理

  在这里插入图片描述

  有一些字段没有显示的,应该就是没有找到,下面只显示的是找到的,可是但凡显示出来的准确度都很高,可以说效果真的很牛,就是密码区一直不认

  大概可以得出的结论是:只要图像上靠近且有明显键值对的,都可以识别,只有那种键值对不明显,或者只有值没有键的信息,才会难以提取,才会需要微调。

  在这里插入图片描述

  测试到这里我就觉得这个方案是可行的了,所以打算基于UIEX做小样本学习,实际上除了发票,对于任何图片信息提取场景,根据它的介绍少量学习都能带来大幅提升,经过我的测试确实如此

   telegram 中文的下载网站是多少在这里插入图片描述

  按https://github.com/PaddlePaddle/PaddleNLP/tree/develop/applications/information_extraction/document进行模型微调,教程写的挺清楚了,我这里说一些其他的注意点

  在这里插入图片描述

  这是本地启动服务网页使用的,为了方便数据获取,就在win装,因为我的基本环境烂了,会有一些奇怪报错:所以我在anaconda里面新建py39环境,可以正常运行

  这个地方,一定得是image或者text,不能是ocr什么的,在后面数据处理转换json文件为paddle数据集的时候,只认image/test,如果换成其他的会不识别报错 telegram官网下载地址是什么在这里插入图片描述

  标注的时候,框要偏大一点,不能恰恰好贴着文字,不然会导致提取信息的时候漏掉前面几个字符

  在这里插入图片描述

  直到后来我label多了我才意识到,原始模型的可视化就是在教我怎么label最完美:都要向前框一点,包括冒号

  在这里插入图片描述

  ext:抽取式任务,实体收取和关系抽取都是抽取

  我在3090Ti上训练的速度基本是数据集增加一张图片,训练耗时增加一分钟,我标10张图片用了9分钟,标40张图片用了50分钟

  模型大小:“uie-x-base“ 1.05G,训练过程占用显存情况:20G/24G

  在这里插入图片描述

  我写了一个脚本,来同时执行原始模型和微调模型在同一张图片上的表现,同时可视化和输出识别结果到txt,以便对比:

  推理就是

  总体来说微调模型相比原始模型提升很大,有学习到标记的信息,并且可以区分购买方和销售方

  在这里插入图片描述

  左边一列是微调后的,右边的原始UIE-X-base

  在这里插入图片描述

  但也有问题:比如会认密码区但不跨行,只有第一行(还不如不要),对于密码区,盖章识别,二维码识别,我就去掉了,不设schema,这些需要额外优化

  我在3090Ti上推理一张的时间是5s左右,说实话还是挺慢的,后面再补充提升推理速度的问题

  这个部分可以用https://github.com/PaddlePaddle/PaddleNLP/tree/develop/applications/information_extraction/document/deploy/simple_serving

  结合PaddleNLP-developdocsserver.md进行部署,教程讲的很清楚了

  或者使用百度新出的专门用来部署的工具FastDeploy:https://github.com/PaddlePaddle/FastDeploy/tree/develop/examples/vision/ocr/PP-OCR/serving

  client和server的简单关系:

  在这里插入图片描述

  我就讲一些坑:

  作为服务器端的环境,如果是docker,要以进行创建,例如我之前使用的

  是默认–net=bridge,以桥接形式对外提供,不是–net=host,所以无法对外提供服务化部署

  应该:

  我提了issue,UIEX目前也有蒸馏代码了:

  https://github.com/PaddlePaddle/PaddleNLP/issues/5467

  https://github.com/linjieccc/PaddleNLP/tree/add-doc-ie/applications/information_extraction/document/closed_domain

  但是因为paddlenlp的一些新增支持还没有在发布版的包里面支持,所以按md一步步执行是会报错模块不存在的,通过直接从当前文件夹源代码而不是包import可以解决找不到模块问题,但引发了新的问题:

   telegram的的官网最新的下载地方在哪在这里插入图片描述

  后续因为进度问题没有继续,欢迎大家到issue追其他同学的进度

  可以用PaddleSlim试一下

  https://github.com/PaddlePaddle/PaddleSlim/tree/develop/example/auto_compression

  因为其原理是经过OCR将图片转化为text再输入UIE模型,所以实际上其他size的UIE模型也能用

  但经过实测,没有UIEX的版面分析等,结果几乎看不了,所以没得换

  https://github.com/PaddlePaddle/PaddleNLP/tree/develop/model_zoo/uie

  模型结构语言 (默认)12-layers, 768-hidden, 12-heads中文12-layers, 768-hidden, 12-heads英文12-layers, 768-hidden, 12-heads中文6-layers, 768-hidden, 12-heads中文6-layers, 384-hidden, 12-heads中文4-layers, 384-hidden, 12-heads中文4-layers, 312-hidden, 12-heads中文24-layers, 1024-hidden, 16-heads中、英文12-layers, 768-hidden, 12-heads中、英文

  https://github.com/PaddlePaddle/PaddleNLP/tree/develop/applications/information_extraction#readme

  模型名称使用场景支持任务

  面向纯文本场景的抽取式模型,支持中文具备实体、关系、事件、评论观点等通用信息抽取能力面向纯文本场景的抽取式模型,支持英文具备实体、关系、事件、评论观点等通用信息抽取能力

  面向纯文本场景的抽取式模型,支持中英具备实体、关系、事件、评论观点等通用信息抽取能力面向纯文本和文档场景的抽取式模型,支持中英支持纯文本场景的全部功能,还支持文档/图片/表格的端到端信息抽取

  然而,经过测试uie-x-base (12L768H)本身就大概是基于uie-m-base (12L768H)进行改进的,二者模型大小差不多,但是!uie-m原始模型的推理时间3s左右,几乎减半,但是其效果也非常差!

  而除了uie-m之外的其他模型不支持中英双语,就更用不了了

  结论:无法更换其他模型做图片推理,其他模型都是text推理用,没有图片布局分析效果很差

  目前不支持UIEX模型

  https://github.com/PaddlePaddle/PaddleNLP/tree/develop/model_zoo/uie

  TaskFlow的一个参数

  : 使用C++实现的高性能分词算子FastTokenizer进行文本预处理加速。需要通过安装FastTokenizer库后方可使用。默认为。更多使用说明可参考FastTokenizer文档。

  Q&A里面的,但是我实测16和256一样都是5s……官网的telegram的的的下载

  在这里插入图片描述

  end

  Please note that this blog was mainly completed by the author during his master’s degree study. Since the author did not continue to engage in this project any more, it is difficult to continue to maintain and update these blog. We sincerely apologize that these blog are for reference only.

seo