微信扫码
与创始人交个朋友
我要投稿
在上一篇文章中,我们体验了百度智能文档解析方案,并使用PaddleX低代码工具实现了表格识别模块的应用集成体验。本篇将深入探讨如何发布智能文档解析服务,以及如何构建API集成。我们以通用版面分析服务为例,介绍从模型发布到API集成的完整流程。这个过程不仅展示了文档服务的部署方法,还体现了飞桨平台在简化AI应用开发方面的便捷性,为开发人员提供了快速创建商用级文档解析服务的途径。
通用版面分析介绍
版面解析是一种将文档图像转化为机器可读数据格式的技术,广泛应用于文档管理和信息提取等领域。通过结合OCR、图像处理和机器学习,版面解析能够识别文档中的文本块、图片、表格等版面元素,最终生成结构化数据,大大提高了数据处理的效率和准确性。典型的通用版面解析流程包括表格识别、版面区域分析、文本检测、公式识别等模块,帮助实现从简单文本到复杂文档的全面信息提取。这种技术为企业和数据密集型行业带来了显著的效益,提升了自动化文档处理的能力。
服务化部署是生产环境中高效、灵活的部署方式,通过将推理模型打包为独立服务,客户端可以通过网络请求访问,获取实时推理结果。这种方式不仅减少了部署难度,还使得模型的扩展和更新更加便捷,适合需求多变的业务场景。PaddleX 支持低成本地实现产线级服务化部署,用户可快速集成模型推理服务,从而满足多种应用需求。这种方式特别适合需要高可用性和可扩展性的场景,如智能客服、图像分析等。
服务化部署示例图:
用户可以灵活选择要发布的模型模块,这些模型会通过 HTTP 协议作为接口发布,实现服务化部署,便于应用端直接调用,完成文档识别和解析。这样不仅简化了模型集成的流程,还提升了系统的可扩展性。无论是文本识别、表格解析,还是版面分析等功能,都能以标准化的服务形式供前端调用,为业务系统提供更稳定、高效的文档处理能力。
服务发布具体步骤
1、安装服务化部署插件
执行如下指令,安装服务化部署插件:
paddlex --install serving
通过 PaddleX CLI 启动服务,指令格式为:
paddlex --serve --pipeline {产线名称或产线配置文件路径} [{其他命令行选项}]
以通用版面解析产线为例:
paddlex --serve --pipeline layout_parsing
服务启动成功后,可以看到类似如下展示的信息:
INFO: Started server process [63108]INFO: Waiting for application startup.INFO: Application startup complete.INFO: Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit)
名称 | 说明 |
---|---|
--pipeline | 产线名称或产线配置文件路径。 |
--device | 产线部署设备。默认为 cpu (如 GPU 不可用)或 gpu (如 GPU 可用)。 |
--host | 服务器绑定的主机名或 IP 地址。默认为0.0.0.0。 |
--port | 服务器监听的端口号。默认为8080。 |
--use_hpip | 如果指定,则启用高性能推理插件。 |
--serial_number | 高性能推理插件使用的序列号。只在启用高性能推理插件时生效。请注意,并非所有产线、模型都支持使用高性能推理插件,详细的支持情况请参考PaddleX 高性能推理指南。 |
--update_license | 如果指定,则进行联网激活。只在启用高性能推理插件时生效。 |
在成功发布模型服务后,接下来的关键任务是构建自定义的解析应用层。这个层级可以根据具体的业务需求,进一步处理模型返回的解析结果。通过应用级别的操作,我们可以更灵活地对文字和表格数据进行拆分、聚合等操作,特别是针对 RAG(检索增强生成)场景的需求,将数据转化为向量化存储格式。这种设计不仅提升了文档解析的精度和效率,还为业务场景提供了可扩展的、个性化的数据处理能力。
以下是Python语言实现的应用基础代码示例:
import base64
import requests
API_URL = "http://localhost:8080/layout-parsing" # 服务URL
# 对本地图像进行Base64编码
with open(image_path, "rb") as file:
image_bytes = file.read()
image_data = base64.b64encode(image_bytes).decode("ascii")
payload = {
"file": image_data, # Base64编码的文件内容或者文件URL
"fileType": 1,
"useImgOrientationCls": True,
"useImgUnwrapping": True,
"useSealTextDet": True,
}
# 调用API
response = requests.post(API_URL, json=payload)
# 处理接口返回数据
assert response.status_code == 200
result = response.json()["result"]
print("\nDetected layout elements:")
for res in result["layoutParsingResults"]:
for ele in res["layoutElements"]:
print("===============================")
print("bbox:", ele["bbox"])
print("label:", ele["label"])
print("text:", repr(ele["text"]))
这是一个简单的模型服务调用示例,而在实际的 RAG 系统中,我们会进一步优化这种服务调用方式。通常会设计一个独立的类来处理模型调用和结果解析,以实现解耦和模块化。这种封装方式不仅使代码更具可读性和可维护性,也更便于扩展多样化的业务场景。通过这样的架构设计,应用端可以灵活调用服务,适应更复杂的文档解析需求,并在业务逻辑上实现更高的自定义和优化。
总结
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-12-22
告别加班!这款 AI 数据神器,让你像聊天一样轻松搞定数据!
2024-12-21
全网最全ChatGPT财务分析提示词解决方案
2024-12-21
万字长文梳理基于LLM的Text-to-SQL发展进程
2024-12-20
从0到1解构数据问答系统架构:三层模型全解析
2024-12-19
博士眼镜 × 观远数据 × 飞书 | AI 和 BI 赋能业务实践
2024-12-19
传统水务如何借助AI完成智能化升级?一文看懂核心架构与实战应用!
2024-12-18
ChatBl有什么用,看这篇就够了!
2024-12-18
在Windows上使用RAGFlow+Ollama+Qwen2.5,搭建医疗问诊助手(附相关数据集和案例)
2024-06-20
2024-06-14
2024-07-03
2024-06-06
2024-06-14
2024-06-21
2024-06-16
2024-06-07
2024-07-24
2024-10-09
2024-12-13
2024-11-19
2024-11-06
2024-10-25
2024-10-25
2024-10-25
2024-10-18
2024-10-09