背景
paddleOCR 是百度基于 PaddlePaddle 开发的一款开源 OCR(Optical Character Recognition 光学字符识别) 工具集,旨在提供高精度、高效率的文字识别和文本检测服务,支持包括中英文在内的多种语言。本文将介绍 PaddleOCR 的主要特点和使用方法。
网站
官网: https://www.paddlepaddle.org.cn/
Github: https://github.com/PaddlePaddle/PaddleOCR
特点
- 高精度识别:PaddleOCR 提供多种预训练模型,可以处理各种不同类型的文档和图片,包括通用场景、特定行业领域、手写体等。它还支持 FineTune 模式,可以让用户自行训练模型以适应特定场景的需求。
- 多种文本检测算法:PaddleOCR 支持 EAST、DB、SAST、PSENet 等多种文本检测算法,可以适应不同类型的文档和图片,并提供多种参数配置和优化选项,以满足不同场景的需求。
- 多种输出格式:PaddleOCR 支持输出多种格式的识别结果,包括 bbox、quad、mask 等,可以方便地进行后续处理和分析。
- 快速和高效:PaddleOCR 基于 PaddlePaddle 深度学习框架,提供了高效、可扩展的计算能力,在保证识别精度的同时,也可以快速地处理大量数据。
使用
PaddleOCR 的使用方法非常简单,只需要三步即可完成文本识别和检测任务:
- 安装 PaddleOCR:可以通过 pip 或源码编译的方式安装 PaddleOCR。具体的安装方法可以参考 PaddleOCR 的官方文档。
- 加载模型:PaddleOCR 提供多个预训练模型可供选择,包括通用场景 OCR、身份证 OCR、车牌 OCR 等。可以使用 PaddleOCR 的 API 加载所需的模型。
- 进行文本识别和检测:加载模型后,就可以调用相应的 API 对文本进行识别和检测了。
安装 paddlepaddle
1 | pip install paddlepaddle -i https://pypi.tuna.tsinghua.edu.cn/simple\ |
安装PaddleOCR whl包
1 | pip install "paddleocr>=2.0.1" # 推荐使用2.0.1+版本 |
图片
在图片目录中使用命令行执行识别:
1 | paddleocr --image_dir ./imgs/示例图片.jpg --use_angle_cls true --use_gpu false |
- 检测+方向分类器+识别全流程:
--use_angle_cls true设置使用方向分类器识别180度旋转文字,--use_gpu false设置不使用GPU
1 | paddleocr --image_dir ./xxx.pdf --use_angle_cls true --use_gpu false --page_num 2 |
- 可以通过指定参数
page_num来控制推理前面几页,默认为0,表示推理所有页。
如需新增自己训练的模型,可以在paddleocr中增加模型链接和字段,重新编译即可。
更多whl包使用可参考whl包文档
多语言
1 | paddleocr --image_dir ./imgs_en/254.jpg --lang=en |
PaddleOCR目前支持80个语种,可以通过修改--lang参数进行切换,对于英文模型,指定--lang=en。
常用的多语言简写包括
| 语种 | 缩写 | 语种 | 缩写 | 语种 | 缩写 | ||
|---|---|---|---|---|---|---|---|
| 中文 | ch | 法文 | fr | 日文 | japan | ||
| 英文 | en | 德文 | german | 韩文 | korean | ||
| 繁体中文 | chinese_cht | 意大利文 | it | 俄罗斯文 | ru |
全部语种及其对应的缩写列表可查看多语言模型教程
Python
入门
可以使用以下 Python 代码来进行通用 OCR 识别:
1 | import paddleocr |
以上代码将加载通用 OCR 模型,并对名为 image.jpg 的图片进行识别。识别结果将以列表形式返回,每个元素表示一行文字。
图片
- 检测+方向分类器+识别全流程
1 | from paddleocr import PaddleOCR, draw_ocr |
可以将这个方法包装成函数,提供给接口调用,返回 res 结果
1 | from paddleocr import PaddleOCR |
1 | from paddleocr import PaddleOCR, draw_ocr |
其他
- 稳定版本:python 3.7.9,numpy 要指定安装 1.19.3 及以下版本
1 | pip install numpy==1.19.3 |
提示
ModuleNotFoundError: No module named 'common'异常1
2
3
4
5
6
7
8
9import common, dual, tight, data, prox
ModuleNotFoundError: No module named 'common'
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed
× Encountered error while generating package metadata.
╰─> See above for output.需要安装common、dual、tight、data、prox模块:
1
2
3
4
5pip install common -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install dual -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install tight -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install data -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install prox -i https://pypi.tuna.tsinghua.edu.cn/simple提示
ModuleNotFoundError: No module named 'paddle’或者No module named ‘paddle.fluid’重新安装依赖包 Image \ paddleOCR
1
2pip install Image -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install paddleocr -i https://pypi.tuna.tsinghua.edu.cn/simple
总结
PaddleOCR 是一款高精度、高效率的 OCR 工具集,可以适应不同类型的文档和图片,并支持多种输出格式。通过简单的 API 调用就可以进行文本识别和检测,并在实际应用中发挥重要作用。


