@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 ##降低版本