🧑 博主简介:曾任某智慧城市类企业
算法总监
,目前在美国市场的物流公司从事高级算法工程师
一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个性化解决方案等服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:xf982831907
)
💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。
【PaddleOCR】基于python的PP-ChatOCRv4快速运行教程,预测流程中API参数说明
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,则使用产线默认模型。 | str | None |
layout_detection_model_dir | 版面区域检测模型的目录路径。若设置为 None,则下载官方模型。 | str | None |
doc_orientation_classify_model_name | 文档方向分类模型的名称。若设置为 None,则使用产线默认模型。 | str | None |
doc_orientation_classify_model_dir | 文档方向分类模型的目录路径。若设置为 None,则下载官方模型。 | str | None |
doc_unwarping_model_name | 文本图像矫正模型的名称。若设置为 None,则使用产线默认模型。 | str | None |
doc_unwarping_model_dir | 文本图像矫正模型的目录路径。若设置为 None,则下载官方模型。 | str | None |
text_detection_model_name | 文本检测模型的名称。若设置为 None,则使用产线默认模型。 | str | None |
text_detection_model_dir | 文本检测模型的目录路径。若设置为 None,则下载官方模型。 | str | None |
text_recognition_model_name | 文本识别模型的名称。若设置为 None,则使用产线默认模型。 | str | None |
text_recognition_model_dir | 文本识别模型的目录路径。若设置为 None,则下载官方模型。 | str | None |
text_recognition_batch_size | 文本识别模型的 batch size。若未设置,则默认为 1。 | int | None |
table_structure_recognition_model_name | 表格结构识别模型的名称。若设置为 None,则使用产线默认模型。 | str | None |
table_structure_recognition_model_dir | 表格结构识别模型的目录路径。若设置为 None,则下载官方模型。 | str | None |
seal_text_detection_model_name | 印章文本检测模型的名称。若设置为 None,则使用产线默认模型。 | str | None |
seal_text_detection_model_dir | 印章文本检测模型的目录路径。若设置为 None,则下载官方模型。 | str | None |
seal_text_recognition_model_name | 印章文本识别模型的名称。若设置为 None,则使用产线默认模型。 | str | None |
seal_text_recognition_model_dir | 印章文本识别模型的目录路径。若设置为 None,则下载官方模型。 | str | None |
seal_text_recognition_batch_size | 印章文本识别模型的 batch size。若未设置,则默认为 1。 | int | None |
use_doc_orientation_classify | 是否启用文档方向分类模块。若未设置,则使用产线初始化值,默认为 True。 | bool | None |
use_doc_unwarping | 是否启用文本图像矫正模块。若未设置,则使用产线初始化值,默认为 True。 | bool | None |
use_textline_orientation | 是否启用文本行方向分类模块。若未设置,则使用产线初始化值,默认为 True。 | bool | None |
use_seal_recognition | 是否启用印章文本识别子产线。若未设置,则使用产线初始化值,默认为 True。 | bool | None |
use_table_recognition | 是否启用表格识别子产线。若未设置,则使用产线初始化值,默认为 True。 | bool | None |
layout_threshold | 版面模型得分阈值。可以是 0-1 之间的浮点数;也可为 dict 类型,如 {0:0.1},表示类别 ID 及其对应的阈值;若为 None,则使用产线初始化值,默认为 0.5。 | float、dict | None |
layout_nms | 是否对版面检测结果进行后处理 NMS。若为 None,则使用产线初始化值,默认为 True。 | bool | None |
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]、dict | None |
layout_merge_bboxes_mode | 版面区域检测的重叠框过滤方式。可以是 str 类型,包括 large、small、union,分别表示保留大框、小框或同时保留内外框;也支持 dict 类型,如 {0: “large”,2: “small”},表示对第 0 类别检测框使用 large 模式,第 2 类别使用 small 模式。若为 None,则使用产线初始化值,默认为 large。 | str、dict | None |
text_det_limit_side_len | 文本检测的图像边长限制。可以是大于 0 的整数;若为 None,则使用产线初始化值,默认为 960。 | int | None |
text_det_limit_type | 文本检测的边长度限制类型。可以是 str 类型,包括 min 和 max,其中 min 表示确保图像最短边不小于 det_limit_side_len,max 表示确保图像最长边不大于 limit_side_len。若为 None,则使用产线初始化值,默认为 max。 | str | None |
text_det_thresh | 检测像素阈值。在输出的概率图中,得分高于此阈值的像素点才被视为文字像素。可以是大于 0 的浮点数;若为 None,则使用产线初始化值,默认为 0.3。 | float | None |
text_det_box_thresh | 检测框阈值。当检测结果边框内所有像素点的平均得分高于此阈值时,该边框内的区域才会被认为是文字区域。可以是大于 0 的浮点数;若为 None,则使用产线初始化值,默认为 0.6。 | float | None |
text_det_unclip_ratio | 文本检测扩张系数。用于对文字区域进行扩张,值越大,扩张面积越大。可以是大于 0 的浮点数;若为 None,则使用产线初始化值,默认为 2.0。 | float | None |
text_rec_score_thresh | 文本识别阈值。得分高于此阈值的文本结果才会被保留。可以是大于 0 的浮点数;若为 None,则使用产线初始化值,默认为 0.0,即不设阈值。 | float | None |
seal_det_limit_side_len | 印章文本检测的图像边长限制。可以是大于 0 的整数;若为 None,则使用产线初始化值,默认为 736。 | int | None |
seal_det_limit_type | 印章文本检测的图像边长限制类型。可以是 str 类型,包括 min 和 max。若为 None,则使用产线初始化值,默认为 min。 | str | None |
seal_det_thresh | 检测像素阈值。在输出的概率图中,得分高于此阈值的像素点才被视为文字像素。可以是大于 0 的浮点数;若为 None,则使用产线初始化值,默认为 0.2。 | float | None |
seal_det_box_thresh | 检测框阈值。当检测结果边框内所有像素点的平均得分高于此阈值时,该边框内的区域才会被认为是文字区域。可以是大于 0 的浮点数;若为 None,则使用产线初始化值,默认为 0.6。 | float | None |
seal_det_unclip_ratio | 印章文本检测扩张系数。用于对文字区域进行扩张,值越大,扩张面积越大。可以是大于 0 的浮点数;若为 None,则使用产线初始化值,默认为 0.5。 | float | None |
seal_rec_score_thresh | 印章文本识别阈值。得分高于此阈值的文本结果才会被保留。可以是大于 0 的浮点数;若为 None,则使用产线初始化值,默认为 0.0,即不设阈值。 | float | None |
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密钥} | dict | None |
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密钥} | dict | None |
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密钥} | dict | None |
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 设备。 | str | None |
enable_hpi | 是否启用高性能推理。 | bool | False |
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。 | bool | False |
precision | 计算精度,如 fp32、fp16。 | str | “fp32” |
enable_mkldnn | 是否启用 MKL-DNN 加速推理。如果 MKL-DNN 不可用或模型不支持通过 MKL-DNN 加速,即使设置了此标志,也不会使用加速。 | bool | True |
mkldnn_cache_capacity | MKL-DNN 缓存容量。 | int | 10 |
cpu_threads | 在 CPU 上进行推理时使用的线程数。 | int | 8 |
paddlex_config | PaddleX产线配置文件路径。 | str | None |
(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 Var | str | list | ||
use_doc_orientation_classify | 是否在推理时使用文档方向分类模块。 | bool | None | None | ||
use_doc_unwarping | 是否在推理时使用文本图像矫正模块。 | bool | None | None | ||
use_textline_orientation | 是否加载并使用文本行方向分类模块。 | bool | None | None | ||
use_seal_recognition | 是否在推理时使用印章文本识别子产线。 | bool | None | None | ||
use_table_recognition | 是否在推理时使用表格识别子产线。 | bool | None | None | ||
layout_threshold | 参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。 | float | dict | None | None | |
layout_nms | 参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。 | bool | None | None | ||
layout_unclip_ratio | 参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。 | float | Tuple[float,float] | dict | None | None |
layout_merge_bboxes_mode | 参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。 | str | dict | None | None | |
text_det_limit_side_len | 参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。 | int | None | None | ||
text_det_limit_type | 参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。 | str | None | None | ||
text_det_thresh | 参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。 | float | None | None | ||
text_det_box_thresh | 参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。 | float | None | None | ||
text_det_unclip_ratio | 参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。 | float | None | None | ||
text_rec_score_thresh | 参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。 | float | None | None | ||
seal_det_limit_side_len | 参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。 | int | None | None | ||
seal_det_limit_type | 参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。 | str | None | None | ||
seal_det_thresh | 参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。 | float | None | None | ||
seal_det_box_thresh | 参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。 | float | None | None | ||
seal_det_unclip_ratio | 参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。 | float | None | None | ||
seal_rec_score_thresh | 参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。 | float | None | None |
(3)对视觉预测结果进行处理。
每个样本的预测结果均为 dict
类型,包含 visual_info
和 layout_parsing_result
两个字段。通过 visual_info
得到视觉信息(包含 normal_text_dict
、table_text_list
、table_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_json | bool | 是否对输出内容进行使用 JSON 缩进格式化。 | True |
indent | int | 指定缩进级别,以美化输出的 JSON 数据,使其更具可读性,仅当 format_json 为 True 时有效。 | 4 | ||
ensure_ascii | bool | 控制是否将非 ASCII 字符转义为 Unicode。设置为 True 时,所有非 ASCII 字符将被转义;False 则保留原始字符,仅当 format_json 为 True 时有效。 | False | ||
save_to_json() | 将结果保存为 json 格式的文件 | save_path | str | 保存的文件路径,当为目录时,保存文件命名与输入文件类型命名一致。 | 无 |
indent | int | 指定缩进级别,以美化输出的 JSON 数据,使其更具可读性,仅当 format_json 为 True 时有效。 | 4 | ||
ensure_ascii | bool | 控制是否将非 ASCII 字符转义为 Unicode。设置为 True 时,所有非 ASCII 字符将被转义;False 则保留原始字符,仅当 format_json 为 True 时有效。 | False | ||
save_to_img() | 将中间各个模块的可视化图像保存在 png 格式的图像中。 | save_path | str | 保存的文件路径,支持目录或文件路径。 | 无 |
save_to_html() | 将文件中的表格保存为 html 格式的文件 | save_path | str | 保存的文件路径,支持目录或文件路径。 | 无 |
save_to_xlsx() | 将文件中的表格保存为 xlsx 格式的文件 | save_path | str | 保存的文件路径,支持目录或文件路径。 | 无 |
- 调用
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_res
、overall_ocr_res
、text_paragraphs_ocr_res
、formula_res_region1
、table_cell_img
和seal_res_region1
,对应的值是Image.Image
对象:分别用于显示版面区域检测、OCR、OCR文本段落、公式、表格和印章结果的可视化图像。如果没有使用可选模块,则dict中只包含layout_det_res
。
(4)调用PP-ChatOCRv4的产线对象的 build_vector() 方法,对文本内容进行向量构建。
以下是 build_vector()
方法的参数及其说明:
参数 | 参数说明 | 参数类型 | 默认值 | |
---|---|---|---|---|
visual_info | 视觉信息,可以是包含视觉信息的 dict,或者由这些 dict 组成的列表。 | list | dict | None |
min_characters | 最小字符数量。为大于 0 的正整数,可以根据大语言模型支持的 token 长度来决定。 | int | 3500 | |
block_size | 长文本建立向量库时分块大小。为大于 0 的正整数,可以根据大语言模型支持的 token 长度来决定。 | int | 300 | |
flag_save_bytes_vector | 文字是否保存为二进制文件。 | bool | False | |
retriever_config | 向量检索大模型配置参数,参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。 | dict | None |
该方法会返回一个包含视觉文本信息的dict,dict的内容如下: - flag_save_bytes_vector
:(bool)
是否将结果保存为二进制文件 - flag_too_short_text
:(bool)
是否文本长度小于最小字符数量 - vector
: (str|list)
文本的二进制内容或者文本内容,取决于flag_save_bytes_vector
和min_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 Var | str | 无 |
key_list | 用于提取信息的单个键或键列表。 | Union[str, List[str]] | None | |
mllm_chat_bot_config | 多模态大模型配置参数,参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。 | dict | None |
(6)调用PP-ChatOCRv4的产线对象的 chat() 方法,对关键信息进行抽取。
以下是 chat()
方法的参数及其说明:
以下是将您提供的表格内容重新整理成 Markdown 格式的表格:
参数 | 参数说明 | 参数类型 | 默认值 |
---|---|---|---|
key_list | 用于提取信息的单个键或键列表。 | Union[str, List[str]] | None |
visual_info | 视觉信息结果。 | List[dict] | None |
use_vector_retrieval | 是否使用向量检索。 | bool | True |
vector_info | 用于检索的向量信息。 | dict | None |
min_characters | 所需的最小字符数。为大于 0 的正整数。 | int | 3500 |
text_task_description | 文本任务的描述。 | str | None |
text_output_format | 文本结果的输出格式。 | str | None |
text_rules_str | 生成文本结果的规则。 | str | None |
text_few_shot_demo_text_content | 用于少样本演示的文本内容。 | str | None |
text_few_shot_demo_key_value_list | 用于少样本演示的键值列表。 | str | None |
table_task_description | 表任务的描述。 | str | None |
table_output_format | 表结果的输出格式。 | str | None |
table_rules_str | 生成表结果的规则。 | str | None |
table_few_shot_demo_text_content | 表少样本演示的文本内容。 | str | None |
table_few_shot_demo_key_value_list | 表少样本演示的键值列表。 | str | None |
mllm_predict_info | 多模态大模型结果。 | dict | None |
mllm_integration_strategy | 多模态大模型和大语言模型数据融合策略,支持单独使用其中一个或者融合两者结果。可选:“integration”, “llm_only” 和 “mllm_only”。 | str | “integration” |
chat_bot_config | 大语言模型配置信息,参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。 | dict | None |
retriever_config | 向量检索大模型配置参数,参数含义与实例化参数基本相同。设置为 None 表示使用实例化参数,否则该参数优先级更高。 | dict | None |
该方法会将结果打印到终端,打印到终端的内容解释如下: - chat_res
: (dict)
提取信息的结果,是一个dict,包含了待抽取的键和对应的值。