PP-ChatOCRv3新升级:多页PDF信息抽取支持自定义提示词工程,拓展大语言模型功能边界

news2025/4/24 20:14:47

文本图像信息抽取技术在自动化办公、建筑工程、教育科研、金融风控、医疗健康等行业领域具有广泛应用场景。2024年9月,飞桨低代码开发工具PaddleX中新增文本图像智能产线PP-ChatOCRv3,充分结合PaddleOCR的文本图像版面解析能力和文心一言语言理解优势,实现了高效的文本图像信息抽取。
近期,飞桨研发团队对飞桨低代码开发工具PaddleX中文本图像智能产线PP-ChatOCRv3进行升级,一方面实现了基于标准OpenAI接口的大语言模型调用,支持不同类型大模型灵活更换,另一方面针对文本图像信息抽取,丰富了自定义提示词工程的能力,从而为文本图像信息抽取注入新动力。

在这里插入图片描述
PP-ChatOCRv3 系统流程图

PP-ChatOCRv3进阶使用传送门
https://github.com/PaddlePaddle/PaddleX/blob/release/3.0-rc/docs/practical_tutorials/document_scene_information_extraction(deepseek)_tutorial.md

本次升级具体特色功能如下:

新模型可快速适配多页 PDF 文件,高效抽取信息

由于大语言模型的推理时间相对较长,从多页 PDF 文件中抽取信息往往成本较高。
然而,PP-ChatOCRv3 集成了向量检索技术,先从 PDF 中筛选出与查询信息相关的内容,再借助大语言模型进行信息抽取,有效提升了处理效率。同时为了有效节约视觉特征和建立向量库的时间成本,PP-ChatOCRv3提供了数据缓存加载方法。在完成初次视觉特征和向量库建立后,后续的信息抽取过程即可基于缓存数据进行,有效的避免了频繁的视觉推理和建立索引库过程
详细的实现如下:

import os
from paddlex import create_pipeline

pipeline = create_pipeline(pipeline="PP-ChatOCRv3-doc",initial_predictor=False)

output_dir = "output"
if not os.path.exists(output_dir):
    os.makedirs(output_dir)
visual_predict_res_path = os.path.join(output_dir, "contract.visual")
vector_res_path = os.path.join(output_dir, "contract.vector")
if not os.path.exists(visual_predict_res_path):
    visual_predict_res = pipeline.visual_predict(
      input="contract.pdf",
      use_doc_orientation_classify=False,
      use_doc_unwarping=False)

    visual_info_list = []
    for res in visual_predict_res:
        visual_info_list.append(res["visual_info"])

    vector_info = pipeline.build_vector(visual_info_list, flag_save_bytes_vector=True,retriever_config={
        "module_name": "retriever",
        "model_name": "embedding-v1",
        "base_url": "https://qianfan.baidubce.com/v2",
        "api_type": "qianfan",
        "api_key": "api_key" # your api_key
    })

    pipeline.save_visual_info_list(visual_info_list, visual_predict_res_path)
    vector_info = pipeline.build_vector(visual_info_list)
    pipeline.save_vector(vector_info, vector_res_path)
else:
    visual_info_list = pipeline.load_visual_info_list(visual_predict_res_path)
    vector_info = pipeline.load_vector(vector_res_path)

chat_result = pipeline.chat(
    key_list=["甲方"],
    visual_info=visual_info_list,
    vector_info=vector_info,
    chat_bot_config={
      "module_name": "chat_bot",
      "model_name": "ernie-3.5-8k",
      "base_url": "https://qianfan.baidubce.com/v2",
      "api_type": "openai",
      "api_key": "api_key" # your api_key
    },
    retriever_config={
      "module_name": "retriever",
      "model_name": "embedding-v1",
      "base_url": "https://qianfan.baidubce.com/v2",
      "api_type": "qianfan",
      "api_key": "api_key" # your api_key
    }
)
print(chat_result)

支持自定义提示词工程,拓展大语言模型的功能边界

早期进行文本图像信息抽取时,如从身份证、营业执照中提取信息,通常预先设定好关键词(如姓名、公司名称等),再查找与之相关的信息。然而,在实际应用中,关键信息往往以问题的形式呈现,例如在研报中查询《哪吒2》的票房数,要回答此类问题就需要对提示词进行修改。本次升级支持自定义提示词工程,涵盖问题描述、提取规则、结果规范以及少样本学习等方面,可根据实际问题灵活调整,从而拓展大语言模型在信息抽取方面的功能边界。
一个提示词修改示例如下:

  • text_task_description:对话任务的描述,例如“你现在的任务是根据提供的文本内容回答用户的问题,并给出你回答问题引用的原文片段”。
  • text_rules_str:用户设置的细节规则,例如“对于问题结果,使用“答案:”标注,对于引用原文片段,使用“引用原文:”标注。问题结果中的日期格式为“YYYY-MM-DD””。
  • text_few_shot_demo_text_content:用于少样本演示的文本内容,例如“当用户询问关于“时间”的问题时,返回某年某月某日”,通常设置为空即可。
  • text_few_shot_demo_key_value_list:用于少样本演示的键值对列表,例如[{“该规定是何时公布的?”: “2005年2月4日”}, {“该规定是何时施行的?”: “2005年4月1日”}],通常设置为空即可

产出结果:

{'chat_res': {'reasoning_content': ['好的,我现在需要处理用户的问题。用户提供的OCR文本是关于《勘察设计注册工程师管理规定》的内容,问题是要找出该规定是何时公布的。首先,我要仔细阅读OCR文本,寻找相关的日期信息。\n\n在OCR文本的开头部分,我看到这样的文字:“勘察设计注册工程师管理规定 (2005年2月4日中华人民共和国建设部令第137号公布自2005年4月1日起施行)”。这里有两个日期,一个是公布的日期,另一个是施行的日期。用户的问题是询问公布的日期,所以需要确认哪个对应公布。\n\n根据中文法律法规的常见格式,通常会在标题后的括号内注明公布日期和施行日期,格式为“(日期公布机关公布,自日期起施行)”。这里的结构是“2005年2月4日中华人民共和国建设部令第137号公布自2005年4月1日起施行”,所以前半部分“2005年2月4日”应该是公布的日期,后半部分“2005年4月1日”是施行日期。\n\n接下来,我需要确认用户的问题是否确实指向公布日期。用户的问题明确问的是“该规定是何时公布的?”,所以答案应该是2005年2月4日。需要将日期格式转换为“YYYY-MM-DD”,即“2005-02-04”。\n\n然后,检查是否有其他可能的日期信息。OCR文本的其他部分主要涉及注册工程师的管理规定,没有提到其他日期。因此,可以确定答案正确。\n\n最后,按照用户的要求,用JSON格式返回结果,问题作为key,答案作为value,并引用对应的原文片段。确保日期格式正确,没有其他多余内容。\n'], '该规定是何时公布的?': {'答案': '2005-02-04', '引用原文': '勘察设计注册工程师管理规定 (2005年2月4日中华人民共和国建设部令第137号公布自2005年4月1日起施行)'}}}

精彩课程预告

为了帮助您全面掌握PP-ChatOCRv3的最新技术进展,百度研发团队精心打造视频精讲课程,深入解读PP-ChatOCRv3的最新技术方案,并分享其在实际产业中的应用技巧。同时,我们还特别设置了产业场景实战营,配套详细教程文档,将手把手指导您针对具体问题灵活优化自定义提示词工程能力。机会难得,立即点击链接报名https://www.wjx.top/vm/wFZcC0n.aspx?udsid=749768

在这里插入图片描述

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

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

相关文章

《二叉树:二叉树的顺序结构->堆》

二叉树一般可以使用两种结构存储,一种是顺序结构,一种是链式结构。 顺序存储 顺序结构存储是使用数组来存储,一般使用数组只适合表示完全二叉树,因为不是完全二叉树会有空间的浪费。实际上使用中只有堆才会使用数组来存储。二叉…

OpenLayers:封装Overlay的方法

平时在使用OpenLayers的Overlay时常感觉不便,于是最近我便封装了一些Overlay增删改查的方法,以提高可用性。这边文章中我会介绍我封装的方法,同时记录这个过程中踩的一些坑。 添加Overlay /*** abstract 添加overlay* param {*} map* param…

软件重构与项目进度的矛盾如何解决

软件重构与项目进度之间的矛盾可以通过明确重构目标与范围、采用渐进式重构策略、优化项目管理流程、提高团队沟通效率、建立重构意识文化等方式解决。其中,采用渐进式重构策略尤为关键。渐进式重构是指在日常开发过程中,以小步骤持续进行重构&#xff0…

数智化时代下开源AI大模型驱动的新型商业生态构建——基于AI智能名片与S2B2C商城小程序的融合创新研究

摘要 数字技术的指数级发展推动物理世界向数智化网状结构加速转型,传统商业逻辑面临系统性重构。本文以"开源AI大模型AI智能名片S2B2C商城小程序"为研究主体,采用案例分析与技术验证相结合的方法,揭示技术融合对商业生态的重塑机制…

Spring Cloud Alibaba 技术全景与实战指南

简介: Spring Cloud Alibaba 是阿里巴巴开源的微服务解决方案,基于 Spring Cloud 标准构建,提供了一站式分布式系统开发能力。它深度整合阿里云生态组件,为企业级微服务架构提供高可用、高性能的技术支撑。 核心特性 全栈微服务能…

回归预测 | Matlab实现NRBO-Transformer-BiLSTM多输入单输出回归预测

回归预测 | Matlab实现NRBO-Transformer-BiLSTM多输入单输出回归预测 目录 回归预测 | Matlab实现NRBO-Transformer-BiLSTM多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.【JCR一区级】Matlab实现NRBO-Transformer-BiLSTM多变量回归预测&#xf…

Git的基础使用方法

本文最终功能: 1.从终端直接传输代码给仓库 2.用终端从仓库克隆文件 基本概念 我们先来理解下 Git 工作区、暂存区和版本库概念: 工作区:就是你在电脑里能看到的目录。 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的…

Java常用异步方式总结

使用建议 完整代码见https://gitee.com/pinetree-cpu/parent-demon 提供了postMan调试json文件于security-demo/src/main/resources/test_file/java-async.postman_collection.json 可导入postMan中进行调试 Java异步方式以及使用场景 继承Thread类 新建三个类继承Thread&…

苍穹外卖day12

课程内容 工作台 Apache POI 导出运营数据Excel报表 功能实现:工作台、数据导出 工作台效果图: 数据导出效果图: 在数据统计页面点击数据导出:生成Excel报表 1. 工作台 1.1 需求分析和设计 1.1.1 产品原型 工作台是系统运…

【Feign】⭐️使用 openFeign 时传递 MultipartFile 类型的参数参考

💥💥✈️✈️欢迎阅读本文章❤️❤️💥💥 🏆本篇文章阅读大约耗时三分钟。 ⛳️motto:不积跬步、无以千里 📋📋📋本文目录如下:🎁🎁&a…

Linux中动静态库的制作

1.什么是库 库是写好的现有的,成熟的,可以复⽤的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个⼈的代码都从零开始,因此库的存在意义非同寻常。 本质上来说库是⼀种可执⾏代码的⼆进制形式,可以被操作系统…

forms实现连连看

说明: forms实现连连看 效果图: step1:C:\Users\wangrusheng\RiderProjects\WinFormsApp2\WinFormsApp2\Form1.cs using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Windows.Forms;namespace …

鸿蒙开发踩坑记录 - 2024S2

wrapBuilder如果想View和ObservedV2做绑定 必须要用 ComponentV2 Param 和 区别 退出两层循环 Builder的传入的参数及时是Trace修饰的也无法刷新组件 折叠屏展开后键盘无法点击 vm是公用的,组件生命周期问题导致 监听键盘高度变化失效 原因:分享面…

0基础入门scrapy 框架,获取豆瓣top250存入mysql

一、基础教程 创建项目命令 scrapy startproject mySpider --项目名称 创建爬虫文件 scrapy genspider itcast "itcast.cn" --自动生成 itcast.py 文件 爬虫名称 爬虫网址 运行爬虫 scrapy crawl baidu(爬虫名) 使用终端运行太麻烦了,而且…

鸿蒙NEXT小游戏开发:井字棋

1. 引言 井字棋是一款经典的两人对战游戏,简单易懂,适合各个年龄段的玩家。本文将介绍如何使用鸿蒙NEXT框架开发一个井字棋游戏,涵盖游戏逻辑、界面设计及AI对战功能。 2. 开发环境准备 电脑系统:windows 10 开发工具:…

deep-sync开源程序插件导出您的 DeepSeek 与 public 聊天

一、软件介绍 文末提供下载 deep-sync开源程序插件导出您的 DeepSeek 与 public 聊天,这是一个浏览器扩展,它允许用户公开、私下分享他们的聊天对话,并使用密码或过期链接来增强 Deepseek Web UI。该扩展程序在 Deepseek 界面中添加了一个 “…

4. 理解Prompt Engineering:如何让模型听懂你的需求

引言:当模型变成“实习生” 想象一下,你新招的实习生总把“帮我写份报告”理解为“做PPT”或“整理数据表”——这正是开发者与大模型对话的日常困境。某金融公司优化提示词后,合同审查准确率从72%飙升至94%。本文将用3个核心法则+5个行业案例,教你用Prompt Engineering让…

网络编程—网络概念

目录 1 网络分类 1.1 局域网 1.2 广域网 2 常见网络概念 2.1 交换机 2.2 路由器 2.3 集线器 2.4 IP地址 2.5 端口号 2.6 协议 3 网络协议模型 3.1 OSI七层模型 3.2 TCP/IP五层模型 3.3 每层中常见的协议和作用 3.3.1 应用层 3.3.2 传输层 3.3.3 网络层 3.3.4…

SELinux

一、selinux技术详解 SELinux 概述 SELinux,即 Security-Enhanced Linux,意为安全强化的 Linux,由美国国家安全局(NSA)主导开发。开发初衷是防止系统资源被误用。在 Linux 系统中,系统资源的访问均通过程…

ES6对函数参数的新设计

ES6 对函数参数进行了新的设计,主要添加了默认参数、不定参数和扩展参数: 不定参数和扩展参数可以认为恰好是相反的两个模式,不定参数是使用数组来表示多个参数,扩展参数则是将多个参数映射到一个数组。 需要注意:不定…