百度字符识别PaddleOCR库的安装和使用

一、问题描述

OCR(Optical Character Recognition,光学字符识别)技术是一种将图像中的文字转换为可编辑文本格式的技术。它通过扫描或拍照等方式获取图像,然后利用图像处理和模式识别技术,识别出图像中的文字信息,并将其转换为电子文本。OCR技术广泛应用于多个领域,如文档处理、自动化数据录入、身份证识别、银行和金融业务、物流和快递管理、智能交通系统、医疗保健和教育行业等。

二、PaddleOCR开发库

PaddleOCR是一个由百度PaddlePaddle团队开发的开源OCR(Optical Character Recognition,光学字符识别)工具库。

特点

  1. 超轻量级中文OCR:PaddleOCR提供了多种轻量级的中文OCR模型,这些模型具有较高的识别精度和较快的推理速度。
  2. 多语言与通用性:除了中文,PaddleOCR还支持英文和其他多种语言的识别。此外,它还提供了通用的检测、识别、分类、方向预测等任务模型。
  3. 部署灵活性:PaddleOCR支持多种硬件平台的部署,包括CPU、GPU以及移动端设备,如Android和iOS。
  4. 数据增强与预处理:提供了丰富的数据增强和预处理功能,有助于提升模型的泛化能力。
  5. 可视化工具:配备了可视化工具,便于用户查看识别结果和调试模型。

应用场景

PaddleOCR在多个领域都有广泛的应用,包括但不限于:

  1. 身份证识别:可以快速准确地识别身份证上的姓名、身份证号等关键信息。
  2. 车牌识别:在交通管理、停车场等场景中,用于自动识别车牌号码。
  3. 票据识别:应用于财务、税务等领域,实现票据信息的自动化录入和处理。
  4. 手写文字识别:可用于教育、医疗等领域,辅助手写文字的录入和识别。

版权许可协议

开源协议:Apache2

Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserved
Apache License
Version 2.0, January 2004

三、安装

PaddleOCR的安装和使用相对简单。用户可以通过pip命令轻松安装,并参考官方文档进行配置和训练。此外,Padoop还提供了预训练模型,用户可以直接下载使用,而无需从头开始训练。

安装PaddlePaddle2.6.1

基于python10创建ocr虚拟环境,安装paddlepaddle。

PaddlePaddle是一个由百度开发的深度学习框架,它是国内最早开源的深度学习平台之一。

conda create -n ocr python=3.10
conda activate ocr
pip install paddlepaddle

输出:

Successfully installed Pillow-10.4.0 anyio-4.4.0 astor-0.8.1 certifi-2024.8.30 decorator-5.1.1 exceptiongroup-1.2.2 h11-0.14.0 httpcore-1.0.5 httpx-0.27.2 idna-3.8 numpy-2.1.1 opt-einsum-3.3.0 paddlepaddle-2.6.1 protobuf-3.20.2 sniffio-1.3.1 typing-extensions-4.12.2

安装shapely。Shapely 是一个用于处理和分析平面几何对象的 Python 包。

pip install shapely

输出:

Collecting shapely
Downloading shapely-2.0.6-cp310-cp310-win_amd64.whl.metadata (7.2 kB)
Requirement already satisfied: numpy<3,>=1.14 in d:\work-data\conda3\envs\ocr\lib\site-packages (from shapely) (2.1.1)
Downloading shapely-2.0.6-cp310-cp310-win_amd64.whl (1.4 MB)
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.4/1.4 MB 4.4 MB/s eta 0:00:00
Installing collected packages: shapely
Successfully installed shapely-2.0.6

安装paddleocr2.8.1

PaddleOCR 是一个由百度 PaddlePaddle 团队开发的开源 OCR(光学字符识别)工具库。它基于 PaddlePaddle 深度学习框架,提供了丰富的预训练模型和易于使用的 API,可以快速实现各种场景下的文字检测和识别任务。

pip install paddleocr

输出:

Successfully installed beautifulsoup4-4.12.3 charset-normalizer-3.3.2 colorama-0.4.6 contourpy-1.3.0 cycler-0.12.1 cython-3.0.11 fire-0.6.0 fonttools-4.53.1 imageio-2.35.1 imgaug-0.4.0 kiwisolver-1.4.7 lazy-loader-0.4 lmdb-1.5.1 lxml-5.3.0 matplotlib-3.9.2 networkx-3.3 numpy-1.26.4 opencv-contrib-python-4.10.0.84 opencv-python-4.10.0.84 packaging-24.1 paddleocr-2.8.1 pyclipper-1.3.0.post5 pyparsing-3.1.4 python-dateutil-2.9.0.post0 python-docx-1.1.2 pyyaml-6.0.2 rapidfuzz-3.9.7 requests-2.32.3 scikit-image-0.24.0 scipy-1.14.1 six-1.16.0 soupsieve-2.6 termcolor-2.4.0 tifffile-2024.8.30 tqdm-4.66.5 urllib3-2.2.2

已安装开发包列表

(ocr) D:\Dev\dev-Python\CV\PaddleOCR>conda list
# packages in environment at D:\Work-Data\conda3\envs\ocr:
#
# Name                   Version                   Build Channel
anyio                     4.4.0                   pypi_0   pypi
astor                     0.8.1                   pypi_0   pypi
beautifulsoup4           4.12.3                   pypi_0   pypi
bzip2                     1.0.8               h2bbff1b_6   defaults
ca-certificates           2024.7.2             haa95532_0   defaults
certifi                   2024.8.30               pypi_0   pypi
charset-normalizer       3.3.2                   pypi_0   pypi
colorama                 0.4.6                   pypi_0   pypi
contourpy                 1.3.0                   pypi_0   pypi
cycler                   0.12.1                   pypi_0   pypi
cython                   3.0.11                   pypi_0   pypi
decorator                 5.1.1                   pypi_0   pypi
exceptiongroup           1.2.2                   pypi_0   pypi
fire                     0.6.0                   pypi_0   pypi
fonttools                 4.53.1                   pypi_0   pypi
h11                       0.14.0                   pypi_0   pypi
httpcore                 1.0.5                   pypi_0   pypi
httpx                     0.27.2                   pypi_0   pypi
idna                     3.8                     pypi_0   pypi
imageio                   2.35.1                   pypi_0   pypi
imgaug                   0.4.0                   pypi_0   pypi
kiwisolver               1.4.7                   pypi_0   pypi
lazy-loader               0.4                     pypi_0   pypi
libffi                   3.4.4               hd77b12b_1   defaults
lmdb                     1.5.1                   pypi_0   pypi
lxml                     5.3.0                   pypi_0   pypi
matplotlib               3.9.2                   pypi_0   pypi
networkx                 3.3                     pypi_0   pypi
numpy                     1.26.4                   pypi_0   pypi
opencv-contrib-python     4.10.0.84               pypi_0   pypi
opencv-python             4.10.0.84               pypi_0   pypi
openssl                   3.0.15               h827c3e9_0   defaults
opt-einsum               3.3.0                   pypi_0   pypi
packaging                 24.1                     pypi_0   pypi
paddleocr                 2.8.1                   pypi_0   pypi
paddlepaddle             2.6.1                   pypi_0   pypi
pillow                   10.4.0                   pypi_0   pypi
pip                       24.2           py310haa95532_0   defaults
protobuf                 3.20.2                   pypi_0   pypi
pyclipper                 1.3.0.post5             pypi_0   pypi
pyparsing                 3.1.4                   pypi_0   pypi
python                   3.10.14             he1021f5_1   defaults
python-dateutil           2.9.0.post0             pypi_0   pypi
python-docx               1.1.2                   pypi_0   pypi
pyyaml                   6.0.2                   pypi_0   pypi
rapidfuzz                 3.9.7                   pypi_0   pypi
requests                 2.32.3                   pypi_0   pypi
scikit-image             0.24.0                   pypi_0   pypi
scipy                     1.14.1                   pypi_0   pypi
setuptools               72.1.0         py310haa95532_0   defaults
shapely                   2.0.6                   pypi_0   pypi
six                       1.16.0                   pypi_0   pypi
sniffio                   1.3.1                   pypi_0   pypi
soupsieve                 2.6                     pypi_0   pypi
sqlite                   3.45.3               h2bbff1b_0   defaults
termcolor                 2.4.0                   pypi_0   pypi
tifffile                 2024.8.30               pypi_0   pypi
tk                       8.6.14               h0416ee5_0   defaults
tqdm                     4.66.5                   pypi_0   pypi
typing-extensions         4.12.2                   pypi_0   pypi
tzdata                   2024a               h04d1e81_0   defaults
urllib3                   2.2.2                   pypi_0   pypi
vc                       14.40               h2eaa2aa_0   defaults
vs2015_runtime           14.40.33807         h98bb1dd_0   defaults
wheel                     0.43.0         py310haa95532_0   defaults
xz                       5.4.6               h8cc25b3_1   defaults
zlib                     1.2.13               h8cc25b3_1   defaults

四、使用方法

测试图片

PaddleOCR提供了一系列测试图片,并解压到工程当前子目录ppocr_img下,然后在终端中切换到相应目录

cd ppocr_img

如果不使用提供的测试图片,可以将下方--image_dir参数替换为相应的测试图片路径。

检测+方向分类器+识别全流程

参数:--use_angle_cls true设置使用方向分类器识别180度旋转文字,--use_gpu false设置不使用GPU。

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

例如输入图片./ppocr_img/imgs/11.jpg:

OCR识别结果是一个列表,每个已识别的输出项包含了文本框,文字和识别置信度:

[2024/10/05 20:37:35] ppocr INFO: **********./imgs/11.jpg**********
[2024/10/05 20:37:36] ppocr DEBUG: dt_boxes num : 16, elapsed : 0.597381591796875
[2024/10/05 20:37:36] ppocr DEBUG: cls num : 16, elapsed : 0.13051676750183105
[2024/10/05 20:37:37] ppocr DEBUG: rec_res num : 16, elapsed : 0.8596158027648926
[2024/10/05 20:37:37] ppocr INFO: [[[28.0, 37.0], [302.0, 39.0], [302.0, 72.0], [27.0, 70.0]], ('纯臻营养护发素', 0.9978380799293518)]
[2024/10/05 20:37:37] ppocr INFO: [[[26.0, 83.0], [173.0, 83.0], [173.0, 104.0], [26.0, 104.0]], ('产品信息/参数', 0.9898301959037781)]
[2024/10/05 20:37:37] ppocr INFO: [[[27.0, 112.0], [331.0, 112.0], [331.0, 135.0], [27.0, 135.0]], ('(45元/每公斤,100 公斤起订)', 0.9659187197685242)]
[2024/10/05 20:37:37] ppocr INFO: [[[25.0, 143.0], [281.0, 143.0], [281.0, 165.0], [25.0, 165.0]], ('每瓶22元,1000瓶起 订)', 0.9928639531135559)]
[2024/10/05 20:37:37] ppocr INFO: [[[26.0, 179.0], [300.0, 179.0], [300.0, 195.0], [26.0, 195.0]], ('【品牌】:代加工方 式/OEMODM', 0.9843930602073669)]
[2024/10/05 20:37:37] ppocr INFO: [[[26.0, 210.0], [234.0, 210.0], [234.0, 227.0], [26.0, 227.0]], ('【品名】:纯臻营养 护发素', 0.996315062046051)]
[2024/10/05 20:37:37] ppocr INFO: [[[25.0, 239.0], [241.0, 239.0], [241.0, 259.0], [25.0, 259.0]], ('【产品编号】:YM-X-3011', 0.9848006963729858)]
[2024/10/05 20:37:37] ppocr INFO: [[[413.0, 232.0], [430.0, 232.0], [430.0, 306.0], [413.0, 306.0]], ('ODMOEM', 0.9908034205436707)]
[2024/10/05 20:37:37] ppocr INFO: [[[24.0, 271.0], [180.0, 271.0], [180.0, 290.0], [24.0, 290.0]], ('【净含量】:220ml', 0.9892314672470093)]
[2024/10/05 20:37:37] ppocr INFO: [[[26.0, 303.0], [251.0, 303.0], [251.0, 319.0], [26.0, 319.0]], ('【适用人群】:适合 所有肤质', 0.9909219145774841)]
[2024/10/05 20:37:37] ppocr INFO: [[[26.0, 335.0], [344.0, 335.0], [344.0, 352.0], [26.0, 352.0]], ('【主要成分】:鲸蜡 硬脂醇、燕麦β-葡聚', 0.9828623533248901)]
[2024/10/05 20:37:37] ppocr INFO: [[[26.0, 364.0], [281.0, 364.0], [281.0, 384.0], [26.0, 384.0]], ('糖、椰油酰胺丙基甜 菜碱、泛醌', 0.9505158066749573)]
[2024/10/05 20:37:37] ppocr INFO: [[[368.0, 368.0], [477.0, 368.0], [477.0, 389.0], [368.0, 389.0]], ('(成品包材)', 0.9920712113380432)]
[2024/10/05 20:37:37] ppocr INFO: [[[26.0, 397.0], [360.0, 397.0], [360.0, 414.0], [26.0, 414.0]], ('【主要功能】:可紧 致头发磷层,从而达到', 0.9904314279556274)]
[2024/10/05 20:37:37] ppocr INFO: [[[28.0, 429.0], [370.0, 429.0], [370.0, 445.0], [28.0, 445.0]], ('即时持久改善头发光 泽的效果,给干燥的头', 0.9874169230461121)]
[2024/10/05 20:37:37] ppocr INFO: [[[27.0, 458.0], [137.0, 458.0], [137.0, 479.0], [27.0, 479.0]], ('发足够的滋养', 0.9987380504608154)]

pdf文件识别

此外,paddleocr也支持输入pdf文件,并且可以通过指定参数page_num来控制推理前面几页,默认为0,表示推理所有页。

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

检测但不识别

在 paddleocr 命令行工具中,当 –rec 参数设置为 true(默认值)时,paddleocr 会对输入的图片进行文字识别,并输出识别到的文字内容。

当 –rec 参数设置为 false 时,paddle.org 仅会对输入的图片进行文字检测(Detection),即找出图片中的文字区域,但不会对文字区域内的文字进行识别。这对于只需要知道图片中哪些地方包含文字,而不需要知道具体文字内容的场景非常有用。

例如只检测不识别:设置--recfalse

paddleocr --image_dir ./imgs/11.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]]
......

识别但不检测

在 paddleocr 命令行工具中,–det 参数用于指定是否启用文字检测(Detection)功能。

当 –det 参数设置为 true(默认值)时,paddleocr 会对输入的图片进行文字检测,即找出图片中的文字区域。

当 –det 参数设置为 false 时,paddleocr 将跳过文字检测步骤,直接进行文字识别(如果启用了文字识别功能)。这对于已经知道图片中文字位置的情况非常有用,可以节省计算资源和时间。

例如只识别不检测:设置--detfalse

paddleocr --image_dir ./imgs_words/ch/word_1.jpg --det false

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

['韩国小馆', 0.994467]

版本说明

paddleocr默认使用PP-OCRv4模型(--ocr_version PP-OCRv4),如需使用其他版本可通过设置参数--ocr_version,具体版本说明如下:

版本名称版本说明
PP-OCRv4支持中、英文检测和识别,方向分类器,支持多语种识别
PP-OCRv3支持中、英文检测和识别,方向分类器,支持多语种识别
PP-OCRv2支持中英文的检测和识别,方向分类器,多语言暂未更新
PP-OCR支持中、英文检测和识别,方向分类器,支持多语种识别

五、获取案例套装

需要登录后才允许下载文件包。登录

发表评论