赞
踩
各种OCR算法试了一圈,还是PaddleOCR比较完善,集成度高,而且各种调试、测试、各种backbone的更改都要方便许多,非常的接地气。网上也有许多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,输出结果同样修改。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。