各种OCR算法试了一圈,还是PaddleOCR比较完善,集成度高,而且各种调试、测试、各种backbone的更改都要方便许多,非常的接地气。网上也有许多paddleocr的相关教程,但是说实话,有很多不清晰的地方,像我这样接触深度学习算法的新手,很多东西都搞不清楚,导致浪费不少时间,趁着网络在训练,我想做一份最最详细的PaddleOCR算法新手教程,确保初次接触深度学习的新手也能快速搞懂。

一、安装PaddleOCR

首先去github下载:https://github.com/PaddlePaddle/PaddleOCR,然后找个文件夹解压。

接下来需要配置PaddleOCR所需的环境,我是win10+anaconda,如果是linux的教程网上也很多,比win10简单多了,就不写了。

首先,推荐新建一个环境:

conda create -n paddle38 python=3.8

接下来,安装PaddlePaddle,推荐使用清华源:

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

如果要使用gpu版的,安装paddlepaddle-gpu:

pip install paddlepaddle-gpu

然后是安装shapely,但是需要先从https://www.lfd.uci.edu/~gohlke/pythonlibs/下载shapely安装包Shapely‑1.7.1‑cp38‑cp38‑win_amd64.whl,将其复制到F:\Anaconda3\envs\paddle38\libs文件夹下(根据自己新建的环境的位置修改),然后在anaconda Prompt中,cd到该目录下,执行:

pip install Shapely‑1.7.1‑cp38‑cp38‑win_amd64.whl

最后cd到刚才解压的PaddleOCR文件夹中,执行:

pip install -r requirements.txt

至此,安装就完成了,我用的是pycharm,记得到pycharm中,将PaddleOCR项目的环境改为paddle38。

PaddleOCR-develop文件夹目录下应该有以下文件:
在这里插入图片描述
这是我已经安装完的文件夹,里面有些文件夹是最初没有的,比如demo、inference、pretrain_models、results、train_data等,这些后面会讲,不影响。

二、试用官方的模型

完成PaddleOCR安装之后,推荐先用官方模型对自己的数据进行下测试看看效果,官方预训练模型的下载地址为:
https://github.com/PaddlePaddle/PaddleOCR/blob/develop/README_ch.md

在这里插入图片描述这里有必要解释一下,推理模型相当于训练完成的模型,直接拿来就可以进行predict;而预训练模型属于半成品,用于进一步的训练,之后用自己的数据训练模型时需要用到预训练模型。所以这里应该先下载推理模型。

如图,我下载的是超轻量OCR模型,检测、方向分类、识别的推理模型我都下载了,在PaddleOCR目录下新建一个inference文件夹,用于存放这些模型:
在这里插入图片描述
接下来就可以准备开始测试自己的图片了,官方也给出了快速开始的教程:
https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_en/quickstart_en.md

可以使用如下命令进行单张图片的测试:
这里有两种方法:
(1)直接在paddle-develop文件夹目录下打开cmd,然后conda activate paddle38,在输入以下指令;
(2)在anaconda Prompt中先conda activate paddle38,再一路cd到paddle-develop文件夹下。

python tools/infer/predict_system.py --image_dir="./doc/imgs/11.jpg" 
                                      --det_model_dir="./inference/ch_ppocr_mobile_v1.1_det_infer/"  
                                      --rec_model_dir="./inference/ch_ppocr_mobile_v1.1_rec_infer/" 
                                      --cls_model_dir="./inference/ch_ppocr_mobile_v1.1_cls_infer/" 
                                      --use_angle_cls=True 
                                      --use_space_char=True

有的网上教程前面是python3开头,不知道为什么,反正在我的环境里跑不起来,甚至没有任何报错反应。

如果不想使用命令运行,而是想在pycharm中使用run的话,需要在代码中进行修改,需要修改的代码在PaddleOCR-develop/tools/infer文件夹下:
在这里插入图片描述
这里面,predict_det是检测文本用的,predict_rec是识别文本用的,而predict_system是既检测又识别。另外,这几个预测文件共用一个参数配置文件utility.py,需要更改的参数如下:

# 注意这些需要修改的参数在utility文件中不是连续的
# 是否使用gpu
parser.add_argument("--use_gpu", type=str2bool, default=True)
# 图片位置(图片位置相对于utility文件位置比较遥远,也可以使用绝对路径)
parser.add_argument("--image_dir", type=str, default="../../demo/sample4.jpg")
# 检测模型路径
parser.add_argument("--det_model_dir", type=str, default="../../inference/ch_ppocr_mobile_v1.1_det_infer/")
# 识别模型路径
parser.add_argument("--rec_model_dir", type=str, default="../../inference/ch_ppocr_mobile_v1.1_rec_infer")
# 字典路径(ic15_dict.txt是英文字典,ppocr_keys_v1.txt是中文字典,检测一般不区分中英文,但是识别需要区分中英文)
parser.add_argument(
        "--rec_char_dict_path",
        type=str,
        default="../../ppocr/utils/ic15_dict.txt")
# 分类模型
parser.add_argument("--cls_model_dir", type=str, default="../../inference/ch_ppocr_mobile_v1.1_cls_infer")
# 字体路径
def draw_ocr_box_txt(image,
                     boxes,
                     txts,
                     scores=None,
                     drop_score=0.5,
                     font_path="../../doc/simfang.ttf"):
# 字体路径
def text_visual(texts,
                scores,
                img_h=400,
                img_w=600,
                threshold=0.,
                font_path="../../doc/simfang.ttf"):

修改完这些文件后,运行predict_system文件,即可,输出结果的位置在predict_system中修改:

draw_img_save = "../../results"

这样即可输出到PaddleOCR-develop/results文件夹中。

同样的,如果只进行文本检测(不识别),运行predict_det,输出结果同样修改。

请添加图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐