PP-ChatOCRv3—文档场景信息抽取v3产线使用教程

文档场景信息抽取v3产线使用教程

1. 文档场景信息抽取v3产线介绍

文档场景信息抽取v3(PP-ChatOCRv3)是飞桨特色的文档和图像智能分析解决方案,结合了 LLM 和 OCR 技术,一站式解决版面分析、生僻字、多页 pdf、表格、印章识别等常见的复杂文档信息抽取难点问题,结合文心大模型将海量数据和知识相融合,准确率高且应用广泛。

在这里插入图片描述

文档场景信息抽取v3产线中包含表格结构识别模块版面区域检测模块文本检测模块文本识别模块印章文本检测模块文本图像矫正模块文档图像方向分类模块

如您更考虑模型精度,请选择精度较高的模型,如您更考虑模型推理速度,请选择推理速度较快的模型,如您更考虑模型存储大小,请选择存储大小较小的模型。其中部分模型的 benchmark 如下:

👉模型列表详情

表格结构识别模块模型:

模型精度(%)GPU推理耗时 (ms)CPU推理耗时(ms)模型存储大小 (M)介绍
SLANet59.52522.5361845.376.9 MSLANet 是百度飞桨视觉团队自研的表格结构识别模型。该模型通过采用CPU 友好型轻量级骨干网络PP-LCNet、高低层特征融合模块CSP-PAN、结构与位置信息对齐的特征解码模块SLA Head,大幅提升了表格结构识别的精度和推理速度。
SLANet_plus63.69522.5361845.376.9 MSLANet_plus 是百度飞桨视觉团队自研的表格结构识别模型SLANet的增强版。相较于SLANet,SLANet_plus 对无线表、复杂表格的识别能力得到了大幅提升,并降低了模型对表格定位准确性的敏感度,即使表格定位出现偏移,也能够较准确地进行识别。

注:以上精度指标测量PaddleX 内部自建英文表格识别数据集。所有模型 GPU 推理耗时基于 NVIDIA Tesla T4 机器,精度类型为 FP32, CPU 推理速度基于 Intel® Xeon® Gold 5117 CPU @ 2.00GHz,线程数为8,精度类型为 FP32。

版面区域检测模块模型:

模型mAP(0.5)(%)GPU推理耗时(ms)CPU推理耗时 (ms)模型存储大小(M)介绍
PicoDet_layout_1x86.813.091.37.4基于PicoDet-1x在PubLayNet数据集训练的高效率版面区域定位模型,可定位包含文字、标题、表格、图片以及列表这5类区域
PicoDet-L_layout_3cls89.315.7159.822.6基于PicoDet-L在中英文论文、杂志和研报等场景上自建数据集训练的高效率版面区域定位模型,包含3个类别:表格,图像和印章
RT-DETR-H_layout_3cls95.9114.63832.6470.1基于RT-DETR-H在中英文论文、杂志和研报等场景上自建数据集训练的高精度版面区域定位模型,包含3个类别:表格,图像和印章
RT-DETR-H_layout_17cls92.6115.13827.2470.2基于RT-DETR-H在中英文论文、杂志和研报等场景上自建数据集训练的高精度版面区域定位模型,包含17个版面常见类别,分别是:段落标题、图片、文本、数字、摘要、内容、图表标题、公式、表格、表格标题、参考文献、文档标题、脚注、页眉、算法、页脚、印章

注:以上精度指标的评估集是 PaddleOCR 自建的版面区域分析数据集,包含中英文论文、杂志和研报等常见的 1w 张文档类型图片。GPU 推理耗时基于 NVIDIA Tesla T4 机器,精度类型为 FP32, CPU 推理速度基于 Intel® Xeon® Gold 5117 CPU @ 2.00GHz,线程数为 8,精度类型为 FP32。

文本检测模块模型:

模型检测Hmean(%)GPU推理耗时(ms)CPU推理耗时 (ms)模型存储大小(M)介绍
PP-OCRv4_server_det82.6983.35012434.01109PP-OCRv4 的服务端文本检测模型,精度更高,适合在性能较好的服务器上部署
PP-OCRv4_mobile_det77.7910.6923120.1774.7PP-OCRv4 的移动端文本检测模型,效率更高,适合在端侧设备部署

注:以上精度指标的评估集是 PaddleOCR 自建的中文数据集,覆盖街景、网图、文档、手写多个场景,其中检测包含 500 张图片。以上所有模型 GPU 推理耗时基于 NVIDIA Tesla T4 机器,精度类型为 FP32, CPU 推理速度基于 Intel® Xeon® Gold 5117 CPU @ 2.00GHz,线程数为8,精度类型为 FP32。

文本识别模块模型:

模型识别 Avg Accuracy(%)GPU推理耗时(ms)CPU推理耗时 (ms)模型存储大小(M)介绍
PP-OCRv4_mobile_rec78.207.9501846.786810.6 MPP-OCRv4是百度飞桨视觉团队自研的文本识别模型PP-OCRv3的下一个版本,通过引入数据增强方案、GTC-NRTR指导分支等策略,在模型推理速度不变的情况下,进一步提升了文本识别精度。该模型提供了服务端(server)和移动端(mobile)两个不同版本,来满足不同场景下的工业需求。
PP-OCRv4_server_rec 79.207.19439140.17971.2 M

注:以上精度指标的评估集是 PaddleOCR 自建的中文数据集,覆盖街景、网图、文档、手写多个场景,其中文本识别包含 1.1w 张图片。所有模型 GPU 推理耗时基于 NVIDIA Tesla T4 机器,精度类型为 FP32, CPU 推理速度基于 Intel® Xeon® Gold 5117 CPU @ 2.00GHz,线程数为8,精度类型为 FP32。

模型识别 Avg Accuracy(%)GPU推理耗时(ms)CPU推理耗时(ms)模型存储大小(M)介绍
ch_SVTRv2_rec68.818.36801165.70673.9 M SVTRv2 是一种由复旦大学视觉与学习实验室(FVL)的OpenOCR团队研发的服务端文本识别模型,其在PaddleOCR算法模型挑战赛 - 赛题一:OCR端到端识别任务中荣获一等奖,A榜端到端识别精度相比PP-OCRv4提升6%。

注:以上精度指标的评估集是 PaddleOCR算法模型挑战赛 - 赛题一:OCR端到端识别任务A榜。 所有模型 GPU 推理耗时基于 NVIDIA Tesla T4 机器,精度类型为 FP32, CPU 推理速度基于 Intel® Xeon® Gold 5117 CPU @ 2.00GHz,线程数为8,精度类型为 FP32。

模型识别 Avg Accuracy(%)GPU推理耗时(ms)CPU推理耗时(ms)模型存储大小(M)介绍
ch_RepSVTR_rec65.0710.504751.564722.1 M RepSVTR 文本识别模型是一种基于SVTRv2 的移动端文本识别模型,其在PaddleOCR算法模型挑战赛 - 赛题一:OCR端到端识别任务中荣获一等奖,B榜端到端识别精度相比PP-OCRv4提升2.5%,推理速度持平。

注:以上精度指标的评估集是 PaddleOCR算法模型挑战赛 - 赛题一:OCR端到端识别任务B榜。 所有模型 GPU 推理耗时基于 NVIDIA Tesla T4 机器,精度类型为 FP32, CPU 推理速度基于 Intel® Xeon® Gold 5117 CPU @ 2.00GHz,线程数为8,精度类型为 FP32。

印章文本检测模块模型:

模型检测Hmean(%)GPU推理耗时(ms)CPU推理耗时 (ms)模型存储大小(M)介绍
PP-OCRv4_server_seal_det98.2184.3412425.06109PP-OCRv4的服务端印章文本检测模型,精度更高,适合在较好的服务器上部署
PP-OCRv4_mobile_seal_det96.4710.5878131.8134.6PP-OCRv4的移动端印章文本检测模型,效率更高,适合在端侧部署

注:以上精度指标的评估集是自建的数据集,包含500张圆形印章图像。GPU 推理耗时基于 NVIDIA Tesla T4 机器,精度类型为 FP32, CPU 推理速度基于 Intel® Xeon® Gold 5117 CPU @ 2.00GHz,线程数为 8,精度类型为 FP32。

文本图像矫正模块模型:

模型MS-SSIM (%)模型存储大小(M)介绍
UVDoc54.4030.3 M高精度文本图像矫正模型

模型的精度指标测量自 DocUNet benchmark。

文档图像方向分类模块模型:

模型Top-1 Acc(%)GPU推理耗时(ms)CPU推理耗时 (ms)模型存储大小(M)介绍
PP-LCNet_x1_0_doc_ori99.063.848459.237357基于PP-LCNet_x1_0的文档图像分类模型,含有四个类别,即0度,90度,180度,270度

注:以上精度指标的评估集是自建的数据集,覆盖证件和文档等多个场景,包含 1000 张图片。GPU 推理耗时基于 NVIDIA Tesla T4 机器,精度类型为 FP32, CPU 推理速度基于 Intel® Xeon® Gold 5117 CPU @ 2.00GHz,线程数为 8,精度类型为 FP32。


2. 快速开始

PaddleX 所提供的预训练的模型产线均可以快速体验效果,你可以在线体验文档场景信息抽取v3产线的效果,也可以在本地使用 Python 体验文档场景信息抽取v3产线的效果。

2.1 在线体验

您可以在线体验文档场景信息抽取v3产线的效果,用官方提供的 Demo 图片进行识别,例如:

在这里插入图片描述

如果您对产线运行的效果满意,可以直接对产线进行集成部署,如果不满意,您也可以利用私有数据对产线中的模型进行在线微调

2.2 本地体验

在本地使用文档场景信息抽取v3产线前,请确保您已经按照PaddleX本地安装教程完成了PaddleX的wheel包安装。

几行代码即可完成产线的快速推理,使用 测试文件,以通用文档场景信息抽取v3产线为例:

from paddlex import create_pipelinepipeline = create_pipeline(pipeline="PP-ChatOCRv3-doc",llm_name="ernie-3.5",llm_params={"api_type": "qianfan", "ak": "", "sk": ""} # 请填入您的ak与sk,否则无法调用大模型# llm_params={"api_type": "aistudio", "access_token": ""} # 请填入您的access_token,否则无法调用大模型)visual_result, visual_info = pipeline.visual_predict("https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/contract.pdf")for res in visual_result:res.save_to_img("./output")res.save_to_html('./output')res.save_to_xlsx('./output')vector = pipeline.build_vector(visual_info=visual_info)chat_result = pipeline.chat(key_list=["乙方", "手机号"],visual_info=visual_info,vector=vector,)
chat_result.print()

:目前仅支持文心大模型,支持在百度云千帆平台或者星河社区 AIStudio上获取相关的 ak/sk(access_token)。如果使用百度云千帆平台,可以参考AK和SK鉴权调用API流程 获取ak/sk,如果使用星河社区 AIStudio,可以在星河社区 AIStudio 访问令牌中获取 access_token。

运行后,输出结果如下:

{'chat_res': {'乙方': '股份测试有限公司', '手机号': '19331729920'}, 'prompt': ''}

在上述 Python 脚本中,执行了如下四个步骤:

(1)调用 create_pipeline 方法实例化文档场景信息抽取v3产线对象,相关参数说明如下:

参数参数类型默认值参数说明
pipelinestr产线名称或是产线配置文件路径,如为产线名称,则必须为 PaddleX 所支持的产线;
llm_namestr“ernie-3.5”大语言模型名称,目前支持ernie-4.0ernie-3.5,更多模型支持中;
llm_paramsdict{}LLM相关API配置;
devicestr、NoneNone运行设备(None为自动适配);

(2)调用文档场景信息抽取v3产线对象的 visual_predict 方法进行视觉推理预测,相关参数说明如下:

参数参数类型默认值参数说明
inputPython Var用于输入待预测数据,支持直接传入Python变量,如numpy.ndarray表示的图像数据;
inputstr用于输入待预测数据,支持传入待预测数据文件路径,如图像文件的本地路径:/root/data/img.jpg
inputstr用于输入待预测数据,支持传入待预测数据文件url,如https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/contract.pdf
inputstr用于输入待预测数据,支持传入本地目录,该目录下需包含待预测数据文件,如本地路径:/root/data/
inputdict用于输入待预测数据,支持传入字典类型,字典的key需要与具体产线对应,如文档场景信息抽取v3产线为"img",字典的val支持上述类型数据,如:{"img": "/root/data1"}
inputlist用于输入待预测数据,支持传入列表,列表元素需为上述类型数据,如[numpy.ndarray, numpy.ndarray]["/root/data/img1.jpg", "/root/data/img2.jpg"]["/root/data1", "/root/data2"][{"img": "/root/data1"}, {"img": "/root/data2/img.jpg"}]
use_doc_image_ori_cls_modelboolTrue是否使用方向分类模型;
use_doc_image_unwarp_modelboolTrue是否使用版面矫正产线;
use_seal_text_det_modelboolTrue是否使用弯曲文本检测产线;

(3)调用视觉推理预测结果对象的相关方法对视觉推理预测结果进行保存,具体方法如下:

方法参数方法说明
save_to_imgsave_path将OCR预测结果、版面分析结果、表格识别结果保存为图片文件,参数save_path用于指定保存的路径;
save_to_htmlsave_path将表格识别结果保存为html文件,参数save_path用于指定保存的路径;
save_to_xlsxsave_path将表格识别结果保存为xlsx文件,参数save_path用于指定保存的路径;

(4)调用文档场景信息抽取v3产线对象的 chat 方法与大模型进行交互,相关参数说明如下:

参数参数类型默认值参数说明
key_liststr用于查询的关键字(query);支持“,”或“,”作为分隔符的多个关键字组成的字符串,如“乙方,手机号”;
key_listlist用于查询的关键字(query),支持list形式表示的一组关键字,其元素为str类型;

在执行上述 Python 脚本时,加载的是默认的文档场景信息抽取v3产线配置文件,若您需要自定义配置文件,可执行如下命令获取:

paddlex --get_pipeline_config PP-ChatOCRv3-doc

执行后,文档场景信息抽取v3产线配置文件将被保存在当前路径。若您希望自定义保存位置,可执行如下命令(假设自定义保存位置为 ./my_path ):

paddlex --get_pipeline_config PP-ChatOCRv3-doc --save_path ./my_path

获取配置文件后,您即可对文档场景信息抽取v3产线各项配置进行自定义:

Pipeline:layout_model: RT-DETR-H_layout_3clstable_model: SLANet_plustext_det_model: PP-OCRv4_server_dettext_rec_model: PP-OCRv4_server_recseal_text_det_model: PP-OCRv4_server_seal_detdoc_image_ori_cls_model: nulldoc_image_unwarp_model: nullllm_name: "ernie-3.5"llm_params:api_type: qianfanak:sk:

在上述配置中,您可以修改产线各模块加载的模型,也可以修改使用的大模型。各模块支持模型列表请参考模块文档,大模型支持列表为:ernie-4.0、ernie-3.5、ernie-3.5-8k、ernie-lite、ernie-tiny-8k、ernie-speed、ernie-speed-128k、ernie-char-8k。

修改后,只需要修改 create_pipeline 方法中的 pipeline 参数值为产线配置文件路径即可应用配置。

例如,若您的配置文件保存在 ./my_path/PP-ChatOCRv3-doc.yaml ,则只需执行:

from paddlex import create_pipelinepipeline = create_pipeline(pipeline="./my_path/PP-ChatOCRv3-doc.yaml",llm_name="ernie-3.5",llm_params={"api_type": "qianfan", "ak": "", "sk": ""} # 请填入您的ak与sk,否则无法调用大模型# llm_params={"api_type": "aistudio", "access_token": ""} # 请填入您的access_token,否则无法调用大模型)visual_result, visual_info = pipeline.visual_predict("https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/contract.pdf")for res in visual_result:res.save_to_img("./output")res.save_to_html('./output')res.save_to_xlsx('./output')vector = pipeline.build_vector(visual_info=visual_info)chat_result = pipeline.chat(key_list=["乙方", "手机号"],visual_info=visual_info,vector=vector,)
chat_result.print()

3. 开发集成/部署

如果产线可以达到您对产线推理速度和精度的要求,您可以直接进行开发集成/部署。

若您需要将产线直接应用在您的Python项目中,可以参考 2.2 本地体验中的示例代码。

此外,PaddleX 也提供了其他三种部署方式,详细说明如下:

🚀 高性能推理:在实际生产环境中,许多应用对部署策略的性能指标(尤其是响应速度)有着较严苛的标准,以确保系统的高效运行与用户体验的流畅性。为此,PaddleX 提供高性能推理插件,旨在对模型推理及前后处理进行深度性能优化,实现端到端流程的显著提速,详细的高性能推理流程请参考PaddleX高性能推理指南。

☁️ 服务化部署:服务化部署是实际生产环境中常见的一种部署形式。通过将推理功能封装为服务,客户端可以通过网络请求来访问这些服务,以获取推理结果。PaddleX 支持用户以低成本实现产线的服务化部署,详细的服务化部署流程请参考PaddleX服务化部署指南。

下面是API参考和多语言服务调用示例:

API参考

对于服务提供的所有操作:

  • 响应体以及POST请求的请求体均为JSON数据(JSON对象)。

  • 当请求处理成功时,响应状态码为200,响应体的属性如下:

    名称类型含义
    errorCodeinteger错误码。固定为0
    errorMsgstring错误说明。固定为"Success"

    响应体还可能有result属性,类型为object,其中存储操作结果信息。

  • 当请求处理未成功时,响应体的属性如下:

    名称类型含义
    errorCodeinteger错误码。与响应状态码相同。
    errorMsgstring错误说明。

服务提供的操作如下:

  • analyzeImage

    使用计算机视觉模型对图像进行分析,获得OCR、表格识别结果等,并提取图像中的关键信息。

    POST /chatocr-vision

    • 请求体的属性如下:

      名称类型含义是否必填
      filestring服务可访问的图像文件或PDF文件的URL,或上述类型文件内容的Base64编码结果。对于超过10页的PDF文件,只有前10页的内容会被使用。
      fileTypeinteger文件类型。0表示PDF文件,1表示图像文件。若请求体无此属性,则服务将尝试根据URL自动推断文件类型。
      useImgOrientationClsboolean是否启用文档图像方向分类功能。默认启用该功能。
      useImgUnwrappingboolean是否启用文本图像矫正功能。默认启用该功能。
      useSealTextDetboolean是否启用印章文本检测功能。默认启用该功能。
      inferenceParamsobject推理参数。

      inferenceParams的属性如下:

      名称类型含义是否必填
      maxLongSideinteger推理时,若文本检测模型的输入图像较长边的长度大于maxLongSide,则将对图像进行缩放,使其较长边的长度等于maxLongSide
    • 请求处理成功时,响应体的result具有如下属性:

      名称类型含义
      visionResultsarray使用计算机视觉模型得到的分析结果。数组长度为1(对于图像输入)或文档页数与10中的较小者(对于PDF输入)。对于PDF输入,数组中的每个元素依次表示PDF文件中每一页的处理结果。
      visionInfoobject图像中的关键信息,可用作其他操作的输入。

      visionResults中的每个元素为一个object,具有如下属性:

      名称类型含义
      textsarray文本位置、内容和得分。
      tablesarray表格位置和内容。
      inputImagestring输入图像。图像为JPEG格式,使用Base64编码。
      ocrImagestringOCR结果图。图像为JPEG格式,使用Base64编码。
      layoutImagestring版面区域检测结果图。图像为JPEG格式,使用Base64编码。

      texts中的每个元素为一个object,具有如下属性:

      名称类型含义
      polyarray文本位置。数组中元素依次为包围文本的多边形的顶点坐标。
      textstring文本内容。
      scorenumber文本识别得分。

      tables中的每个元素为一个object,具有如下属性:

      名称类型含义
      bboxarray表格位置。数组中元素依次为边界框左上角x坐标、左上角y坐标、右下角x坐标以及右下角y坐标。
      htmlstringHTML格式的表格识别结果。
  • buildVectorStore

    构建向量数据库。

    POST /chatocr-vector

    • 请求体的属性如下:

      名称类型含义是否必填
      visionInfoobject图像中的关键信息。由analyzeImage操作提供。
      minCharsinteger启用向量数据库的最小数据长度。
      llmRequestIntervalnumber调用大语言模型API的间隔时间。
      llmNamestring大语言模型名称。
      llmParamsobject大语言模型API参数。

      当前,llmParams 可以采用如下形式:

      {"apiType": "qianfan","apiKey": "{千帆平台API key}","secretKey": "{千帆平台secret key}"
      }
      
    • 请求处理成功时,响应体的result具有如下属性:

      名称类型含义
      vectorStorestring向量数据库序列化结果,可用作其他操作的输入。
  • retrieveKnowledge

    进行知识检索。

    POST /chatocr-retrieval

    • 请求体的属性如下:

      名称类型含义是否必填
      keysarray关键词列表。
      vectorStorestring向量数据库序列化结果。由buildVectorStore操作提供。
      llmNamestring大语言模型名称。
      llmParamsobject大语言模型API参数。

      当前,llmParams 可以采用如下形式:

      {"apiType": "qianfan","apiKey": "{千帆平台API key}","secretKey": "{千帆平台secret key}"
      }
      
    • 请求处理成功时,响应体的result具有如下属性:

      名称类型含义
      retrievalResultstring知识检索结果,可用作其他操作的输入。
  • chat

    与大语言模型交互,利用大语言模型提炼关键信息。

    POST /chatocr-vision

    • 请求体的属性如下:

      名称类型含义是否必填
      keysarray关键词列表。
      visionInfoobject图像中的关键信息。由analyzeImage操作提供。
      taskDescriptionstring提示词任务。
      rulesstring提示词规则。用于自定义信息抽取规则,例如规范输出格式。
      fewShotstring提示词示例。
      vectorStorestring向量数据库序列化结果。由buildVectorStore操作提供。
      retrievalResultstring知识检索结果。由retrieveKnowledge操作提供。
      returnPromptsboolean是否返回使用的提示词。默认启用。
      llmNamestring大语言模型名称。
      llmParamsobject大语言模型API参数。

      当前,llmParams 可以采用如下形式:

      {"apiType": "qianfan","apiKey": "{千帆平台API key}","secretKey": "{千帆平台secret key}"
      }
      
    • 请求处理成功时,响应体的result具有如下属性:

      名称类型含义
      chatResultobject关键信息抽取结果。
      promptsobject使用的提示词。

      prompts的属性如下:

      名称类型含义
      ocrstringOCR提示词。
      tablestring表格提示词。
      htmlstringHTML提示词。
多语言调用服务示例 Python
import base64
import pprint
import sysimport requestsAPI_BASE_URL = "http://0.0.0.0:8080"
API_KEY = "{千帆平台API key}"
SECRET_KEY = "{千帆平台secret key}"
LLM_NAME = "ernie-3.5"
LLM_PARAMS = {"apiType": "qianfan","apiKey": API_KEY,"secretKey": SECRET_KEY,
}file_path = "./demo.jpg"
keys = ["电话"]with open(file_path, "rb") as file:file_bytes = file.read()file_data = base64.b64encode(file_bytes).decode("ascii")payload = {"file": file_data,"fileType": 1,"useImgOrientationCls": True,"useImgUnwrapping": True,"useSealTextDet": True,
}
resp_vision = requests.post(url=f"{API_BASE_URL}/chatocr-vision", json=payload)
if resp_vision.status_code != 200:print(f"Request to chatocr-vision failed with status code {resp_vision.status_code}.")pprint.pp(resp_vision.json())sys.exit(1)
result_vision = resp_vision.json()["result"]for i, res in enumerate(result_vision["visionResults"]):print("Texts:")pprint.pp(res["texts"])print("Tables:")pprint.pp(res["tables"])ocr_img_path = f"ocr_{i}.jpg"with open(ocr_img_path, "wb") as f:f.write(base64.b64decode(res["ocrImage"]))layout_img_path = f"layout_{i}.jpg"with open(layout_img_path, "wb") as f:f.write(base64.b64decode(res["layoutImage"]))print(f"Output images saved at {ocr_img_path} and {layout_img_path}")payload = {"visionInfo": result_vision["visionInfo"],"minChars": 200,"llmRequestInterval": 1000,"llmName": LLM_NAME,"llmParams": LLM_PARAMS,
}
resp_vector = requests.post(url=f"{API_BASE_URL}/chatocr-vector", json=payload)
if resp_vector.status_code != 200:print(f"Request to chatocr-vector failed with status code {resp_vector.status_code}.")pprint.pp(resp_vector.json())sys.exit(1)
result_vector = resp_vector.json()["result"]payload = {"keys": keys,"vectorStore": result_vector["vectorStore"],"llmName": LLM_NAME,"llmParams": LLM_PARAMS,
}
resp_retrieval = requests.post(url=f"{API_BASE_URL}/chatocr-retrieval", json=payload)
if resp_retrieval.status_code != 200:print(f"Request to chatocr-retrieval failed with status code {resp_retrieval.status_code}.")pprint.pp(resp_retrieval.json())sys.exit(1)
result_retrieval = resp_retrieval.json()["result"]payload = {"keys": keys,"visionInfo": result_vision["visionInfo"],"taskDescription": "","rules": "","fewShot": "","vectorStore": result_vector["vectorStore"],"retrievalResult": result_retrieval["retrievalResult"],"returnPrompts": True,"llmName": LLM_NAME,"llmParams": LLM_PARAMS,
}
resp_chat = requests.post(url=f"{API_BASE_URL}/chatocr-chat", json=payload)
if resp_chat.status_code != 200:print(f"Request to chatocr-chat failed with status code {resp_chat.status_code}.")pprint.pp(resp_chat.json())sys.exit(1)
result_chat = resp_chat.json()["result"]
print("\nPrompts:")
pprint.pp(result_chat["prompts"])
print("Final result:")
print(result_chat["chatResult"])

:请在 API_KEYSECRET_KEY 处填入您的 API key 和 secret key。


📱 端侧部署:端侧部署是一种将计算和数据处理功能放在用户设备本身上的方式,设备可以直接处理数据,而不需要依赖远程的服务器。PaddleX 支持将模型部署在 Android 等端侧设备上,详细的端侧部署流程请参考PaddleX端侧部署指南。
您可以根据需要选择合适的方式部署模型产线,进而进行后续的 AI 应用集成。

4. 二次开发

如果通用文档场景信息抽取v3产线提供的默认模型权重在您的场景中,精度或速度不满意,您可以尝试利用您自己拥有的特定领域或应用场景的数据对现有模型进行进一步的微调,以提升通用表格识别产线的在您的场景中的识别效果。

4.1 模型微调

由于通用文档场景信息抽取v3产线包含六个模块,模型产线的效果不及预期可能来自于其中任何一个模块(文本图像矫正模块暂不支持二次开发)。

您可以对识别效果差的图片进行分析,参考如下规则进行分析和模型微调:

  • 检测到的表格结构错误(如行列识别错误、单元格位置错误),那么可能是表格结构识别模块存在不足,您需要参考表格结构识别模块开发教程中的二次开发章节,使用您的私有数据集对表格结构识别模型进行微调。
  • 版面中存在定位错误(例如对表格、印章的位置识别错误),那么可能是版面区域定位模块存在不足,您需要参考版面区域检测模块开发教程中的二次开发章节,使用您的私有数据集对版面区域定位模型进行微调。
  • 有较多的文本未被检测出来(即文本漏检现象),那么可能是文本检测模型存在不足,您需要参考文本检测模块开发教程中的二次开发章节,使用您的私有数据集对文本检测模型进行微调。
  • 已检测到的文本中出现较多的识别错误(即识别出的文本内容与实际文本内容不符),这表明文本识别模型需要进一步改进,您需要参考文本识别模块开发教程中的二次开发章节对文本识别模型进行微调。
  • 已检测到的印章文本出现较多的识别错误,这表明印章文本检测模块模型需要进一步改进,您需要参考印章文本检测模块开发教程中的二次开发章节对印章文本检测模型进行微调。
  • 含文字区域的文档或证件的方向存在较多的识别错误,这表明文档图像方向分类模型需要进一步改进,您需要参考文档图像方向分类模块开发教程中的二次开发章节对文档图像方向分类模型进行微调。

4.2 模型应用

当您使用私有数据集完成微调训练后,可获得本地模型权重文件。

若您需要使用微调后的模型权重,只需对产线配置文件做修改,将微调后模型权重的本地路径替换至产线配置文件中的对应位置即可:

......
Pipeline:layout_model: RT-DETR-H_layout_3cls  #可修改为微调后模型的本地路径table_model: SLANet_plus  #可修改为微调后模型的本地路径text_det_model: PP-OCRv4_server_det  #可修改为微调后模型的本地路径text_rec_model: PP-OCRv4_server_rec  #可修改为微调后模型的本地路径seal_text_det_model: PP-OCRv4_server_seal_det  #可修改为微调后模型的本地路径doc_image_ori_cls_model: null   #可修改为微调后模型的本地路径doc_image_unwarp_model: null   #可修改为微调后模型的本地路径
......

随后, 参考本地体验中的命令行方式或 Python 脚本方式,加载修改后的产线配置文件即可。

5. 多硬件支持

PaddleX 支持英伟达 GPU、昆仑芯 XPU、昇腾 NPU 和寒武纪 MLU 等多种主流硬件设备,仅需设置 device 参数即可完成不同硬件之间的无缝切换。

例如,使用文档场景信息抽取v3产线时,将运行设备从英伟达 GPU 更改为昇腾 NPU,仅需将脚本中的 device 修改为 npu 即可:

from paddlex import create_pipeline
pipeline = create_pipeline(pipeline="PP-ChatOCRv3-doc",llm_name="ernie-3.5",llm_params={"api_type": "qianfan", "ak": "", "sk": ""},device="npu:0" # gpu:0 --> npu:0)

若您想在更多种类的硬件上使用通用文档场景信息抽取产线,请参考PaddleX多硬件使用指南。

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

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

相关文章

有同学问:拿到大厂JAVA OFFER,但是会不会不稳定,有失业风险?!

昨天在直播里面有一个同学说拿到了大厂的offer,但是最近看了很多很多的报道,说大厂Java会不会也失业? 前两天也有家长私信咨询说孩子去了外企,拿着23K的工资,会不会也不稳定? 现在很多同学看了新闻报道或…

热门解压短视频素材资源网站推荐

解压短视频素材哪里找?今天我们来盘点一些优质的解压短视频素材下载平台。如果你也在寻找热门解压视频素材,这份资源清单一定能帮到你~ 蛙学网 蛙学网是国内领先的视频素材网站,涵盖了各种类型的解压视频资源,如手艺制…

【专题】计算机网络之物理层

计算机网络体系结构: 1. 物理层的基本概念 物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。 作用:尽可能屏蔽掉不同传输媒体和通信手段的差异。 用于物理层的协议也常称为物理层规程 (procedu…

【HarmonyOS NEXT】实现保存base64图片到图库

上篇文章介绍了HarmonyOS NEXT如何保存base64文件到download目录下,本次介绍如何保存base64图片到图库,网络图片保存方式大同小异,先下载图片,然后再保存 phAccessHelper.showAssetsCreationDialog参考官方文档’ ohos.file.pho…

利用透视变换实现文档矫正功能

透视变换是将成像投影到一个新的平面上,也称作投影映射。OpenCV通过函数cv2.getPerspectiveTransorm(pos1,pos2)构造矩阵M,其中pos1和pos2分别表示变换前后4个点的对应位置。得到M后再通过函数cv2.warpPerspective(src,M,(cols,rows))进行透视变换。 函数…

Threejs 实现3D 地图(02)创建3d 地图

"d3": "^7.9.0", "three": "^0.169.0", "vue": "^3.5.10" 地图数据来源&#xff1a; DataV.GeoAtlas地理小工具系列 <script setup> import {onMounted, ref} from vue import * as THREE from three im…

空间单细胞转录组cell2location分析流程学习

Cell2location 是一个用于空间转录组学数据分析的工具。它是一个基于贝叶斯统计模型的Python包&#xff0c;旨在利用空间转录组数据和单细胞转录组数据来进行细胞类型的空间解构。通过将单细胞转录组数据中的细胞类型信息投射到空间转录组数据中&#xff0c;Cell2location 可以…

如何应对 Android 面试官 -> ANR 如何优化?线上 ANR 如何监控?

前言 本章主要围绕 ANR 如何监控以及优化&#xff1b; 基本概念 ANR(Android Not Responding) 是指应用程序未响应&#xff0c;Android 系统对于一些事件需要在一定的时间范围内完成&#xff0c;如果超过预订时间未能得到有效响应或者响应时间过长&#xff0c;都会造成 ANR。 …

SAP_MM模块-设置业务合作伙伴类型字段必输(多种方案)

一、业务背景 公司需要把供应商增加一个细分的维度&#xff0c;并且要求该字段设置为必输&#xff0c;防止用户新增供应商时忘记维护。这里给用户找了一个分类的字段&#xff1a;业务合作伙伴类型&#xff0c;本文主要讲解如何设置该字段设置为必填&#xff1b; 注意&#xff…

[笔记] 关于CreateProcessWithLogonW函数创建进程

函数介绍 https://learn.microsoft.com/zh-cn/windows/win32/api/winbase/nf-winbase-createprocesswithlogonw BOOL CreateProcessWithLogonW([in] LPCWSTR lpUsername,[in, optional] LPCWSTR lpDomain,[in] …

【MySQL】表的约束、基本查询、内置函数

目录 1. 表的约束1.1 空属性1.2 默认值1.3 列描述1.4 zerofill1.5 主键1.6 自增长1.7 唯一键1.8 外键 2. 基本查询2.1 表的增删改查2.1.1 插入数据2.1.2 插入否则更新2.1.3 替换插入 2.2 Retrieve2.2.1 select ----- 查询2.2.2 where ----- 筛选2.2.3 order by ----- 结果排序2…

C++11——基础新增特性

目录 C11介绍统一的列表初始化对内置类型initializer_list 声明autodecltypenullptr 范围for容器新增接口emplace容器的新方法 C的前身是“C with Classes”&#xff0c; 最早于 1979年由 祖师爷Bjarne Stroustrup&#xff08;本贾尼斯特劳斯特鲁普&#xff09; 在贝尔实验室…

#HarmonyOS:页面和自定义组件生命周期

页面生命周期 即被Entry装饰的组件生命周期 onPageShow&#xff1a;页面每次显示时触发一次&#xff0c;包括路由过程、应用进入前台等场景。onPageHide: 页面每次隐藏时触发一次&#xff0c;包括路由过程、应用进入后台等场景。onBackPress: 当用户点击返回按钮是触发 组件…

成都睿明智科技有限公司解锁抖音电商新蓝海

在这个短视频风靡的时代&#xff0c;抖音已不仅仅是一个娱乐平台&#xff0c;它更是商家们竞相追逐的电商新战场。成都睿明智科技有限公司&#xff0c;作为抖音电商服务领域的佼佼者&#xff0c;正以敏锐的洞察力和专业的服务&#xff0c;助力众多品牌在这片蓝海中乘风破浪&…

RHCE-多IP访问网站

关闭防火墙 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0下载nginx工具 [rootlocalhost ~]# yum install nginx Updating Subscription Management repositories. Unable to read consumer identityThis system is not registered with an …

面对AI算力需求激增,如何守护数据中心机房安全?

随着人工智能&#xff08;AI&#xff09;技术飞速发展&#xff0c;AI算力需求呈现爆发式增长&#xff0c;导致对数据设备电力的需求指数级攀升。这给数据中心带来前所未有的挑战和机遇&#xff0c;从提供稳定的电力供应、优化高密度的部署&#xff0c;到数据安全的隐私保护&…

【unity小技巧】Unity6 LTS版本安装和一些修改和新功能使用介绍

文章目录 前言安装新功能变化1、官方推荐使用inputsystem进行输入控制2、修复了InputSystem命名错误导致listen被遮挡的bug3、自带去除unity启动画面logo功能4、unity官方的behavior行为树插件5、linearVelocity代替过时的velocity方法待续 完结 前言 2024/10/17其实unity就已…

前端拦截302重定向

背景: 根据业务场景需要拦截302做后续的逻辑处理 尝试一: : axios拦截 、、、、、async created() {// 获取302请求返回的location后手动修改video的src路径let targetSrc;try {await axios.get(this.video).then((res) > {const { headers, status } res;const { locat…

Spring Cloud 解决了哪些问题?

大家好&#xff0c;我是锋哥。今天分享关于【Spring Cloud 解决了哪些问题&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; Spring Cloud 解决了哪些问题&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring Cloud 是一个为构建分布式…

如何删除Maven

1.找到Maven安装路径 方法一&#xff1a; 可以直接在文件资源管理器里面选中“此电脑”然后右上角搜“apache-maven”&#xff0c;这个过程可能长达几分钟甚至更久 方法二&#xff1a; 这里推荐一个名叫“Everything”的软件&#xff0c;能够快速的查找到需要的文件 2.找到本…