【ChatOCR】OCR+LLM定制化关键信息抽取(附开源大语言模型汇总整理)

目录

  • 背景
  • 技术方案
  • 存在的问题及解决思路
  • 关键信息提取结果
  • 其他解决方案
    • 替换文心一言
    • LangChain
    • 大型多模态模型(Large Multimodal Model, LMM)
  • 开源大模型汇总
    • LLaMA —— Meta 大语言模型
    • Stanford Alpaca —— 指令调优的 LLaMA 模型
    • Lit-LLaMA —— 基于 nanoGPT 的语言模型
    • GPT4All —— 基于 LLaMA 的大语言模型
    • Chinese-LLaMA
    • GLM —— 用于自然语言理解和生成的通用预训练框架
    • ChatGLM-6B —— 中英双语对话语言模型
    • MLC LLM —— 本地大语言模型
    • mPLUG-Owl —— 多模态大语言模型
    • 其他模型

背景

最近百度飞桨团队推出了一款基于文心大模型的通用图像关键信息抽取工具PP-ChatOCR。它结合了OCR文字识别和文心一言大语言模型,可以在多种场景下提取图像中的关键信息,效果非常惊艳。而传统的OCR识别技术的准确率容易受到多种因素影响,例如图像质量、字符布局、字体样式等。但当我们将OCR技术与大语言模型相结合时,可以避免繁杂的规则后处理,提升泛化能力,从而能够更智能、准确地理解和利用文本信息。(官方说明)

这里以手机app截图为例,定制化提取其中的感兴趣信息。实现OCR模型提取文字信息,输入LLM分析其识别结果直接给出所关注的关键信息——这就是ChatOCR的核心思想。

技术方案

  • 文字识别模型:PP-OCRv4;
  • LLM:百度“文心一言”
  • 开发环境:Python 3.10 + PaddlePaddle深度学习框架
    在这里插入图片描述

存在的问题及解决思路

  1. LLM无法100%准确地判别图像所属的场景
    使用官方给出的思路,即给出场景列表,让大模型识别OCR结果属于哪个场景,然后将其作为key去提前写好的few-shot例子中找到对应场景下的信息抽取结果来指导LLM,然后LLM再根据用户提供的关键信息项和OCR结果得到最终的结果。
    而这种方式依赖于LLM能准确无误的将OCR结果对应到给定列表中的某一个场景,若OCR结果不属于给定场景列表中的任何一个,或者将其错误的归于其他场景,都会导致关键信息提取失败,前者会使程序报错,而后者可能导致不正确的信息提取结果。(实测非卡证场景识别不稳定)
    • 解决思路:取消场景识别这一步骤,直接输入相关例子让LLM学习
  2. 大量场景例子无法一次性喂入LLM
    LLM学习的例子太多,token数量的增加会导致成本的上升和推理时间的增加。 ———超过一次输入问题的2000字数限制
    • 解决思路:构建多轮对话,逐次学习例子
  3. LLM的记忆遗忘
    多轮对话中bot的回应需要自己写,这个上下文信息会影响到后续的推理结果。对话轮数(例子)越多,LLM对前文的记忆越弱,导致忘记任务要求。
    • 解决思路:in-context learning prompt工程

在这里插入图片描述

关键信息提取结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注:第二个结果图中可用额度信息不正确是由于OCR提取不准确导致的,不是LLM导致。

其他解决方案

替换文心一言

参考链接:https://aistudio.baidu.com/projectdetail/6629280

LangChain

一个基于LLM来开发应用程序的框架,提供Chain接口来继承各种LLM相关模块。可以读取结构化或非结构化数据,然后用LLM来进行信息摘要或信息提取。高度集成化,支持众多模型和工具。

大型多模态模型(Large Multimodal Model, LMM)

直接使用目前的SOTA LMM来在业务场景下的OCR图片集上fine-tune,然后进行OCR-VQA或者关键信息提取。

  • 论文:On the Hidden Mystery of OCR in Large Multimodal Models, Arxiv 2023.
  • 文章在多个Text及OCR benchmark上测试了目前的LMMs的Zero-Shot迁移性能,给出了利用LMM提升OCR识别性能的思路。

开源大模型汇总

以下仅列出主要的、关键的、常用的大模型。

LLaMA —— Meta 大语言模型

LLaMA 语言模型全称为 “Large Language Model Meta AI”,是 Meta 的全新大型语言模型(LLM),这是一个模型系列,根据参数规模进行了划分(分为 70 亿、130 亿、330 亿和 650 亿参数不等)。

其中 LaMA-13B(130 亿参数的模型)尽管模型参数相比 OpenAI 的 GPT-3(1750 亿参数) 要少了十几倍,但在性能上反而可以超过 GPT-3 模型。更小的模型也意味着开发者可以在 PC 甚至是智能手机等设备上本地运行类 ChatGPT 这样的 AI 助手,无需依赖数据中心这样的大规模设施。

Stanford Alpaca —— 指令调优的 LLaMA 模型

Stanford Alpaca是一个指令调优的 LLaMA 模型,从 Meta 的大语言模型 LLaMA 7B 微调而来。

Stanford Alpaca 让 OpenAI 的 text-davinci-003 模型以 self-instruct 方式生成 52K 指令遵循(instruction-following)样本,以此作为 Alpaca 的训练数据。

在测试中,Alpaca 的很多行为表现都与 text-davinci-003 类似,且只有 7B 参数的轻量级模型 Alpaca 性能可与 GPT-3.5 这样的超大规模语言模型性能媲美。

Lit-LLaMA —— 基于 nanoGPT 的语言模型

Lit-LLaMA 是一个基于 nanoGPT 的 LLaMA 语言模型的实现,支持量化、LoRA 微调、预训练、flash attention、LLaMA-Adapter 微调、Int8 和 GPTQ 4bit 量化。

主要特点:单一文件实现,没有样板代码;在消费者硬件上或大规模运行;在数值上等同于原始模型。

Lit-LLaMA认为人工智能应该完全开源并成为集体知识的一部分。但原始的 LLaMA 代码采用 GPL 许可证,这意味着使用它的任何项目也必须在 GPL 下发布。这 “污染” 了其他代码,阻止了与生态系统的集成。Lit-LLaMA使用Apache 2.0协议,永久性地解决了这个问题。

GPT4All —— 基于 LLaMA 的大语言模型

GPT4All是基于 LLaMa 的~800k GPT-3.5-Turbo Generations 训练出来的助手式大型语言模型,这个模型接受了大量干净的助手数据的训练,包括代码、故事和对话,提供的模型性能接近text-davinci-003。

给出了多平台的桌面版应用,可以在本地的CPU上运行。同时提供Python的API可以在本地自己调用下载好的模型完成问答

Chinese-LLaMA

1、Chinese-LLaMA-Alpaca

在Apache-2.0协议下开源了中文LLaMA模型和指令精调的Alpaca大模型,以进一步促进大模型在中文NLP社区的开放研究。这些模型在原版LLaMA的基础上扩充了中文词表并使用了中文数据进行二次预训练,进一步提升了中文基础语义理解能力。同时,中文Alpaca模型进一步使用了中文指令数据进行精调,显著提升了模型对指令的理解和执行能力。文档全面,支持本地推理部署,还在持续更新

2、Chinese-Vicuna —— 一个中文低资源的LLaMA+lora方案

A Chinese Instruction-following LLaMA-based Model。项目目的是希望基于LLaMA+instruction数据构建一个中文的羊驼模型,并帮助大家能快速学会使用引入自己的数据,并训练出属于自己的小羊驼(Vicuna)。

方案的优势是参数高效,显卡友好,部署简易:

  • 在一张2080Ti(11G)上可以对Llama-7B进行指令微调 (7b-instruct)
  • 在一张3090(24G)上可以对Llama-13B进行指令微调 (13b-instruct)
  • 即使是长度为2048的对话,在3090上也可以完成Llama-7B的微调;使用5万条数据即可有不错效果 (chatv1)
  • 领域微调的例子:医学问答 和 法律问答。(medical and legal)
  • 支持qlora-4bit,使用4bit可以在2080Ti上完成13B的训练
    可在2080Ti/3090上轻松部署,支持多卡同时推理,可进一步降低显存占用

项目包括

  • finetune模型的代码
  • 推理的代码
  • 仅使用CPU推理的代码 (使用C++)
  • 下载/转换/量化Facebook llama.ckpt的工具
  • 其他应用
  • 详细文档

3、伶荔 (Linly) —— 大规模中文语言模型

深圳大学与腾讯AI Lab推出。相比已有的中文开源模型,伶荔模型具有以下优势:

  • 在 32*A100 GPU 上训练了不同量级和功能的中文模型,对模型充分训练并提供强大的 baseline。据知,33B 的 Linly-Chinese-LLAMA 是目前最大的中文 LLaMA 模型。
  • 公开所有训练数据、代码、参数细节以及实验结果,确保项目的可复现性,用户可以选择合适的资源直接用于自己的流程中。
  • 项目具有高兼容性和易用性,提供可用于 CUDA 和 CPU 的量化推理框架,并支持 Huggingface 格式。

目前公开可用的模型有:

  • Linly-Chinese-LLaMA-2 (7B、13B) 模型:使用 LLaMA2 扩充中文词表,在混合语料上进行增量预训练,模型仍在迭代中,将定期更新模型权重。
  • Linly-Chinese-Falcon(7B): Chinese-Falcon 模型在 Falcon 基础上扩充中文词表,在中英文数据上增量预训练。模型以 Apache License 2.0 协议开源,支持商业用途。
  • Linly-Chinese-LLaMA:中文基础模型,基于 LLaMA 在高质量中文语料上增量训练强化中文语言能力,现已开放 7B、13B 和 33B 量级,65B 正在训练中。
  • Linly-ChatFlow:中文对话模型,在 400 万指令数据集合上对中文基础模型指令精调,现已开放 7B、13B 对话模型。
  • Linly-ChatFlow-int4 :ChatFlow 4-bit 量化版本,用于在 CPU 上部署模型推理。

GLM —— 用于自然语言理解和生成的通用预训练框架

GLM (General Language Model)是清华大学推出的一种使用自回归填空目标进行预训练的通用语言模型,可以针对各种自然语言理解和生成任务进行微调。

GLM 通过添加 2D 位置编码并允许以任意顺序预测跨度来改进空白填充预训练,从而在 NLU 任务上获得优于 BERT 和 T5 的性能。同时,GLM 可以通过改变空白的数量和长度对不同类型的任务进行预训练。在横跨 NLU、条件和无条件生成的广泛任务上,GLM 在给定相同的模型大小和数据的情况下优于 BERT、T5 和 GPT,并从单一的预训练模型中获得了 1.25 倍 BERT Large 参数的最佳性能,表明其对不同下游任务的通用性。

关于 GLM 的详细描述可参考论文 GLM: General Language Model Pretraining with Autoregressive Blank Infilling (ACL 2022)

ChatGLM-6B 就是在 GLM 框架的基础上为中文 QA 和对话进行了优化。

ChatGLM-6B —— 中英双语对话语言模型

ChatGLM-6B()是一个开源的、支持中英双语问答的对话语言模型,并针对中文进行了优化。该模型基于 General Language Model (GLM) 架构,具有62亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。

ChatGLM-6B 使用了GLM框架,针对中文问答和对话进行了优化。经过约 1T 标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62亿参数的 ChatGLM-6B 虽然规模不及千亿模型,但大大降低了推理成本,提升了效率,并且已经能生成相当符合人类偏好的回答。

MLC LLM —— 本地大语言模型

MLC LLM是一种通用解决方案,它允许将任何语言模型本地部署在各种硬件后端和本地应用程序上。

此外,MLC LLM 还提供了一个高效的框架,供使用者根据需求进一步优化模型性能。MLC LLM 旨在让每个人都能在个人设备上本地开发、优化和部署 AI 模型,而无需服务器支持,并通过手机和笔记本电脑上的消费级 GPU 进行加速

mPLUG-Owl —— 多模态大语言模型

阿里达摩院提出的多模态 GPT 的模型:mPLUG-Owl,基于 mPLUG 模块化的多模态大语言模型。它不仅能理解推理文本的内容,还可以理解视觉信息,并且具备优秀的跨模态对齐能力。

  • 论文:https://arxiv.org/abs/2304.14178
  • DEMO:https://huggingface.co/spaces/MAGAer13/mPLUG-Owl

其他模型

  • 开源LLM汇总及相关工具
  • GitHub: Awesome-Chinese-LLM(中文LLM相关)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/132408.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构线性表——单链表

前言:小伙伴们又见面啦,这篇文章我们来一起学习线性表的第二模块——单链表。 单链表的学习就要开始上强度啦,小伙伴们一定要努力,坚持! 目录 一.什么是单链表 二.单链表与顺序表的区别 三.单链表的实现 1.单链表…

ClickHouse 学习之从高级到监控以及备份(二)

第 一 部分 高级篇 第 1 章 Explain 查看执行计划 在 clickhouse 20.6 版本之前要查看 SQL 语句的执行计划需要设置日志级别为 trace 才能可以看到,并且只能真正执行 sql,在执行日志里面查看。在 20.6 版本引入了原生的执行计划的语法。在 20.6.3 版本成…

【MongoDB】集群搭建实战 | 副本集 Replica-Set | 分片集群 Shard-Cluster | 安全认证

文章目录 MongoDB 集群架构副本集主节点选举原则搭建副本集主节点从节点仲裁节点 连接节点添加副本从节点添加仲裁者节点删除节点 副本集读写操作副本集中的方法 分片集群分片集群架构目标第一个副本集第二个副本集配置集初始化副本集路由集添加分片开启分片集合分片删除分片 安…

第23期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练 Transformer(GPT)、人工智能生成内容(AIGC)以及大型语言模型(LLM)等安全领域应用的知识。在这里,您可以…

Java 高效生成按指定间隔连续递增的列表(int,double)

简介 Java 按照指定间隔生成连续递增的List 列表&#xff08;引入Stream 类和流操作来提高效率&#xff09;&#xff1a; 1. 生成递增的List< Integer> Testpublic void test009(){int start 1;int interval 2;int count 10;List<Integer> list IntStream.ite…

【亚马逊云科技产品测评】活动征文|亚马逊云科技AWS之EC2详细测评

引言 &#xff08;授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 Developer Centre, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道&#xff09; 在当前的数字化时代&#xff0c;云服务已…

算法题:203. 移除链表元素(递归法、设置虚拟头节点法等3种方法)Java实现创建链表与解析链表

1、算法思路 讲一下设置虚拟头节点的那个方法&#xff0c;设置一个新节点指向原来链表的头节点&#xff0c;这样我们就可以通过判断链表的当前节点的后继节点值是不是目标删除值&#xff0c;来判断是否删除这个后继节点了。如果不设置虚拟头节点&#xff0c;则需要将头节点和后…

【SpringSecurity】简介

SpringSecurity简介 Spring Security 的前身是Acegi Security&#xff0c;在被收纳为Spring 子项目后正式更名为Spring Security。Spring Security目前已经到了6.x&#xff0c;并且加入了原生OAuth2.0框架&#xff0c;支持更加现代化的密码加密方式。可以预见&#xff0c;在Ja…

HDFS速通之一文详解HDFS全部知识点

文章目录 HDFS介绍HDFS体系HDFS的Shell介绍HDFS的常见Shell操作 HDFS案例实操Java操作HDFS配置环境 HDFS的回收站HDFS的安全模式实战&#xff1a;定时上传数据至HDFSHDFS的高可用和高扩展HDFS的高可用(HA)HDFS的高扩展(Federation) HDFS介绍 HDFS是一个分布式的文件系统 假设…

oracle-sql语句执行过程

客户端输入sql语句。 sql语句通过网络到达数据库实例。 服务器进程(server process)接收到sql语句。 sql – 解析成执行计划&#xff0c;然后sql才能执行。 会将sql和sql的执行计划缓存到共享池中。解析: 会消耗很多资源。 从数据库找数据&#xff0c;先从buffer cache中找&a…

数组相关的面试OJ题

目录 1.移除元素 方法1【暴力求解】 方法2【双指针】 2.删除两个有序数组中的重复项 方法1【双指针】 3.合并两个有序数组 方法1【暴力求解】 方法2【开辟新数组】---选择较小的尾插 方法3【三指针】---选择较大的头插 4.有序数组的合并 方法1【三指针】 写一个算…

Git extension 中合并工具kdiff3乱码问题

打开kdiff3合并工具&#xff0c;setting->region settings 设置下面的编码格式为utf-8就可以啦&#xff01; 注意&#xff1a;需要在合并工具中设置编码格式&#xff0c; 在git 中配置编码格式没有效果

人工智能AI创作系统ChatGPT网站系统源码+AI绘画系统支持GPT4.0/支持Midjourney局部重绘

一、前言 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建…

Leetcode刷题详解——组合

1. 题目链接&#xff1a;77. 组合 2. 题目描述&#xff1a; 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;n 4, k 2 输出&#xff1a; [[2,4],[3,4],[2,3],[1,2],[1,3],[…

归并排序(c语言代码实现)

归并排序&#xff08;稳定的排序&#xff09;&#xff1a; 归并排序是一种分治策略的排序算法&#xff0c;其基本思想是将待排序数组分成两个子数组&#xff0c;分别对这两个子数组进行排序&#xff0c;然后合并这两个已经排序好的子数组&#xff0c;最终得到完整的已排序数组…

Sentinel黑白名单授权规则解读

目录 基本介绍 代码实战 架构说明 RequestOriginParser的实现类 网关添加请求头 配置授权规则 基本介绍 授权规则可以对请求方来源做判断和控制。 很多时候&#xff0c;我们需要根据调用来源来判断该次请求是否允许放行&#xff0c;这时候可以使用 Sentinel 的来源…

酒水展示预约小程序的效果如何

酒的需求度非常高&#xff0c;各种品牌、海量经销商组成了庞大市场&#xff0c;而在实际经营中&#xff0c;酒水品牌、经销商、门店经营者等环节往往也面临着品牌传播拓客引流难、产品展示预约订购难、营销难、销售渠道单一等痛点。 那么商家们应该怎样解决呢&#xff1f; 可以…

31.Map集合用法、遍历、排序与常见API

概要&#xff1a; java.util 中的集合类包含 Java 中某些最常用的类。最常用的集合类是 List 和 Map。 Map 提供了一个更通用的元素存储方法。Map 集合类用于存储元素对&#xff08;称作“键”和“值”&#xff09;&#xff0c;其中每个键映射到一个值。 本文主要介绍java ma…

如何使用VSCode来查看二进制文件

2023年11月6日&#xff0c;周一下午 目录 方法1&#xff1a;安装插件Binary Viewer然后用vscode打开一个二进制文件&#xff0c;并点击右上角的"HEX"方法2&#xff1a;安装插件Binary然后用vscode打开一个二进制文件&#xff0c;并点击右上角的"B" 方法1&…

C-DS二叉树_另一棵树的子树

Description 给你两棵二叉树tree1和tree2,检验tree1中是否包含和tree2具有相同结构和结点值的子树。如果存在,输出true;否则,输出false。 Input 第一行输入t,表示有t个测试样例。 第二行首先输入n1,接着输入n1个整数,表示二叉树tree1。 第三行首先输入n2,接着输入n…