【PaddleOCR】快速集成 PP-OCRv5 的 Python 实战秘籍--- 对PaddleOCR预测结果Result对象进行深度解析_ppocrv5
🧑 博主简介:曾任某智慧城市类企业
算法总监
,目前在美国市场的物流公司从事高级算法工程师
一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个性化解决方案等服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:xf982831907
)
💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。
【PaddleOCR】快速集成 PP-OCRv5 的 Python 实战秘籍--- 对PaddleOCR预测结果Result对象进行深度解析
-
- 一、引言
- 二、Python 集成 PP-OCRv5 实战代码解析
- 三、PaddleOCR() 实例化 OCR 对象的参数介绍
- 四、总结
一、引言
在数字化浪潮的推动下,光学字符识别(OCR)技术成为了信息采集与数据处理领域的关键力量。PaddleOCR,作为百度 PaddlePaddle 团队精心打造的开源 OCR 工具包,凭借其卓越的多语言识别能力、惊人的高精度文本解析性能以及出色的扩展性,在全球开发者社区中收获了极高的人气。
随着 PaddleOCR 3.0 版本的震撼发布,PP-OCRv5 模型系列横空出世,它不仅在文本识别的精准度上实现了高达 13% 的史诗级跃升,更是在多场景文档解析方面展现出了无与伦比的强大实力。今天,就让我们一同深入探索如何在 Python 环境下轻松集成并高效运用 PP-OCRv5,快速实现文本识别的实战应用,开启智能文档处理的新篇章。
二、Python 集成 PP-OCRv5 实战代码解析
来到核心实战环节,我们通过简洁高效的 Python 代码,轻松驾驭 PP-OCRv5 模型,实现文本识别的快速推理。
from paddleocr import PaddleOCR# 创建 PaddleOCR 实例,自定义配置 PP-OCRv5ocr = PaddleOCR( use_doc_orientation_classify=False, # 禁用文档方向分类模块 use_doc_unwarping=False, # 禁用文本图像矫正模块 use_textline_orientation=False, # 禁用文本行方向分类模块 ocr_version=\"PP-OCRv5\" # 明确指定使用 PP-OCRv5 版本)# 执行图片文本预测result = ocr.predict(\"./general_ocr_002.png\")# 输出识别结果for res in result: res.print() # 打印识别文本与位置信息 res.save_to_img(\"output\") # 将识别结果保存为图片 res.save_to_json(\"output\") # 将识别结果保存为 JSON 格式
在上述 Python 脚本中,执行了如下几个步骤:
(1)通过 PaddleOCR() 实例化 OCR 对象。
(2)调用 OCR 产线对象的 predict() 方法进行推理预测,该方法会返回一个结果列表。另外,产线还提供了 predict_iter() 方法。两者在参数接受和结果返回方面是完全一致的,区别在于 predict_iter() 返回的是一个 generator,能够逐步处理和获取预测结果,适合处理大型数据集或希望节省内存的场景。可以根据实际需求选择使用这两种方法中的任意一种。
(3)对预测结果进行处理,每个样本的预测结果均为对应的Result对象,且支持打印、保存为图片、保存为json文件的操作;
本文重点介绍对PaddleOCR()预测结果Result对象进行深度解析的具体参数说明。
三、PaddleOCR() 实例化 OCR 对象的参数介绍
通过PaddleOCR()预测结果Result对象进行深度解析,具体参数说明如下:
-
调用print() 方法会将结果打印到终端,打印到终端的内容解释如下:
- input_path: (str) 待预测图像的输入路径
- page_index: (Union[int, None]) 如果输入是PDF文件,则表示当前是PDF的第几页,否则为 None
- model_settings: (Dict[str, bool]) 配置产线所需的模型参数
- use_doc_preprocessor: (bool) 控制是否启用文档预处理子产线
- use_textline_orientation: (bool) 控制是否启用文本行方向分类模块
- doc_preprocessor_res: (Dict[str, Union[str, Dict[str, bool], int]]) 文档预处理子产线的输出结果。仅当 use_doc_preprocessor=True时存在
- input_path: (Union[str, None]) 图像预处理子产线接受的图像路径,当输入为numpy.ndarray时,保存为None
- model_settings: (Dict) 预处理子产线的模型配置参数
- use_doc_orientation_classify: (bool) 控制是否启用文档方向分类
- use_doc_unwarping: (bool) 控制是否启用文本图像矫正
- angle: (int) 文档方向分类的预测结果。启用时取值为[0,1,2,3],分别对应[0°,90°,180°,270°];未启用时为-1
- 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\"
- textline_orientation_angles: (List[int]) 文本行方向分类的预测结果。启用时返回实际角度值(如[0,0,1]),未启用时返回[-1,-1,-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
- rec_boxes: (numpy.ndarray) 检测框的矩形边界框数组,shape为(n, 4),dtype为int16。每一行表示一个矩形框的[x_min, y_min, x_max, y_max]坐标,其中(x_min, y_min)为左上角坐标,(x_max, y_max)为右下角坐标
-
调用save_to_json() 方法会将上述内容保存到指定的save_path中,如果指定为目录,则保存的路径为save_path/{your_img_basename}_res.json,如果指定为文件,则直接保存到该文件中。由于json文件不支持保存numpy数组,因此会将其中的numpy.array类型转换为列表形式。
-
调用save_to_img() 方法会将可视化结果保存到指定的save_path中,如果指定为目录,则保存的路径为save_path/{your_img_basename}_ocr_res_img.{your_img_extension},如果指定为文件,则直接保存到该文件中。(产线通常包含较多结果图片,不建议直接指定为具体的文件路径,否则多张图会被覆盖,仅保留最后一张图)
此外,也支持通过属性获取带结果的可视化图像和预测结果,具体如下:
- json 属性获取的预测结果为dict类型的数据,相关内容与调用 save_to_json() 方法保存的内容一致。
- img 属性返回的预测结果是一个dict类型的数据。其中,键分别为 ocr_res_img 和 preprocessed_img,对应的值是两个 Image.Image 对象:一个用于显示 OCR 结果的可视化图像,另一个用于展示图像预处理的可视化图像。如果没有使用图像预处理子模块,则dict中只包含 ocr_res_img。
四、总结
通过本文的深入讲解,相信大家已经掌握了在 Python 环境下利用 PaddleOCR 快速集成 PP-OCRv5 的全过程。从环境搭建的每一步骤,到实战代码的每个细节,再到关键参数的深层含义,我们对PaddleOCR()预测结果Result对象进行深度解析的参数介绍。如今,你已经具备了将 PP-OCRv5 强大的文本识别能力融入自身项目的能力,无论是处理日常办公文档、优化信息采集流程,还是开展更复杂的智能文档分析项目,都能游刃有余。踏上文本智能处理的新征程,PP-OCRv5 将成为你最得力的助手,助力你在数字化时代浪潮中一往无前。