PaddleOCR

简介: PaddleOCR

图片转文字

PaddleOCR

https://github.com/PaddlePaddle/PaddleOCR

模型下载

https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/doc/doc_ch/models_list.md

https://github.com/PaddlePaddle/PaddleOCR#%EF%B8%8F-pp-ocr%E7%B3%BB%E5%88%97%E6%A8%A1%E5%9E%8B%E5%88%97%E8%A1%A8%E6%9B%B4%E6%96%B0%E4%B8%AD

这个是infer是模型,后面的只是数据集

windows安装

本次实验环境

python

  • 3.10.6

pip

  • 23.2.1

先准备虚拟环境,然后升级虚拟环境的pip,最后拉包

虚拟环境

mkdir OCR
cd .\OCR\
python -m venv test-env
.\test-env\Scripts\activate
python.exe -m pip install --upgrade pip

方案一:gpu版

python3 -m pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple

方案二:cpu版

python3 -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple

安装PaddleOCR whl包

pip install "paddleocr>=2.0.1"

模型更换

如果第一次直接运行的话,会在C盘.paddleocr目录下的模型文件,可能因为中文路径报错,

所以自己需要更换模型路径保证纯英文或下载新模型,同时在utils.py设置路径

注意缩进!!!!注意文件路径是否需要防止转义

def create_predictor(args, mode, logger):
    if mode == "det":
        model_dir = args.det_model_dir
    elif mode == 'cls':
        model_dir = args.cls_model_dir
    elif mode == 'rec':
        model_dir = args.rec_model_dir
    elif mode == 'table':
        model_dir = args.table_model_dir
    elif mode == 'ser':
        model_dir = args.ser_model_dir
    elif mode == 're':
        model_dir = args.re_model_dir
    elif mode == "sr":
        model_dir = args.sr_model_dir
    elif mode == 'layout':
        model_dir = args.layout_model_dir
    else:
        model_dir = args.e2e_model_dir

改成你的路径,注意缩进和防止转义---加个\或者全改为/

def create_predictor(args, mode, logger):
    if mode == "det":
        model_dir = 'F:\PaddleOCR\inference\det\ch_PP-OCRv4_det_infer'
    elif mode == 'cls':
        model_dir = 'F:\PaddleOCR\inference\cls\ch_ppocr_mobile_v2.0_cls_slim_infer'
    elif mode == 'rec':
        model_dir = 'F:\PaddleOCR\inference\\rec\ch_PP-OCRv4_rec_infer'
    elif mode == 'table':
        model_dir = args.table_model_dir

不使用gpu测试---成功

开始使用这个--image_dir 后面是图片路径我这里是下载的官方测试图片https://paddleocr.bj.bcebos.com/dygraph_v2.1/ppocr_img.zip

paddleocr --image_dir .\ppocr_img\imgs\1.jpg --use_angle_cls true --use_gpu false

使用gpu测试---需要CUDA

paddleocr --image_dir .\ppocr_img\imgs\1.jpg --use_angle_cls true --use_gpu true

直接使用会报错提示

第一步查看支持的CUDA版本

nvidia-smi

第二部安装CUDA

linux安装

虚拟环境

创建并进入虚拟环境

python3 -m venv test-env
source test-env/bin/activate

查看python版本和pip版本

python -V
pip -V

升级pip到最新

pip install --upgrade pip
(test-env) [root@iZbp1c400avts4bhhmibppZ OCR]# pip install --upgrade pip
Looking in indexes: http://mirrors.cloud.aliyuncs.com/pypi/simple/
Requirement already satisfied: pip in ./test-env/lib/python3.10/site-packages (23.0.1)
Collecting pip
  Downloading http://mirrors.cloud.aliyuncs.com/pypi/packages/50/c2/e06851e8cc28dcad7c155f4753da8833ac06a5c704c109313b8d5a62968a/pip-23.2.1-py3-none-any.whl (2.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 24.8 MB/s eta 0:00:00
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 23.0.1
    Uninstalling pip-23.0.1:
      Successfully uninstalled pip-23.0.1
Successfully installed pip-23.2.1

这个是退出虚拟环境的命令

deactivate

安装PaddlePaddle

python3 -m pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple

安装PaddleOCR whl包

pip install "paddleocr>=2.0.1"

测试运行

windows如果第一次直接运行的话,会在C盘.paddleocr目录下的模型文件,可能因为中文路径报错,

linux是可以直接运行的,看到Successfully installed就是成功了,直接运行测试

下载测试图片

wget https://paddleocr.bj.bcebos.com/dygraph_v2.1/ppocr_img.zip
unzip ppocr_img.zip
(test-env) [root@iZbp1c400avts4bhhmibppZ OCR]# ls
__MACOSX  ppocr_img  ppocr_img.zip  test-env
paddleocr --image_dir ppocr_img/imgs/1.jpg --use_angle_cls true --use_gpu false

我这里经历了好多包的缺少,下面的报错总结里都有

报错总结

  • utils修改路径时缩进是否正确,是否有\r需要防止转移\\r

https://github.com/PaddlePaddle/PaddleOCR/issues/1964

RuntimeError: (PreconditionNotMet) The third-party dynamic library (cudnn64_8.dll) that Paddle depends on is not configured correctly. (error code is 126)

 Suggestions:

 1. Check if the third-party dynamic library (e.g. CUDA, CUDNN) is installed correctly and its version is matched with paddlepaddle you installed.

 2. Configure third-party dynamic library environment variables as follows:

 - Linux: set LD_LIBRARY_PATH by `export LD_LIBRARY_PATH=...`

 - Windows: set PATH by `set PATH=XXX; (at ..\paddle\phi\backends\dynload\dynamic_loader.cc:301)

Original error was: /lib64/libc.so.6: version `GLIBC_2.18' not found (required by /lib64/libstdc++.so.6)

查看已有版本

strings /lib64/libc.so.6 | grep ^GLIBC

安装需要的版本

mkdir /opt/gccInstall/glibc
cd /opt/gccInstall/glibc
wget https://mirrors.tuna.tsinghua.edu.cn/gnu/glibc/glibc-2.18.tar.gz
tar -zxvf  glibc-2.18.tar.gz
cd glibc-2.18 
mkdir build
cd build/
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make -j 8
make install

GLIBCXX_3.4.20' not found

ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /opt/gitCode/OCR/test-env/lib/python3.10/site-packages/paddle/fluid/libpaddle.so

https://github.com/PaddlePaddle/Paddle/issues/48243

原因是glibc版本较低,检查动态库发现没有3.4.20(你报错的版本)

strings /usr/lib64/libstdc++.so.6 | grep GLIBC
(test-env) [root@iZbp1c400avts4bhhmibppZ OCR]# strings /usr/lib64/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBC_2.3
GLIBC_2.2.5
GLIBC_2.14
GLIBC_2.4
GLIBC_2.3.2
GLIBCXX_DEBUG_MESSAGE_LENGTH
方法1成功,看你本地有没有高版本
find / -name "libstdc++.so*"

查看你的原配置

cd /usr/lib64/
ll | grep libstdc

备份旧的,根据自己版本,我这里旧的是19,新的是25

mv libstdc++.so.6.0.19 libstdc++.so.6.0.19.bak

拷贝新的到/usr/lib64/

cp /var/lib/docker/overlay2/d71ee69b3a617c5c534da56ac2c7ebda8551b1bd3b5f47cb3b3ba55d8850dbe8/diff/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25 /usr/lib64/

进行软路由,-s是增加符号链接,f是强制,如果存在就覆盖

ln -sf libstdc++.so.6.0.25 libstdc++.so.6

查看

strings /usr/lib64/libstdc++.so.6 | grep GLIBC

方法2

你可以看下你的gcc版本,一般很多linux系统默认的gcc版本为4.8.5

(test-env) [root@iZbp1c400avts4bhhmibppZ OCR]# gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

安装新版gcc

这是清华源的镜像https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/,官方可能有点慢

cd /opt
mkdir gccInstall
cd /opt/gccInstall
wget https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-10.1.0/gcc-10.1.0.tar.gz
tar -zxvf gcc-10.1.0.tar.gz
cd gcc-10.1.0

下载编译所需依赖项,这个和网络有关,可能非常慢

./contrib/download_prerequisites

注意这里可能报错

这个是因为缺少一个包(组件),这里安装一个包就可以解决了,yum自动下载并安装

yum -y install bzip2

然后重新执行命令

./contrib/download_prerequisites

成功

然后是编译安装

# 创建安装的文件夹路径
cd ..
mkdir gcc101
cd gcc-10.1.0
# --prefix=你的安装路径
./configure --prefix=/opt/gccInstall/gcc101 -enable-checking=release -enable-languages=c,c++ -disable-multilib

然后编译

make -j4

编译时也可能有交换空间不足的报错

解决办法---新增交换空间(这里是之前没有交换空间的情况)

新增2G交换空间

sudo mkdir swapfile
cd /swapfile
sudo dd if=/dev/zero of=swap bs=1024 count=2000000
sudo mkswap -f  swap
sudo swapon swap

然后清理后编译

make clean
./configure --prefix=/opt/gccInstall/gcc101 -enable-checking=release -enable-languages=c,c++ -disable-multilib
make -j4

安装

make install

ImportError: libGL.so.1: cannot open shared object file: No such file or directory

yum install mesa-libGL

ValueError: (InvalidArgument) Device id must be less than GPU count, but received id is: 0. GPU count is: 0.

 [Hint: Expected id < GetGPUDeviceCount(), but received id:0 >= GetGPUDeviceCount():0.] (at ../paddle/phi/backends/gpu/cuda/cuda_info.cc:250)

目录
相关文章
|
5月前
|
存储 人工智能 Java
吃透 Spring AI Alibaba 多智能体|四大协同模式+完整代码
本文详细讲解 Spring AI Alibaba Multi-Agent 多智能体架构,包含顺序执行、并行执行、LLM 路由、监督者四大协同模式,搭配可运行代码示例与真实业务场景,从零带你上手多智能体开发。
2704 3
|
数据挖掘 PyTorch 算法框架/工具
人脸识别中的损失函数ArcFace及其实现过程代码(pytorch)--理解softmax损失函数及Arcface
人脸识别中的损失函数ArcFace及其实现过程代码(pytorch)--理解softmax损失函数及Arcface
2406 0
|
7月前
|
存储 弹性计算 运维
阿里云服务器99元和199元配置与购买规则解读:新购续费同价,选购套餐更实惠
2026年阿里云“ECS 99计划”延续低价长效策略,活动延期至2027年3月31日。核心推出经济型e实例(2核2G3M带宽40G ESSD云盘,99元/年)与通用算力型u1实例(2核4G5M带宽80G ESSD云盘,199元/年),新购续费同价,支持全球多地域部署。活动配套建站礼包、弹性数据库、高效存储等增值服务,覆盖个人开发者、中小企业及创客团队全场景需求。
3909 2
|
文字识别 算法 计算机视觉
PaddleOCR学习笔记 01-PaddleOCR简介
《PaddleOCR学习笔记 01-PaddleOCR简介》涵盖了PaddleOCR的基础介绍、OCR技术概览、PaddleOCR的开源状态及主要算法,包括文字检测与识别算法、百度自研的SAST、SRN和End2End-PSL等,以及9m超轻量模型的介绍。适合初学者入门学习。
1522 0
PaddleOCR学习笔记 01-PaddleOCR简介
|
11月前
|
机器学习/深度学习 文字识别 Java
Python实现PDF图片OCR识别:从原理到实战的全流程解析
本文详解2025年Python实现扫描PDF文本提取的四大OCR方案(Tesseract、EasyOCR、PaddleOCR、OCRmyPDF),涵盖环境配置、图像预处理、核心识别与性能优化,结合财务票据、古籍数字化等实战场景,助力高效构建自动化文档处理系统。
2796 0
|
存储 算法
飞桨x昇腾生态适配方案:09_Paddle转ONNX
本节主要介绍如何将 PP-OCRv4 模型转化为 ONNX 模型,包括环境准备、模型下载、训练模型转 inference 模型及最终转为 ONNX 格式的过程。首先需安装 Paddle2ONNX 和 ONNXRuntime,接着下载并解压训练模型。通过 `export_model.py` 脚本将训练模型转化为 inference 模型,生成包含结构和参数的文件。最后使用 Paddle2ONNX 工具完成到 ONNX 格式的转换,并可选地使用 onnxslim 进行模型优化。各步骤均提供详细命令与参数说明,便于实际操作与部署。
1403 9
|
人工智能 编解码 自动驾驶
RF-DETR:YOLO霸主地位不保?开源 SOTA 实时目标检测模型,比眨眼还快3倍!
RF-DETR是首个在COCO数据集上突破60 mAP的实时检测模型,结合Transformer架构与DINOv2主干网络,支持多分辨率灵活切换,为安防、自动驾驶等场景提供高精度实时检测方案。
3796 6
RF-DETR:YOLO霸主地位不保?开源 SOTA 实时目标检测模型,比眨眼还快3倍!
|
机器学习/深度学习 文字识别 自然语言处理
分析对比大模型OCR、传统OCR和深度学习OCR
OCR技术近年来迅速普及,广泛应用于文件扫描、快递单号识别、车牌识别及日常翻译等场景,极大提升了便利性。其发展历程从传统方法(基于模板匹配和手工特征设计)到深度学习(采用CNN、LSTM等自动学习高级语义特征),再到大模型OCR(基于Transformer架构,支持跨场景泛化和少样本学习)。每种技术在特定场景下各有优劣:传统OCR适合实时场景,深度学习OCR精度高但依赖大量数据,大模型OCR泛化能力强但训练成本高。未来,大模型OCR将结合多模态预训练,向通用文字理解方向发展,与深度学习OCR形成互补生态,最大化平衡成本与性能。
7285 11
|
XML JSON 数据可视化
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
本文详细介绍了不同数据集格式之间的转换方法,包括YOLO、VOC、COCO、JSON、TXT和PNG等格式,以及如何可视化验证数据集。
5370 1
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
|
机器学习/深度学习 人工智能 文字识别
文本,文字识别02----PaddleOCR基础概念及介绍,安装和使用,人工智能是一种使计算机模仿人类的一种技术,PaddleOCR的安装地址-https://www.paddlepaddle.org
文本,文字识别02----PaddleOCR基础概念及介绍,安装和使用,人工智能是一种使计算机模仿人类的一种技术,PaddleOCR的安装地址-https://www.paddlepaddle.org