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)

目录
相关文章
|
1月前
|
文字识别 算法 计算机视觉
PaddleOCR学习笔记 01-PaddleOCR简介
《PaddleOCR学习笔记 01-PaddleOCR简介》涵盖了PaddleOCR的基础介绍、OCR技术概览、PaddleOCR的开源状态及主要算法,包括文字检测与识别算法、百度自研的SAST、SRN和End2End-PSL等,以及9m超轻量模型的介绍。适合初学者入门学习。
34 0
PaddleOCR学习笔记 01-PaddleOCR简介
|
6月前
|
并行计算
PaddleOCR环境配置
PaddleOCR环境配置
143 1
|
5月前
|
机器学习/深度学习 存储 自然语言处理
PaddlePaddle
【6月更文挑战第26天】PaddlePaddle。
81 10
|
4月前
|
JSON Linux 数据格式
Pathlib好用吗?对比os.path
`pathlib`是Python 3.4引入的模块,提供了一种面向对象的方式来处理文件路径,以替代可能引起混淆的`os.path`字符串操作。从3.6版开始,`open()`及`os`, `shutil`, `os.path`中的函数都支持`pathlib.Path`对象。`pathlib`通过统一使用正斜杠处理不同操作系统路径,简化了代码,如在Windows和Linux上。它还允许直接对文件进行读写操作,减少错误和提高可读性。虽然`pathlib`可能稍慢于传统方法,但在大多数情况下,其易用性和可维护性优点远胜过这点性能损失。因此,推荐使用`pathlib`进行路径操作。
Learn R package together--(2)
介绍俩个小众但实用的包wherepackage、rPlotter
82 0
|
人工智能
Learn R package together--(3)
论文中作图经常会有合并图排版需求,一般会放入PPT中或AI手动调节,若是在R中出图前直接调好岂不是更美滋滋,So本次就介绍几种关于合并图形的包cowplot、gridExtra、ggpubr、patchwork
73 0
Learn R package together--(1)
ggrepel包 此包可解决标签重合问题
74 0
|
资源调度 JavaScript 前端开发
snowpack 快速开始
snowpack 快速开始
131 0
snowpack 快速开始
|
机器学习/深度学习 人工智能 PyTorch
Paddle 点灯人 之 Paddle介绍
首先,我想讲一下,为什么我想学习paddle,或者说为什么要学习paddle。百度已经很早就做paddle了,这可以说是国内最好的学习框架了,他可以说到现在已经非常成熟了,相对于pytorch,他的历史确实没有那么悠久,并且很多人都在用pytorch而不是paddle。不过paddle在国内来说,是比较好的,很多东西都有简单的部署,可以更好的使用,所以我也想学习paddle,也为了有更多机会。
Paddle 点灯人 之 Paddle介绍
|
异构计算 Python
【谁说视频不能P】之基于PaddleHub的100行代码P阿力木视频
【谁说视频不能P】之基于PaddleHub的100行代码P阿力木视频
102 0
【谁说视频不能P】之基于PaddleHub的100行代码P阿力木视频