PaddleOCR 文字识别

paddle官方提供的GPU版本仅支持CUDA 10.2/11.2/11.6/11.7,其它CUDA版本需要自行编译,我的CUDA当时安装的是11.0。无奈,先选择安装CPU版本。

先安装paddle

python -m pip install paddlepaddle==2.4.1 -i https://pypi.tuna.tsinghua.edu.cn/simple

安装paddleOCR,这一步很多人会出错,但我没有出错,官方也有错误的解决方法:https://github.com/PaddlePaddle/PaddleOCR/

pip install paddleocr -i https://mirror.baidu.com/pypi/simple

首次运行会自动下载轻量默认模型

paddleocr --image_dir ./imgs/11.jpg --use_angle_cls true --use_gpu false

官方的例子

from paddleocr import PaddleOCR, draw_ocr

# Paddleocr目前支持的多语言语种可以通过修改lang参数进行切换
# 例如`ch`, `en`, `fr`, `german`, `korean`, `japan`
ocr = PaddleOCR(use_angle_cls=True, lang="ch")  # need to run only once to download and load model into memory
img_path = './imgs/11.jpg'
result = ocr.ocr(img_path, cls=True)
for idx in range(len(result)):
    res = result[idx]
    for line in res:
        print(line)

认别速度慢,1280*720,140K的一张游戏截图耗时8.5秒,看了下任务管理器,只有一个CPU线程在工作。

查了下资料,启用mkldnn。

from paddleocr import PaddleOCR, draw_ocr

# Paddleocr目前支持的多语言语种可以通过修改lang参数进行切换
# 例如`ch`, `en`, `fr`, `german`, `korean`, `japan`
ocr = PaddleOCR(use_angle_cls=True, lang="ch", enable_mkldnn=True)  
img_path = './imgs/11.jpg'
result = ocr.ocr(img_path, cls=True)
for idx in range(len(result)):
    res = result[idx]
    for line in res:
        print(line)

同一张图片,耗时0.6秒。我的CPU是2697V3 14核心28线程,如果截图比较小,比如只是用来查询某个位置坐标,物品掉落信息,0.1秒左右。如果是使用GPU,估记会更快。

不过存在一个问题,第一次载入PaddleOCR模型到内存时,需要耗时2秒左右,实际使用时需要提前载入或“pickle”库来序列化模型加速。

from paddleocr import PaddleOCR, draw_ocr
# 模型路径下必须含有model和params文件
ocr = PaddleOCR(use_angle_cls=True,lang="ch",
                rec_model_dir='../models/ch_PP-OCRv3_rec_slim_infer/',
                cls_model_dir='../models/ch_ppocr_mobile_v2.0_cls_slim_infer/',
                det_model_dir='../models/ch_PP-OCRv3_det_slim_infer/')

img_path = 'PaddleOCR/doc/imgs/11.jpg'
result = ocr.ocr(img_path, cls=True)
for line in result:
    print(line)
 

模型下载地址:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/models_list.md

参数说明

字段说明默认值
use_gpu是否使用GPUTRUE
gpu_mem初始化占用的GPU内存大小8000M
image_dir通过命令行调用时执行预测的图片或文件夹路径 
det_algorithm使用的检测算法类型DB
det_model_dir检测模型所在文件夹。传参方式有两种,1. None: 自动下载内置模型到 ~/.paddleocr/det;2.自己转换好的inference模型路径,模型路径下必须包含model和params文件None
det_max_side_len检测算法前向时图片长边的最大尺寸,当长边超出这个值时会将长边resize到这个大小,短边等比例缩放960
det_db_threshDB模型输出预测图的二值化阈值0.3
det_db_box_threshDB模型输出框的阈值,低于此值的预测框会被丢弃0.5
det_db_unclip_ratioDB模型输出框扩大的比例2
det_east_score_threshEAST模型输出预测图的二值化阈值0.8
det_east_cover_threshEAST模型输出框的阈值,低于此值的预测框会被丢弃0.1
det_east_nms_threshEAST模型输出框NMS的阈值0.2
rec_algorithm使用的识别算法类型CRNN
rec_model_dir识别模型所在文件夹。传参方式有两种,1. None: 自动下载内置模型到 ~/.paddleocr/rec;2.自己转换好的inference模型路径,模型路径下必须包含model和params文件None
rec_image_shape识别算法的输入图片尺寸“3,32,320”
rec_char_type识别算法的字符类型,中英文(ch)、英文(en)、法语(french)、德语(german)、韩语(korean)、日语(japan)ch
rec_batch_num进行识别时,同时前向的图片数30
max_text_length识别算法能识别的最大文字长度25
rec_char_dict_path识别模型字典路径,当rec_model_dir使用方式2传参时需要修改为自己的字典路径./ppocr/utils/ppocr_keys_v1.txt
use_space_char是否识别空格TRUE
use_angle_cls是否加载分类模型FALSE
cls_model_dir分类模型所在文件夹。传参方式有两种,1. None: 自动下载内置模型到 ~/.paddleocr/cls;2.自己转换好的inference模型路径,模型路径下必须包含model和params文件None
cls_image_shape分类算法的输入图片尺寸“3, 48, 192”
label_list分类算法的标签列表[‘0’, ‘180’]
cls_batch_num进行分类时,同时前向的图片数30
enable_mkldnn是否启用mkldnnFALSE
use_zero_copy_run是否通过zero_copy_run的方式进行前向FALSE
lang模型语言类型,目前支持 中文(ch)和英文(en)ch
det前向时使用启动检测TRUE
rec前向时是否启动识别TRUE
cls前向时是否启动分类FALSE
2

评论0

显示验证码