PaddleNLP SimpleServing 服务化部署实战:基于 UIE-X 的文档信息抽取 HTTP 服务搭建指南
人工智能大模型预训练微调LoRARLHF强化学习分布式训练【免费下载链接】PaddleNLPEasy-to-use and powerful LLM and SLM library with awesome model zoo.项目地址https://gitcode.com/gh_mirrors/pa/PaddleNLP点击查看免费下载本文面向需要在生产环境中上线 UIE-X 文档信息抽取模型的开发者完整讲解如何基于 PaddleNLP SimpleServing 将微调后的文档抽取模型封装为 HTTP 服务包括环境准备、Server 启动、Client 请求、schema 与模型路径定制以及多卡负载均衡部署。读完本文你将掌握一套可直接复制运行的文档抽取服务化部署方案并理解其底层基于 FastAPI 与 Taskflow 的实现原理。本文以仓库中的 基于 PaddleNLP SimpleServing 的服务化部署指南 为核心骨架配套的 server.py 与 client.py 为可直接运行的示例代码。该部署方案属于 PaddleNLP 信息抽取产业级全流程方案中的模型部署环节与文本抽取场景的部署方案见 文本抽取 HTTP 部署指南共同构成完整的服务化部署矩阵。方案背景文档抽取场景为何需要服务化部署在 PaddleNLP 信息抽取应用中uie-x-base是一个面向纯文本和文档双场景的抽取式模型支持中英双语可端到端完成文档、图片、表格的信息抽取。整个应用打通了数据标注 → 模型训练 → 模型调优 → 预测部署全流程其中部署环节的目标是把微调好的模型从 Python 脚本中解放出来变成一个可供业务系统通过 HTTP 调用的常驻服务。SimpleServing 正是 PaddleNLP 为这一目标提供的轻量级服务化框架。它基于 FastAPI 构建源码见 paddlenlp/server/server.pySimpleServer直接继承FastAPI开发者只需要编写一个注册了 Taskflow 的server.py即可通过一条命令行把模型启动为 HTTP 服务业务方无需接触 PaddlePaddle 与 PaddleNLP 的任何细节仅凭 HTTP 请求即可获得结构化抽取结果。典型的应用场景包括增值税发票信息抽取、报关单关键字段识别、Delivery Note 等单据解析以及任何输入一张图片/文档、输出结构化 JSON的业务诉求。环境准备使用带有 SimpleServing 功能的 PaddleNLP 版本或最新的 develop 版本安装命令如下pip install paddlenlp 2.4.4SimpleServing 自 PaddleNLP 2.4.4 起正式具备该能力。安装完成后可通过paddlenlp server --help确认 CLI 子命令可用或直接在 Python 中执行from paddlenlp import SimpleServer, Taskflow验证导入是否成功。需要说明的是本部署示例运行在文档信息抽取项目目录下示例代码中的task_path../../checkpoint/model_best与image_paths [../../data/images/b1.jpg]均为相对该目录的相对路径实际使用时请按自身模型与数据存放位置调整。Server 端注册并启动文档抽取服务编写 server.py 注册服务部署的核心是 server.py。它完成三件事定义抽取 schema、加载微调模型、注册为可路由的服务。完整代码如下from paddlenlp import SimpleServer, Taskflow # The schema changed to your defined schema schema [开票日期, 名称, 纳税人识别号, 开户行及账号, 金额, 价税合计, No, 税率, 地址、电话, 税额] # The task path changed to your best model path uie Taskflow( information_extraction, schemaschema, task_path../../checkpoint/model_best, ) # If you want to define the finetuned uie service app SimpleServer() app.register_taskflow(taskflow/uie, uie)逐段解读schema声明了需要抽取的字段列表。这里的默认值对应增值税发票的 10 个关键字段它是 UIE 抽取的提示词——模型会按照 schema 中的每一个字段去文档中定位并抽取对应内容Taskflow(information_extraction, ...)创建信息抽取任务流对象其中task_path指向微调后的模型权重目录。该目录需包含训练好的model_state.pdparams权重文件模型微调与导出细节见 文档信息抽取全流程指南SimpleServer()实例化服务register_taskflow(taskflow/uie, uie)将 Taskflow 注册到路由taskflow/uie下注册路径即为后续 Client 请求的 URL 路径。启动 Server在simple_serving目录下执行paddlenlp server server:app --workers 1 --host 0.0.0.0 --port 8189参数说明server:app指向server.py中名为app的SimpleServer实例模块名:对象名这是 uvicorn 标准的 ASGI 应用定位语法--workers 1工作进程数示例为 1可依据机器资源调整--host 0.0.0.0监听所有网卡地址使服务可被外部客户端访问--port 8189服务监听端口。从源码看paddlenlp server这条命令最终调用的是 paddlenlp/cli/server.py 中的start_backend(app, **kwargs)它把上述参数原样透传给uvicorn.run(app, **kwargs)即由 uvicorn 托管 ASGI 服务生命周期。启动后日志会打印每个启动参数出现 Application startup complete 即表示服务就绪。Client 端发起文档抽取请求启动 Server 后另开一个终端执行python client.pyclient.py 的完整逻辑如下import json import requests from paddlenlp.utils.doc_parser import DocParser # Define the document parser doc_parser DocParser() image_paths [../../data/images/b1.jpg] image_base64_docs [] # Get the image base64 to post for image_path in image_paths: req_dict {} doc doc_parser.parse({doc: image_path}, do_ocrFalse) base64 doc[image] req_dict[doc] base64 image_base64_docs.append(req_dict) url http://0.0.0.0:8189/taskflow/uie headers {Content-Type: application/json} data {data: {text: image_base64_docs}} # Post the requests r requests.post(urlurl, headersheaders, datajson.dumps(data)) datas json.loads(r.text) print(datas)该客户端的关键点图片编码使用 PaddleNLP 的 DocParser 解析图片路径将文档图片转为 base64 编码。这里do_ocrFalse表示不在此处做 OCR由服务端 UIE-X 模型端到端完成版面理解与抽取请求构造请求体结构为{data: {text: image_base64_docs}}text字段承载图片 base64 列表支持一次请求批量提交多张图片请求路径http://0.0.0.0:8189/taskflow/uie其中taskflow/uie必须与 Server 端register_taskflow注册的路由一致端口 8189 与启动参数对应结果解析使用requests发送 JSON POST 请求并对返回的 JSON 文本解析后打印结构化抽取结果。整个请求-响应链路为Client 将图片 base64 化 → POST 到/taskflow/uie→ Server 端 Taskflow 执行 UIE-X 抽取 → 返回结构化 JSON。Server 自定义参数替换 schema抽取字段默认 schema 面向增值税发票场景schema [开票日期, 名称, 纳税人识别号, 开户行及账号, 金额, 价税合计, No, 税率, 地址、电话, 税额]实际业务中应替换为自定义字段。从 信息抽取 Taskflow 实现 源码可以看出schema 不仅支持简单的字段字符串列表实体抽取还支持嵌套结构以表达更复杂的抽取任务关系抽取schema [{歌曲名称: [歌手, 所属专辑]}]事件抽取schema [{地震触发词: [地震强度, 时间, 震中位置, 震源深度]}]观点抽取schema [{评价维度: [观点词, 情感倾向[正向负向]]}]情感分类schema [情感倾向[正向负向]]服务端内部会将 schema 构建成一棵 SchemaTreeset_schema与_build_tree方法推理时按树结构逐层遍历实现多阶段预测_multi_stage_predict。修改 schema 后无需改动其他代码重启服务即生效。设置模型路径加载定制模型默认加载微调产物uie Taskflow(information_extraction, task_path../../checkpoint/model_best/, schemaschema)task_path指向包含model_state.pdparams权重文件的目录。若使用 PaddleNLP 内置预训练模型做零样本抽取可省略task_path直接通过modeluie-x-base指定基座。此外 Taskflow 还支持precision参数如precisionfp16以半精度方式加载模型在 GPU 环境下降低显存占用、提升吞吐相关用法见 文档信息抽取指南 中的定制模型一键预测一节。多卡服务化预测负载均衡PaddleNLP SimpleServing 支持多卡负载均衡在注册服务时注册多个分别绑定不同device_id的 Taskflow 实例Server 会在这些实例间分发请求。示例uie1 Taskflow(information_extraction, task_path../../checkpoint/model_best/, schemaschema, device_id0) uie2 Taskflow(information_extraction, task_path../../checkpoint/model_best/, schemaschema, device_id1) service.register_taskflow(uie, [uie1, uie2])这里通过device_id将两个模型实例分别绑定到 GPU 0 和 GPU 1并以列表形式整体注册。从 SimpleServer.register_taskflow 源码 可以看到register_taskflow内部首先校验注册对象必须是Taskflow实例或Taskflow列表单个实例会被自动包装为列表再交给TaskflowManager统一管理从而实现对多实例请求的负载均衡调度。Client 自定义参数客户端最常调整的参数是待抽取的图片列表# Changed to image paths you wanted image_paths [../../data/images/b1.jpg]将其替换为业务实际的图片路径即可如image_paths [invoice_1.jpg, invoice_2.jpg]。客户端支持批量提交多张图片会以列表形式随请求体发送Server 端逐张抽取后一并返回结果。部署链路与源码佐证为便于读者深入将本次部署涉及的关键源码位置汇总如下环节仓库文件说明服务注册与启动paddlenlp/server/server.pySimpleServer继承 FastAPIregister_taskflow完成 Taskflow 注册与类型校验CLI 启动入口paddlenlp/cli/server.pystart_backend将--workers/--host/--port透传给uvicorn.runServer 示例simple_serving/server.py文档抽取服务注册完整示例Client 示例simple_serving/client.pybase64 图片编码与 HTTP POST 请求示例抽取核心实现paddlenlp/taskflow/information_extraction.pyschema 树构建、多阶段预测、set_schema动态更新文档解析工具paddlenlp/utils/doc_parser.pyDocParser负责图片解析与 base64 转换上游全流程文档信息抽取指南数据标注、模型微调、评估与预测的完整说明应用总览信息抽取应用 READMEUIE 系列模型能力矩阵与产业级方案总览常见问题排查启动报ModuleNotFoundError确认 PaddleNLP 版本 ≥ 2.4.4且paddlenlp server与 Python 环境一致注意避免多环境混用 pip。请求 404检查 Client 请求 URL 中的路由taskflow/uie与 Server 端register_taskflow的第一个参数是否完全一致同时确认端口号与--port启动参数一致。请求连接失败确认 Server 以--host 0.0.0.0启动且未开启防火墙拦截本地调试可改用127.0.0.1。抽取结果为空或字段缺失优先检查schema字段命名是否与业务目标一致以及task_path是否指向包含model_state.pdparams的正确目录若使用零样本模式可尝试切换基座模型。总结本文完整呈现了基于 PaddleNLP SimpleServing 的文档信息抽取服务化部署方案从pip install paddlenlp 2.4.4的环境准备到server.py中通过SimpleServer注册 UIE-X 任务流并启动 uvicorn 服务再到client.py中以 DocParser 完成图片编码并发出 HTTP 请求的闭环最后深入讲解了 schema 替换、自定义模型路径与多卡负载均衡三类自定义参数及其底层源码逻辑。开发者只需替换 schema、模型路径与图片路径三处配置即可将该方案复用到任意文档抽取业务场景实现模型的快速上线与迭代。赞分享人工智能大模型预训练微调LoRARLHF强化学习分布式训练【免费下载链接】PaddleNLPEasy-to-use and powerful LLM and SLM library with awesome model zoo.项目地址https://gitcode.com/gh_mirrors/pa/PaddleNLP点击查看免费下载相关推荐FF14动画跳过插件告别冗长副本动画的终极解决方案FF14动画跳过插件告别冗长副本动画的终极解决方案 还在为《最终幻想14》国服副本中那些无法跳过的动画而烦恼吗FFXIV_ACT_CutsceneSkip插人工智能大模型预训练微调LoRARLHF强化学习分布式训练模型推理服务推理引擎模型量化模型压缩本地部署NLPGetQzonehistoryQQ空间历史说说免费备份方案GetQzonehistoryQQ空间历史说说免费备份方案 你有多久没翻过 QQ 空间里那些老说说了想逐条找回文字、配图和评论时手动复制既慢又容易漏。Ge人工智能大模型预训练微调LoRARLHF强化学习分布式训练模型推理服务推理引擎模型量化模型压缩本地部署NLPTimesFM 2.5架构深度解析时间序列基础模型的设计原理与性能优化TimesFM 2.5架构深度解析时间序列基础模型的设计原理与性能优化 TimesFMTime Series Foundation Model是Googl人工智能大模型预训练微调LoRARLHF强化学习分布式训练模型推理服务推理引擎模型量化模型压缩本地部署NLP上一篇如何用 Ramp 自动化技能按日期和状态筛选公司卡交易并翻页导出下一篇Google Drive仅查看PDF如何下载2025最全图文教程帮你解决难题创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

OpenShift Origin QuickStart 模板详解:应用骨架的构建原理、参数体系与自动同步机制

OpenShift Origin QuickStart 模板详解:应用骨架的构建原理、参数体系与自动同步机制

测试云原生质量保障 【免费下载链接】origin Conformance test suite for OpenShift 项目地址: https://gitcode.com/gh_mirrors/or/origin 点击查看 免费下载 本篇技术文章基于 examples/quickstarts/README.md 展开,系统讲解 OpenShift Origin 中 Qui…

2026/9/25 3:57:05 阅读更多 →
pylibcudf 的 ORC 读写 API 完全指南:从 read_orc 到分块写入

pylibcudf 的 ORC 读写 API 完全指南:从 read_orc 到分块写入

数据分析数据工程机器学习 【免费下载链接】cudf cuDF - GPU DataFrame Library 项目地址: https://gitcode.com/gh_mirrors/cu/cudf 点击查看 免费下载 本篇技术指南以 cuDF 仓库中 pylibcudf 的 ORC(Optimized Row Columnar)格式 I/O 模块…

2026/9/25 3:56:05 阅读更多 →
TCNOpen 源码编译与 TRDP 协议通信测试实战指南

TCNOpen 源码编译与 TRDP 协议通信测试实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 3:56:05 阅读更多 →

最新新闻

龙芯GPU平台首个软件版本发布:支持OpenCL 3.0与CUDA兼容,AI推理部署实战解析

龙芯GPU平台首个软件版本发布:支持OpenCL 3.0与CUDA兼容,AI推理部署实战解析

1. 龙芯GPU平台首个软件版本到底发布了什么龙芯发布自研通用GPU加速计算平台首个软件版本,这条消息在圈子里传开的时候,我第一反应是去翻它的技术白皮书和开发者文档。原因很简单:硬件参数可以堆,但软件栈能不能跑通、能不能让开发…

2026/9/25 10:27:14 阅读更多 →
PyCharm必装AI编码工具大盘点:TaoToken统一Key接入与settings.json配置骨架

PyCharm必装AI编码工具大盘点:TaoToken统一Key接入与settings.json配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 10:27:14 阅读更多 →
Vibe Coding氛围编程系列:AI 模型  服务选择之那个模型编程能力最强?TaoToken 统一 Key 配置实测

Vibe Coding氛围编程系列:AI 模型 服务选择之那个模型编程能力最强?TaoToken 统一 Key 配置实测

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 10:27:14 阅读更多 →
TaoToken 统一 Key 接入 Cline:settings.json 配置骨架与连通性验证

TaoToken 统一 Key 接入 Cline:settings.json 配置骨架与连通性验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 10:27:14 阅读更多 →
SWE-Explore 基准解读:Coding Agents 如何探索 Repositories 与 TaoToken 配置骨架

SWE-Explore 基准解读:Coding Agents 如何探索 Repositories 与 TaoToken 配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 10:27:14 阅读更多 →
Atlas 300V 24G AI推理加速卡部署YOLO全流程:模型转换、ATC优化与性能调优

Atlas 300V 24G AI推理加速卡部署YOLO全流程:模型转换、ATC优化与性能调优

1. Atlas 300V 24G这张卡到底是怎么回事先说结论:atlas 300V 24G确实是运算加速卡,但更准确的说法是“AI推理加速卡”。它不带显示输出接口,不能像显卡那样插上就出画面,它被设计出来的唯一目标,就是把训练好的神经网络…

2026/9/25 10:26:14 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →