M1 安装 paddleOCR

@M1pro 安装 paddleOCR

首先安装anaconda

通过连接安装

https://repo.anaconda.com/archive/Anaconda3-2023.03-1-MacOSX-arm64.pkg
通过连接下载一直下一步

开始新建环境

请添加图片描述
在这里插入图片描述

2、安装 PaddlePaddle

升级pip
pip3 install --upgrade pip

PaddleOCR 需在 PaddlePaddle2.0+下才可以正常运行,开始之前请确保 PaddlePaddle2.0+ 已经安装

CPU:
python3 -m pip install paddlepaddle==2.0.0 -i https://mirror.baidu.com/pypi/simple #指定版本

python3 -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple    #不指定版本

python -m pip install paddlepaddle==2.4.2 -i https://pypi.tuna.tsinghua.edu.cn/simple  #不同源

GPU: 

python3 -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple     #不指定版本

python -m pip install paddlepaddle-gpu==2.4.2.post116 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html  #指定版本

3、安装PaddleOCR whl包

pip3 install paddleocr

4、命令行使用

paddleocr默认使用PP-OCRv3模型(–ocr_version PP-OCRv3),如需使用其他版本可通过设置参数–ocr_version
可以通过修改–lang参数进行切换,对于英文模型,指定–lang=en , --lang=ch

语言简称参数语言简称参数语言简称参数
中文ch法文fr日文japan
英文en德文german韩文korean
繁体中文chinese_cht意大利文it俄罗斯文ru

例子:
*** 识别图片 *** :
检测+方向分类器+识别全流程:–use_angle_cls true设置使用方向分类器识别180度旋转文字,–use_gpu false设置不使用GPU

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

结果是一个list,每个item包含了文本框,文字和识别置信度

[[[28.0, 37.0], [302.0, 39.0], [302.0, 72.0], [27.0, 70.0]], ('识别出的文字', 0.9658738374710083)]
......

*** 识别pdf *** :
可以通过指定参数page_num来控制推理前面几页,默认为0,表示识别所有页。

paddleocr --image_dir ./xxx.pdf --use_angle_cls true --use_gpu false --page_num 2

*** 单独使用检测 *** :
单独使用检测:设置–rec为false

paddleocr --image_dir ./imgs/1.jpg --rec false

结果是一个list,每个item只包含文本框

[[27.0, 459.0], [136.0, 459.0], [136.0, 479.0], [27.0, 479.0]]
[[28.0, 429.0], [372.0, 429.0], [372.0, 445.0], [28.0, 445.0]]
......

*** 单独使用识别 ***
单独使用识别:设置–det为false

paddleocr --image_dir ./2.jpg --det false

结果是一个list,每个item只包含识别结果和识别置信度

['识别文字', 0.994467]

5、Python脚本使用

通过Python脚本使用PaddleOCR whl包,whl包会自动下载ppocr轻量级模型作为默认模型

  • api(使用预训练的模型)
python import paddleocr from paddleocr import PaddleO CR
ocr = PaddleOCR()
result = ocr.ocr('example_image.jpg', det=False) for line in result: print(line[1])

在这个示例中,我们首先导入了 PaddleOCR ,并且创建了一个 OCR 对象,然后我们传入一个图片路径,开始进行 OCR 操作。 OCR 返回的是一个包含识别结果的列表,我们可以对其进行遍历操作并打印出每行文本。在这里我们将检测功能关闭了。如果不关闭检测功能, OCR 会在文本前面加上一个方框来标 识识别结果。

  • api(使用已经预训练好的模型)
python import paddleocr
ocr = paddleocr.OCR( lang="ch", use_angle_cls=True, use_gpu=False, det_model_dir='\\', rec_model_dir='\\', cls_model_dir='\\' ) 

在这个示例中,我们使用OCR函数来创建一个OCR对象。我们在这里指定了使用的语言(本例中是中文),启用了旋转角分类功能,并且指定了模型的目录路径。启用 旋转角分类功能可以提高识别的准确性。如果您有一个 GPU ,您还可以使用 use_gpu=True 来启用 GPU 加速。

  • PaddleOCR 参数配置:
  • lang :识别的语言,可以是 ch 、 en 等等(仅针对预训练模型)。
  • use_angle_cls :是否启用旋转角分类模型(默认开启)。
  • det_model_dir : 检测模型的保存路径(仅自定义训练)。
  • rec_model_dir :识别模型的保存路径(仅自定义训练)。
  • cls_model_dir :旋转角分类模型的保存路径(仅自定义训练)。
  • use_gpu :是否使用 GPU 加速(默认为 False )。
  • gpu_id :选择使用的 GPUID (默认是 0 )。
  • 注意事项
  • 图片尺寸: PaddleOCR 对图片的尺寸要求比较严格,因此您需要将图片调整到合适的大小进行处理。
  • 字体:如果您的图片中包含特殊字体,可能会对 OCR 结果产生影响。
  • 图片质量: OCR 对图片的质量要求比较高,因此在使用 PaddleOCR 之前需要先处理好图片的清晰度和亮度等信息。
  • 案例
    *** 检测+方向分类器+识别全流程 ***
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/1.jpg'
result = ocr.ocr(img_path, cls=True)
for idx in range(len(result)):
    res = result[idx]
    for line in res:
        print(line)

# 显示结果
# 如果本地没有simfang.ttf,可以在https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.6/doc/fonts目录下下载
from PIL import Image
result = result[0]
image = Image.open(img_path).convert('RGB')
boxes = [detection[0] for line in result for detection in line] # Nested loop added
txts = [detection[1][0] for line in result for detection in line] # Nested loop added
scores = [detection[1][1] for line in result for detection in line] # Nested loop added
im_show = draw_ocr(image, boxes, txts, scores, font_path='doc/fonts/simfang.ttf')
im_show = Image.fromarray(im_show)
im_show.save('result.jpg')

结果是一个list,每个item包含了文本框,文字和识别置信度

[[[28.0, 37.0], [302.0, 39.0], [302.0, 72.0], [27.0, 70.0]], ('识别的文字', 0.9658738374710083)]
......

基于PaddleOCR进行本地开发运行

6、克隆 PaddleOCR 仓库

用 git clone 命令或者 Download 把项目仓库直接下载到本地

git clone https://github.com/PaddlePaddle/PaddleOCR

7、安装PaddleOCR 第三方依赖包

命令行进入 PaddleOCR 文件夹下

cd PaddleOCR
安装第三方依赖项
pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

8、下载权重模型

权重链接地址分别贴在下方,需依次下载到本地;

检测模型 det   
https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_det_infer.tar


方向分类模型 cls
https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar   


识别模型 rec
https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_rec_infer.tar

下载到本地之后分别进行解压,创建一个 inference 文件夹,把前面解压后的三个文件夹放入 inference 中,再把 inference 文件夹放入 PaddleOCR 中.

9、PaddleOCR 使用

以上环境配置好之后,就可以使用 PaddleOCR 进行识别了,在PaddleOCR 项目环境下打开终端,根据自己情况,输入下面三种类型中的一种即可完成文本识别

看demo

1,使用 gpu,识别单张图片

python3 tool/infer/predict_system.py --imtest11_yfbdlcge_dir="/Users/shtest11_yfbdlcngshutest11_yfbdlcishutest11_yfbdlci/Documents/流程按钮.png" --det_model_dir="./inference/ch_PP-OCRv3_det_infer/"  --rec_model_dir="./inference/ch_PP-OCRv3_rec_infer/" --cls_model_dir="./inference/ch_ppocr_mobile_v2.0_cls_infer/" --use_test11_yfbdlcngle_cls=True --use_sptest11_yfbdlcce_chtest11_yfbdlcr=True

2,使用 gpu ,识别多张图片

python3 tools/infer/predict_system.py --image_dir="./doc/imgs/" --det_model_dir="./inference/ch_PP-OCRv3_det_infer/"  --rec_model_dir="./inference/ch_PP-OCRv3_rec_infer/" --cls_model_dir="./inference/ch_ppocr_mobile_v2.0_cls_infer/" --use_angle_cls=True --use_space_char=True

3,不使用gpu,识别单张图片

python3 tools/infer/predict_system.py --image_dir="./doc/imgs/11.jpg" --det_model_dir="./inference/ch_PP-OCRv3_det_infer/"  --rec_model_dir="./inference/ch_PP-OCRv3_rec_infer/" --cls_model_dir="./inference/ch_ppocr_mobile_v2.0_cls_infer/" --use_angle_cls=True --use_space_char=True --use_gpu=False

参数说明:
image_dir -> 为需要识别图片路径或文件夹;
det_model_dir -> 存放识别后图片路径或文件夹;

10 启动可能遇到问题

在使用uvicorn中突然遇到这个报错

uvicorn run() got an unexpected keyword argument 'debug'

解决方案
原因:高版本uvicorn 不包含debug
解决方案:

 pip install uvicorn==0.18.1  ##降低版本
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值