【PaddleOCR】基于python的PP-ChatOCRv4快速运行教程,预测流程中API参数说明

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个性化解决方案等服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:xf982831907

💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

在这里插入图片描述

  PP-ChatOCRv4 是一款强大且易用的文档图像智能分析工具,能够帮助用户快速准确地抽取文档中的关键信息,包括文字、表格、印章等多种内容。本文将详细介绍如何快速上手 PP-ChatOCRv4,包括环境准备、命令行和 Python 脚本两种使用方式。
在这里插入图片描述

一、环境准备

  在本地使用 PP-ChatOCRv4 产线前,请确保您已经按照安装教程完成了 wheel 包安装。如果在执行过程中遇到程序失去响应、程序异常退出、内存资源耗尽、推理速度极慢等问题,请尝试参考文档调整配置,例如关闭不需要使用的功能或使用更轻量的模型。

  在进行模型推理之前,首先需要准备大语言模型的 API key。PP-ChatOCRv4 支持在百度云千帆平台或者本地部署的标准 OpenAI 接口大模型服务。如果使用百度云千帆平台,可以参考认证鉴权获取 API key。如果使用本地部署的大模型服务,可以参考 PaddleNLP 大模型部署文档进行大模型部署对话接口部署和向量化接口部署,并填写对应的 base_url 和 API key 即可。如果需要使用多模态大模型进行数据融合,可以参考 PaddleMIX 模型文档中的 OpenAI 服务部署进行多模态大模型部署,并填写对应的 base_url 和 API key 即可。

  注:如果因本地环境限制无法在本地部署多模态大模型,可以将代码中的含有“mllm”变量的行注释掉,仅使用大语言模型完成信息抽取。

二、命令行方式体验

  命令行方式是为了快速体验查看效果,使用一行命令即可快速体验产线效果:

paddleocr pp_chatocrv4_doc -i vehicle_certificate-1.png -k 驾驶室准乘人数 --qianfan_api_key your_api_key

2.1 通过 --invoke_mllm 和 --pp_docbee_base_url 使用多模态大模型

paddleocr pp_chatocrv4_doc -i vehicle_certificate-1.png -k 驾驶室准乘人数 --qianfan_api_key your_api_key --invoke_mllm True --pp_docbee_base_url http://127.0.0.1:8080/

  命令行支持更多参数设置,以下是命令行参数的详细说明:

参数参数说明参数类型默认值
input待预测数据,必填。如图像文件或者 PDF 文件的本地路径:/root/data/img.jpg;如 URL 链接,如图像文件或 PDF 文件的网络 URL:示例;如本地目录,该目录下需包含待预测图像,如本地路径:/root/data/(当前不支持目录中包含 PDF 文件的预测,PDF 文件需要指定到具体文件路径)。str
keys用于信息提取的键。str
save_path指定推理结果文件保存的路径。如果不设置,推理结果将不会保存到本地。str
invoke_mllm是否加载并使用多模态大模型。如果不设置,将使用产线初始化的该参数值,默认初始化为 False。bool
layout_detection_model_name用于版面区域检测的模型名称。如果不设置,将会使用产线默认模型。str
layout_detection_model_dir版面区域检测模型的目录路径。如果不设置,将会下载官方模型。str
doc_orientation_classify_model_name文档方向分类模型的名称。如果不设置,将会使用产线默认模型。str
doc_orientation_classify_model_dir文档方向分类模型的目录路径。如果不设置,将会下载官方模型。str
doc_unwarping_model_name文本图像矫正模型的名称。如果不设置,将会使用产线默认模型。str
doc_unwarping_model_dir文本图像矫正模型的目录路径。如果不设置,将会下载官方模型。str
text_detection_model_name文本检测模型的名称。如果不设置,将会使用产线默认模型。str
text_detection_model_dir文本检测模型的目录路径。如果不设置,将会下载官方模型。str
text_recognition_model_name文本识别模型的名称。如果不设置,将会使用产线默认模型。str
text_recognition_model_dir文本识别模型的目录路径。如果不设置,将会下载官方模型。str
text_recognition_batch_size文本识别模型的 batch size。如果不设置,将默认设置 batch size 为 1。int
table_structure_recognition_model_name表格结构识别模型的名称。如果不设置,将会使用产线默认模型。str
table_structure_recognition_model_dir表格结构识别模型的目录路径。如果不设置,将会下载官方模型。str
seal_text_detection_model_name印章文本检测模型的名称。如果不设置,将会使用产线默认模型。str
seal_text_detection_model_dir印章文本检测模型的目录路径。如果不设置,将会下载官方模型。str
seal_text_recognition_model_name印章文本识别模型的名称。如果不设置,将会使用产线默认模型。str
seal_text_recognition_model_dir印章文本识别模型的目录路径。如果不设置,将会下载官方模型。str
seal_text_recognition_batch_size印章文本识别模型的 batch size。如果不设置,将默认设置 batch size 为 1。int
use_doc_orientation_classify是否加载并使用文档方向分类模块。如果不设置,将使用产线初始化的该参数值,默认初始化为 True。bool
use_doc_unwarping是否加载并使用文本图像矫正模块。如果不设置,将使用产线初始化的该参数值,默认初始化为 True。bool
use_textline_orientation是否加载并使用文本行方向分类模块。如果不设置,初始化为 True。bool
use_seal_recognition是否加载并使用印章文本识别子产线。如果不设置,将使用产线初始化的该参数值,默认初始化为 True。bool
use_table_recognition是否加载并使用表格识别子产线。如果不设置,将使用产线初始化的该参数值,默认初始化为 True。bool
layout_threshold版面模型得分阈值。0-1 之间的任意浮点数。如果不设置,将使用产线初始化的该参数值,默认初始化为 0.5。float

三、Python脚本方式集成

  命令行方式是为了快速体验查看效果,一般来说,在项目中,往往需要通过代码集成,可以下载 测试文件,使用如下示例代码进行推理:

from paddleocr import PPChatOCRv4Doc

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
}

mllm_chat_bot_config = {
    "module_name": "chat_bot",
    "model_name": "PP-DocBee2",
    "base_url": "http://127.0.0.1:8080/",  # your local mllm service url
    "api_type": "openai",
    "api_key": "api_key",  # your api_key
}

pipeline = PPChatOCRv4Doc()

visual_predict_res = pipeline.visual_predict(
    input="vehicle_certificate-1.png",
    use_doc_orientation_classify=False,
    use_doc_unwarping=False,
    use_common_ocr=True,
    use_seal_recognition=True,
    use_table_recognition=True,
)

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

vector_info = pipeline.build_vector(
    visual_info_list, flag_save_bytes_vector=True, retriever_config=retriever_config
)
mllm_predict_res = pipeline.mllm_pred(
    input="vehicle_certificate-1.png",
    key_list=["驾驶室准乘人数"],
    mllm_chat_bot_config=mllm_chat_bot_config,
)
mllm_predict_info = mllm_predict_res["mllm_res"]
chat_result = pipeline.chat(
    key_list=["驾驶室准乘人数"],
    visual_info=visual_info_list,
    vector_info=vector_info,
    mllm_predict_info=mllm_predict_info,
    chat_bot_config=chat_bot_config,
    retriever_config=retriever_config,
)
print(chat_result)

  PP-ChatOCRv4 预测的流程、API说明、产出说明如下:

(1)调用 PPChatOCRv4Doc 实例化PP-ChatOCRv4产线对象。

参数参数说明参数类型默认值
layout_detection_model_name用于版面区域检测的模型名称。若设置为 None,则使用产线默认模型。strNone
layout_detection_model_dir版面区域检测模型的目录路径。若设置为 None,则下载官方模型。strNone
doc_orientation_classify_model_name文档方向分类模型的名称。若设置为 None,则使用产线默认模型。strNone
doc_orientation_classify_model_dir文档方向分类模型的目录路径。若设置为 None,则下载官方模型。strNone
doc_unwarping_model_name文本图像矫正模型的名称。若设置为 None,则使用产线默认模型。strNone
doc_unwarping_model_dir文本图像矫正模型的目录路径。若设置为 None,则下载官方模型。strNone
text_detection_model_name文本检测模型的名称。若设置为 None,则使用产线默认模型。strNone
text_detection_model_dir文本检测模型的目录路径。若设置为 None,则下载官方模型。strNone
text_recognition_model_name文本识别模型的名称。若设置为 None,则使用产线默认模型。strNone
text_recognition_model_dir文本识别模型的目录路径。若设置为 None,则下载官方模型。strNone
text_recognition_batch_size文本识别模型的 batch size。若未设置,则默认为 1。intNone
table_structure_recognition_model_name表格结构识别模型的名称。若设置为 None,则使用产线默认模型。strNone
table_structure_recognition_model_dir表格结构识别模型的目录路径。若设置为 None,则下载官方模型。strNone
seal_text_detection_model_name印章文本检测模型的名称。若设置为 None,则使用产线默认模型。strNone
seal_text_detection_model_dir印章文本检测模型的目录路径。若设置为 None,则下载官方模型。strNone
seal_text_recognition_model_name印章文本识别模型的名称。若设置为 None,则使用产线默认模型。strNone
seal_text_recognition_model_dir印章文本识别模型的目录路径。若设置为 None,则下载官方模型。strNone
seal_text_recognition_batch_size印章文本识别模型的 batch size。若未设置,则默认为 1。intNone
use_doc_orientation_classify是否启用文档方向分类模块。若未设置,则使用产线初始化值,默认为 True。boolNone
use_doc_unwarping是否启用文本图像矫正模块。若未设置,则使用产线初始化值,默认为 True。boolNone
use_textline_orientation是否启用文本行方向分类模块。若未设置,则使用产线初始化值,默认为 True。boolNone
use_seal_recognition是否启用印章文本识别子产线。若未设置,则使用产线初始化值,默认为 True。boolNone
use_table_recognition是否启用表格识别子产线。若未设置,则使用产线初始化值,默认为 True。boolNone
layout_threshold版面模型得分阈值。可以是 0-1 之间的浮点数;也可为 dict 类型,如 {0:0.1},表示类别 ID 及其对应的阈值;若为 None,则使用产线初始化值,默认为 0.5。float、dictNone
layout_nms是否对版面检测结果进行后处理 NMS。若为 None,则使用产线初始化值,默认为 True。boolNone
layout_unclip_ratio版面区域检测模型检测框的扩张系数。可以是大于 0 的浮点数;也可为 Tuple[float,float] 类型,分别表示横纵两个方向的扩张系数;还支持 dict 类型,如 {0: (1.1,2.0)},表示将第 0 类别检测框的宽度扩张 1.1 倍,高度扩张 2.0 倍。若为 None,则使用产线初始化值,默认为 1.0。float、Tuple[float,float]、dictNone
layout_merge_bboxes_mode版面区域检测的重叠框过滤方式。可以是 str 类型,包括 large、small、union,分别表示保留大框、小框或同时保留内外框;也支持 dict 类型,如 {0: “large”,2: “small”},表示对第 0 类别检测框使用 large 模式,第 2 类别使用 small 模式。若为 None,则使用产线初始化值,默认为 large。str、dictNone
text_det_limit_side_len文本检测的图像边长限制。可以是大于 0 的整数;若为 None,则使用产线初始化值,默认为 960。intNone
text_det_limit_type文本检测的边长度限制类型。可以是 str 类型,包括 min 和 max,其中 min 表示确保图像最短边不小于 det_limit_side_len,max 表示确保图像最长边不大于 limit_side_len。若为 None,则使用产线初始化值,默认为 max。strNone
text_det_thresh检测像素阈值。在输出的概率图中,得分高于此阈值的像素点才被视为文字像素。可以是大于 0 的浮点数;若为 None,则使用产线初始化值,默认为 0.3。floatNone
text_det_box_thresh检测框阈值。当检测结果边框内所有像素点的平均得分高于此阈值时,该边框内的区域才会被认为是文字区域。可以是大于 0 的浮点数;若为 None,则使用产线初始化值,默认为 0.6。floatNone
text_det_unclip_ratio文本检测扩张系数。用于对文字区域进行扩张,值越大,扩张面积越大。可以是大于 0 的浮点数;若为 None,则使用产线初始化值,默认为 2.0。floatNone
text_rec_score_thresh文本识别阈值。得分高于此阈值的文本结果才会被保留。可以是大于 0 的浮点数;若为 None,则使用产线初始化值,默认为 0.0,即不设阈值。floatNone
seal_det_limit_side_len印章文本检测的图像边长限制。可以是大于 0 的整数;若为 None,则使用产线初始化值,默认为 736。intNone
seal_det_limit_type印章文本检测的图像边长限制类型。可以是 str 类型,包括 min 和 max。若为 None,则使用产线初始化值,默认为 min。strNone
seal_det_thresh检测像素阈值。在输出的概率图中,得分高于此阈值的像素点才被视为文字像素。可以是大于 0 的浮点数;若为 None,则使用产线初始化值,默认为 0.2。floatNone
seal_det_box_thresh检测框阈值。当检测结果边框内所有像素点的平均得分高于此阈值时,该边框内的区域才会被认为是文字区域。可以是大于 0 的浮点数;若为 None,则使用产线初始化值,默认为 0.6。floatNone
seal_det_unclip_ratio印章文本检测扩张系数。用于对文字区域进行扩张,值越大,扩张面积越大。可以是大于 0 的浮点数;若为 None,则使用产线初始化值,默认为 0.5。floatNone
seal_rec_score_thresh印章文本识别阈值。得分高于此阈值的文本结果才会被保留。可以是大于 0 的浮点数;若为 None,则使用产线初始化值,默认为 0.0,即不设阈值。floatNone
retriever_config向量检索大模型配置参数。配置内容为如下dict:{“module_name”: “retriever”,“model_name”: “embedding-v1”,“base_url”: “https://qianfan.baidubce.com/v2”,“api_type”: “qianfan”,“api_key”: “api_key” # 请将此设置为实际的API密钥}dictNone
mllm_chat_bot_config多模态大模型配置参数。配置内容为如下dict:{“module_name”: “chat_bot”,“model_name”: “PP-DocBee”,“base_url”: “http://127.0.0.1:8080/”, # 请将此设置为实际的多模态大模型服务的url"api_type": “openai”,“api_key”: “api_key” # 请将此设置为实际的API密钥}dictNone
chat_bot_config大语言模型配置信息。配置内容为如下dict:{“module_name”: “chat_bot”,“model_name”: “ernie-3.5-8k”,“base_url”: “https://qianfan.baidubce.com/v2”,“api_type”: “openai”,“api_key”: “api_key” # 请将此设置为实际的API密钥}dictNone
device用于推理的设备。支持指定具体卡号:CPU:如 cpu 表示使用 CPU 进行推理;GPU:如 gpu:0 表示使用第 1 块 GPU 进行推理;NPU:如 npu:0 表示使用第 1 块 NPU 进行推理;XPU:如 xpu:0 表示使用第 1 块 XPU 进行推理;MLU:如 mlu:0 表示使用第 1 块 MLU 进行推理;DCU:如 dcu:0 表示使用第 1 块 DCU 进行推理;None:如果设置为None,初始化时,会优先使用本地的 GPU 0号设备,如果没有,则使用 CPU 设备。strNone
enable_hpi是否启用高性能推理。boolFalse
use_tensorrt是否启用 Paddle Inference 的 TensorRT 子图引擎。如果模型不支持通过 TensorRT 加速,即使设置了此标志,也不会使用加速。对于 CUDA 11.8 版本的飞桨,兼容的 TensorRT 版本为 8.x(x>=6),建议安装 TensorRT 8.6.1.6。对于 CUDA 12.6 版本的飞桨,兼容的 TensorRT 版本为 10.x(x>=5),建议安装 TensorRT 10.5.0.18。boolFalse
precision计算精度,如 fp32、fp16。str“fp32”
enable_mkldnn是否启用 MKL-DNN 加速推理。如果 MKL-DNN 不可用或模型不支持通过 MKL-DNN 加速,即使设置了此标志,也不会使用加速。boolTrue
mkldnn_cache_capacityMKL-DNN 缓存容量。int10
cpu_threads在 CPU 上进行推理时使用的线程数。int8
paddlex_configPaddleX产线配置文件路径。strNone

(2)调用 PP-ChatOCRv4 产线对象的 visual_predict() 方法获取视觉预测结果,该方法会返回一个结果列表。另外,产线还提供了 visual_predict_iter() 方法。两者在参数接受和结果返回方面是完全一致的,区别在于 visual_predict_iter() 返回的是一个 generator,能够逐步处理和获取预测结果,适合处理大型数据集或希望节省内存的场景。可以根据实际需求选择使用这两种方法中的任意一种。以下是 visual_predict() 方法的参数及其说明:

参数参数说明参数类型默认值
input待预测数据,支持多种输入类型,必填。
Python Var:如 numpy.ndarray 表示的图像数据;
str:如图像文件或者 PDF 文件的本地路径:/root/data/img.jpg;如 URL 链接,如图像文件或 PDF 文件的网络 URL:示例;如本地目录,该目录下需包含待预测图像,如本地路径:/root/data/(当前不支持目录中包含 PDF 文件的预测,PDF 文件需要指定到具体文件路径);
list:列表元素需为上述类型数据,如 [numpy.ndarray, numpy.ndarray],[“/root/data/img1.jpg”, “/root/data/img2.jpg”],[“/root/data1”, “/root/data2”]。
Python Varstrlist
use_doc_orientation_classify是否在推理时使用文档方向分类模块。boolNoneNone
use_doc_unwarping是否在推理时使用文本图像矫正模块。boolNoneNone
use_textline_orientation是否加载并使用文本行方向分类模块。boolNoneNone
use_seal_recognition是否在推理时使用印章文本识别子产线。boolNoneNone
use_table_recognition是否在推理时使用表格识别子产线。boolNoneNone
layout_threshold参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。floatdictNoneNone
layout_nms参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。boolNoneNone
layout_unclip_ratio参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。floatTuple[float,float]dictNoneNone
layout_merge_bboxes_mode参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。strdictNoneNone
text_det_limit_side_len参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。intNoneNone
text_det_limit_type参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。strNoneNone
text_det_thresh参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。floatNoneNone
text_det_box_thresh参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。floatNoneNone
text_det_unclip_ratio参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。floatNoneNone
text_rec_score_thresh参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。floatNoneNone
seal_det_limit_side_len参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。intNoneNone
seal_det_limit_type参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。strNoneNone
seal_det_thresh参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。floatNoneNone
seal_det_box_thresh参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。floatNoneNone
seal_det_unclip_ratio参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。floatNoneNone
seal_rec_score_thresh参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。floatNoneNone

  (3)对视觉预测结果进行处理。

  每个样本的预测结果均为 dict 类型,包含 visual_infolayout_parsing_result 两个字段。通过 visual_info 得到视觉信息(包含 normal_text_dicttable_text_listtable_html_list 等信息),并将每个样本的信息放到 visual_info_list 列表中,该列表的内容会在之后送入大语言模型中。 当然,您也可以通过 layout_parsing_result 获取版面解析的结果,该结果包含文件或图片中包含的表格、文字、图片等内容,且支持打印、保存为图片、保存为json文件的操作:

for res in visual_predict_res:
    visual_info_list.append(res["visual_info"])
    layout_parsing_result = res["layout_parsing_result"]
    layout_parsing_result.print()
    layout_parsing_result.save_to_img("./output")
    layout_parsing_result.save_to_json("./output")
    layout_parsing_result.save_to_xlsx("./output")
    layout_parsing_result.save_to_html("./output")
方法方法说明参数参数类型参数说明默认值
print()打印结果到终端format_jsonbool是否对输出内容进行使用 JSON 缩进格式化。True
indentint指定缩进级别,以美化输出的 JSON 数据,使其更具可读性,仅当 format_json 为 True 时有效。4
ensure_asciibool控制是否将非 ASCII 字符转义为 Unicode。设置为 True 时,所有非 ASCII 字符将被转义;False 则保留原始字符,仅当 format_json 为 True 时有效。False
save_to_json()将结果保存为 json 格式的文件save_pathstr保存的文件路径,当为目录时,保存文件命名与输入文件类型命名一致。
indentint指定缩进级别,以美化输出的 JSON 数据,使其更具可读性,仅当 format_json 为 True 时有效。4
ensure_asciibool控制是否将非 ASCII 字符转义为 Unicode。设置为 True 时,所有非 ASCII 字符将被转义;False 则保留原始字符,仅当 format_json 为 True 时有效。False
save_to_img()将中间各个模块的可视化图像保存在 png 格式的图像中。save_pathstr保存的文件路径,支持目录或文件路径。
save_to_html()将文件中的表格保存为 html 格式的文件save_pathstr保存的文件路径,支持目录或文件路径。
save_to_xlsx()将文件中的表格保存为 xlsx 格式的文件save_pathstr保存的文件路径,支持目录或文件路径。
  • 调用print() 方法会将结果打印到终端,打印到终端的内容解释如下: - input_path: (str) 待预测图像的输入路径 - page_index: (Union[int, None]) 如果输入是PDF文件,则表示当前是PDF的第几页,否则为 None - model_settings: (Dict[str, bool]) 配置产线所需的模型参数 - use_doc_preprocessor: (bool) 控制是否启用文档预处理子产线 - use_seal_recognition: (bool) 控制是否启用印章文本识别子产线 - use_table_recognition: (bool) 控制是否启用表格识别子产线 - use_formula_recognition: (bool) 控制是否启用公式识别子产线 - parsing_res_list: (List[Dict]) 解析结果的列表,每个元素为一个dict,列表顺序为解析后的阅读顺序。 - block_bbox: (np.ndarray) 版面区域的边界框。 - block_label: (str) 版面区域的标签,例如text, table等。 - block_content: (str) 内容为版面区域内的内容。 - overall_ocr_res: (Dict[str, Union[List[str], List[float], numpy.ndarray]]) 全局 OCR 结果的dict - input_path: (Union[str, None]) 图像OCR子产线接受的图像路径,当输入为numpy.ndarray时,保存为None - model_settings: (Dict) OCR子产线的模型配置参数 - dt_polys: (List[numpy.ndarray]) 文本检测的多边形框列表。每个检测框由4个顶点坐标构成的numpy数组表示,数组shape为(4, 2),数据类型为int16 - dt_scores: (List[float]) 文本检测框的置信度列表 - text_det_params: (Dict[str, Dict[str, int, float]]) 文本检测模块的配置参数 - limit_side_len: (int) 图像预处理时的边长限制值 - limit_type: (str) 边长限制的处理方式 - thresh: (float) 文本像素分类的置信度阈值 - box_thresh: (float) 文本检测框的置信度阈值 - unclip_ratio: (float) 文本检测框的膨胀系数 - text_type: (str) 文本检测的类型,当前固定为"general" - text_type: (str) 文本检测的类型,当前固定为"general" - textline_orientation_angles: (List[int]) 文本行方向分类的预测结果。启用时返回实际角度值(如[0,0,1] - text_rec_score_thresh: (float) 文本识别结果的过滤阈值 - rec_texts: (List[str]) 文本识别结果列表,仅包含置信度超过text_rec_score_thresh的文本 - rec_scores: (List[float]) 文本识别的置信度列表,已按text_rec_score_thresh过滤 - rec_polys: (List[numpy.ndarray]) 经过置信度过滤的文本检测框列表,格式同dt_polys - formula_res_list: (List[Dict[str, Union[numpy.ndarray, List[float], str]]]) 公式识别结果列表,每个元素为一个dict - rec_formula: (str) 公式识别结果 - rec_polys: (numpy.ndarray) 公式检测框,shape为(4, 2),dtype为int16 - formula_region_id: (int) 公式所在的区域编号 - seal_res_list: (List[Dict[str, Union[numpy.ndarray, List[float], str]]]) 印章文本识别结果列表,每个元素为一个dict - input_path: (str) 印章图像的输入路径 - model_settings: (Dict) 印章文本识别子产线的模型配置参数 - dt_polys: (List[numpy.ndarray]) 印章检测框列表,格式同dt_polys - text_det_params: (Dict[str, Dict[str, int, float]]) 印章检测模块的配置参数, 具体参数含义同上 - text_type: (str) 印章检测的类型,当前固定为"seal" - text_rec_score_thresh: (float) 印章文本识别结果的过滤阈值 - rec_texts: (List[str]) 印章文本识别结果列表,仅包含置信度超过text_rec_score_thresh的文本 - rec_scores: (List[float]) 印章文本识别的置信度列表,已按text_rec_score_thresh过滤 - rec_polys: (List[numpy.ndarray]) 经过置信度过滤的印章检测框列表,格式同dt_polys - rec_boxes: (numpy.ndarray) 检测框的矩形边界框数组,shape为(n, 4),dtype为int16。每一行表示一个矩形 - table_res_list: (List[Dict[str, Union[numpy.ndarray, List[float], str]]]) 表格识别结果列表,每个元素为一个dict - cell_box_list: (List[numpy.ndarray]) 表格单元格的边界框列表 - pred_html: (str) 表格的HTML格式字符串 - table_ocr_pred: (dict) 表格的OCR识别结果 - rec_polys: (List[numpy.ndarray]) 单元格的检测框列表 - rec_texts: (List[str]) 单元格的识别结果 - rec_scores: (List[float]) 单元格的识别置信度 - rec_boxes: (numpy.ndarray) 检测框的矩形边界框数组,shape为(n, 4),dtype为int16。每一行表示一个矩形 - 调用save_to_json() 方法会将上述内容保存到指定的save_path中,如果指定为目录,则保存的路径为save_path/{your_img_basename}.json,如果指定为文件,则直接保存到该文件中。由于json文件不支持保存numpy数组,因此会将其中的numpy.array类型转换为列表形式。 - 调用save_to_img() 方法会将可视化结果保存到指定的save_path中,如果指定为目录,则保存的路径为save_path/{your_img_basename}_ocr_res_img.{your_img_extension},如果指定为文件,则直接保存到该文件中。(产线通常包含较多结果图片,不建议直接指定为具体的文件路径,否则多张图会被覆盖,仅保留最后一张图) 此外,也支持通过属性获取带结果的可视化图像和预测结果,具体如下:
属性属性说明
json获取预测的 json 格式的结果。
img获取格式为 dict 的可视化图像。
  • json 属性获取的预测结果为dict类型的数据,相关内容与调用 save_to_json() 方法保存的内容一致。 - img 属性返回的预测结果是一个dict类型的数据。其中,键分别为 layout_det_resoverall_ocr_restext_paragraphs_ocr_resformula_res_region1table_cell_imgseal_res_region1,对应的值是 Image.Image 对象:分别用于显示版面区域检测、OCR、OCR文本段落、公式、表格和印章结果的可视化图像。如果没有使用可选模块,则dict中只包含 layout_det_res

(4)调用PP-ChatOCRv4的产线对象的 build_vector() 方法,对文本内容进行向量构建。
  以下是 build_vector() 方法的参数及其说明:

参数参数说明参数类型默认值
visual_info视觉信息,可以是包含视觉信息的 dict,或者由这些 dict 组成的列表。listdictNone
min_characters最小字符数量。为大于 0 的正整数,可以根据大语言模型支持的 token 长度来决定。int3500
block_size长文本建立向量库时分块大小。为大于 0 的正整数,可以根据大语言模型支持的 token 长度来决定。int300
flag_save_bytes_vector文字是否保存为二进制文件。boolFalse
retriever_config向量检索大模型配置参数,参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。dictNone

  该方法会返回一个包含视觉文本信息的dict,dict的内容如下: - flag_save_bytes_vector(bool)是否将结果保存为二进制文件 - flag_too_short_text(bool)是否文本长度小于最小字符数量 - vector: (str|list) 文本的二进制内容或者文本内容,取决于flag_save_bytes_vectormin_characters的值,如果flag_save_bytes_vector=True且文本长度大于等于最小字符数量,则返回二进制内容;否则返回原始的文本。
(5)调用PP-ChatOCRv4的产线对象的 mllm_pred() 方法,获取多模态大模型抽取结果。

  以下是 mllm_pred() 方法的参数及其说明:

参数参数说明参数类型默认值
input待预测数据,支持多种输入类型,必填。
Python Var:如 numpy.ndarray 表示的图像数据;
str:如图像文件或者单页 PDF 文件的本地路径:/root/data/img.jpg;如 URL 链接,如图像文件或单页 PDF 文件的网络 URL:示例。
Python Varstr
key_list用于提取信息的单个键或键列表。Union[str, List[str]]None
mllm_chat_bot_config多模态大模型配置参数,参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。dictNone

(6)调用PP-ChatOCRv4的产线对象的 chat() 方法,对关键信息进行抽取。

  以下是 chat() 方法的参数及其说明:

以下是将您提供的表格内容重新整理成 Markdown 格式的表格:

参数参数说明参数类型默认值
key_list用于提取信息的单个键或键列表。Union[str, List[str]]None
visual_info视觉信息结果。List[dict]None
use_vector_retrieval是否使用向量检索。boolTrue
vector_info用于检索的向量信息。dictNone
min_characters所需的最小字符数。为大于 0 的正整数。int3500
text_task_description文本任务的描述。strNone
text_output_format文本结果的输出格式。strNone
text_rules_str生成文本结果的规则。strNone
text_few_shot_demo_text_content用于少样本演示的文本内容。strNone
text_few_shot_demo_key_value_list用于少样本演示的键值列表。strNone
table_task_description表任务的描述。strNone
table_output_format表结果的输出格式。strNone
table_rules_str生成表结果的规则。strNone
table_few_shot_demo_text_content表少样本演示的文本内容。strNone
table_few_shot_demo_key_value_list表少样本演示的键值列表。strNone
mllm_predict_info多模态大模型结果。dictNone
mllm_integration_strategy多模态大模型和大语言模型数据融合策略,支持单独使用其中一个或者融合两者结果。可选:“integration”, “llm_only” 和 “mllm_only”。str“integration”
chat_bot_config大语言模型配置信息,参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。dictNone
retriever_config向量检索大模型配置参数,参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。dictNone

  该方法会将结果打印到终端,打印到终端的内容解释如下: - chat_res: (dict) 提取信息的结果,是一个dict,包含了待抽取的键和对应的值。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云天徽上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值