【AI实践】PaddleOCR模型PP-OCRv5上手
背景
paddleocr模型最近破圈,报道开了
本文旨在快速上手,为后续的评测做环境和模型产线基本流程梳理。
- 关键词:OCR,AI能力
- 目的:环境搭建,快速上手,流程熟悉
- 难度:低;
快速上手
官方网站
https://github.com/PaddlePaddle/PaddleOCR?tab=readme-ov-file
部署安装
conda create -n paddleocr
conda activate paddleocr
python -m pip install paddleocr --break-system-packages
pip install paddlepaddle --break-system-packages
测试demo
测试代码来自官网4.1章节,增加了本地和在线图片的分类调用
# docs:
# https://github.com/PaddlePaddle/PaddleOCR?tab=readme-ov-file# Initialize PaddleOCR instance
from paddleocr import PaddleOCR
ocr = PaddleOCR(use_doc_orientation_classify=False,use_doc_unwarping=False,use_textline_orientation=False)# Run OCR inference on a sample image
# online image URL
# result = ocr.predict(
# input="https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png")# local image path
result = ocr.predict("./general_ocr_002.png")# Visualize the results and save the JSON results
for res in result:res.print()res.save_to_img("output")res.save_to_json("output")
备注:
- 首次运行,会下载模型库,耗时略长(1分钟);第二次运行几秒;
- 即使首次下载的模型库,第二次运行,也无法断网运行;
根据PP-OCRv5文档
https://www.paddleocr.ai/latest/version3.x/pipeline_usage/OCR.html,本文档提供了代码解析,当然也可以使用vscode自带的copilot进行分析
开发部署
https://www.paddleocr.ai/latest/version3.x/pipeline_usage/OCR.html
根据这个文档,有高性能推理(比如使用CPU进行加速)和服务化部署(http API)2个方案。
本文暂不涉及,略。
二次开发
根据特定领域或应用场景的数据,对现有模型进行进一步的微调,提升精度或速度。
首先,根据业务场景中的数据,跑base 模型,根据badcase进行聚类分析,找到模型产线中具体哪个模块效果差,进行针对性微调。
微调完成后,通过参数配置或者yaml配置文件 ,指定微调后的本地模型路径。
应用UI
Output JSON 文件是 PaddleOCR 对图片 general_ocr_002.png
的识别结果,有时候我们需要把图片上的识别结果进行其它交互。比如英语教材上的单词,点击图片,指导阅读。
字段说明
- input_path
图片路径。 - model_settings / doc_preprocessor_res
PaddleOCR 的模型参数设置和预处理结果。 - dt_polys / rec_polys / rec_boxes
检测到的文本区域的多边形坐标和矩形框坐标。 - rec_texts
识别出的文本内容列表。例如:
["登机牌", "BOARDING", "PASS", "日期DATE", "舱位", ...]
- rec_scores
每个识别文本的置信度分数,越接近 1 表示识别越准确。 - text_det_params
文本检测的参数设置。 - text_type
识别类型(如 "general")。 - textline_orientation_angles
每行文本的方向角度(此处均为 -1,表示未检测到角度)。
结果解读
- PaddleOCR 检测并识别了 33 个文本区域,每个区域都给出了位置坐标和识别结果。
- 识别文本包括中英文、数字等,内容与登机牌相关(如“登机牌”、“BOARDING PASS”、“日期DATE”、“座位号”、“航班FLIGHT”等)。
- 置信度分数大多在 0.97 以上,说明识别结果较为可靠。
- 每个文本区域都给出了多边形和矩形框坐标,可用于后续可视化或定位。
应用交互
我们对结果的字段分别解析,如有相关的应用,可以做对应的交互,比如触屏点击/鼠标滑词某个区域,可以复制,播报等其它交互。