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 | 是否使用GPU | TRUE |
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_thresh | DB模型输出预测图的二值化阈值 | 0.3 |
det_db_box_thresh | DB模型输出框的阈值,低于此值的预测框会被丢弃 | 0.5 |
det_db_unclip_ratio | DB模型输出框扩大的比例 | 2 |
det_east_score_thresh | EAST模型输出预测图的二值化阈值 | 0.8 |
det_east_cover_thresh | EAST模型输出框的阈值,低于此值的预测框会被丢弃 | 0.1 |
det_east_nms_thresh | EAST模型输出框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 | 是否启用mkldnn | FALSE |
use_zero_copy_run | 是否通过zero_copy_run的方式进行前向 | FALSE |
lang | 模型语言类型,目前支持 中文(ch)和英文(en) | ch |
det | 前向时使用启动检测 | TRUE |
rec | 前向时是否启动识别 | TRUE |
cls | 前向时是否启动分类 | FALSE |
评论0