首页 > 其他分享 >百度飞桨(PaddlePaddle) - PaddleOCR 文字识别简单使用

百度飞桨(PaddlePaddle) - PaddleOCR 文字识别简单使用

时间:2023-05-15 09:00:11浏览次数:47  
标签:PaddleOCR PaddlePaddle 飞桨 test https text images path ocr

百度飞桨(PaddlePaddle)安装
OCR 文字检测(Differentiable Binarization --- DB)

OCR的技术路线

image
PaddleHub 预训练模型的网络结构是 DB + CRNN, 可微的二值化模块(Differentiable Binarization,简称DB)
CRNN(Convolutional Recurrent Neural Network)即卷积递归神经网络, 是DCNN和RNN的组合

DB(Differentiable Binarization)是一种基于分割的文本检测算法。将二值化阈值加入训练中学习,可以获得更准确的检测边界,从而简化后处理流程。DB算法最终在5个数据集上达到了state-of-art的效果和性能
image

CRNN(Convolutional Recurrent Neural Network)即卷积递归神经网络,是DCNN和RNN的组合,专门用于识别图像中的序列式对象。与CTC loss配合使用,进行文字识别,可以直接从文本词级或行级的标注中学习,不需要详细的字符级的标注

image

安装库

Building wheel for opencv-python (pyproject.toml):https://www.cnblogs.com/vipsoft/p/17386638.html

# 安装 PaddlePaddle
python -m pip install paddlepaddle -i https://pypi.tuna.tsinghua.edu.cn/simple

# 安装 PaddleHub Mac 电脑上终端会感觉卡死的状态,可以添加   --verbose,查看进度
pip install paddlehub -i https://pypi.tuna.tsinghua.edu.cn/simple  --verbose

# 该Module依赖于第三方库shapely、pyclipper,使用该Module之前,请先安装shapely、pyclipper
pip install shapely -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pyclipper -i https://pypi.tuna.tsinghua.edu.cn/simple

定义待预测数据

将预测图片存放在一个文件中 picture.txt

./images/231242.jpg
./images/234730.jpg

测试输出

import matplotlib.pyplot as plt
import matplotlib.image as mpimg

# 将预测图片存放在一个文件中(picture.txt)
with open('picture.txt', 'r') as f:
    test_img_path=[]
    for line in f:
        test_img_path.append(line.strip())
        # 显示图片
        img1 = mpimg.imread(line.strip())
        plt.figure(figsize=(10, 10))
        plt.imshow(img1)
        plt.axis('off')
        plt.show()

print(test_img_path) # => ['images/231242.jpg', 'images/234730.jpg']

image

加载预训练模型

PaddleHub提供了以下文字识别模型:

移动端的超轻量模型:仅有8.1M,chinese_ocr_db_crnn_mobile

服务器端的精度更高模型:识别精度更高,chinese_ocr_db_crnn_server。

识别文字算法均采用CRNN(Convolutional Recurrent Neural Network)即卷积递归神经网络。其是DCNN和RNN的组合,专门用于识别图像中的序列式对象。与CTC loss配合使用,进行文字识别,可以直接从文本词级或行级的标注中学习,不需要详细的字符级的标注。该Module支持直接预测。 移动端与服务器端主要在于骨干网络的差异性,移动端采用MobileNetV3,服务器端采用ResNet50_vd

import paddlehub as hub

# 加载移动端预训练模型
# ocr = hub.Module(name="chinese_ocr_db_crnn_mobile")

# 服务端可以加载大模型,效果更好
ocr = hub.Module(name="chinese_ocr_db_crnn_server")

image

预测

PaddleHub对于支持一键预测的module,可以调用module的相应预测API,完成预测功能。
module 'numpy' has no attribute 'int'.: 解方法见:https://www.cnblogs.com/vipsoft/p/17385169.html

import paddlehub as hub
import cv2

# 加载移动端预训练模型
ocr = hub.Module(name="chinese_ocr_db_crnn_mobile")

# 服务端可以加载大模型,效果更好 -- 【个人电脑,内存不够用】
# ocr = hub.Module(name="chinese_ocr_db_crnn_server")

# 将预测图片存放在一个文件中(picture.txt)
test_img_path = []
with open('picture.txt', 'r') as f:
    for line in f:
        test_img_path.append(line.strip())
print("预测图片 => ", test_img_path)

# 读取测试文件夹test.txt中的照片路径
np_images = [cv2.imread(image_path) for image_path in test_img_path]

results = ocr.recognize_text(
    images=np_images,  # 图片数据,ndarray.shape 为 [H, W, C],BGR格式;
    use_gpu=False,  # 是否使用 GPU;若使用GPU,请先设置CUDA_VISIBLE_DEVICES环境变量
    output_dir='ocr_result',  # 图片的保存路径,默认设为 ocr_result;
    visualization=True,  # 是否将识别结果保存为图片文件;
    box_thresh=0.5,  # 检测文本框置信度的阈值;
    text_thresh=0.5)  # 识别中文文本置信度的阈值;

for result in results:
    data = result['data']
    save_path = result['save_path']
    for infomation in data:
        print('text: ', infomation['text'], '\nconfidence: ', infomation['confidence'], '\ntext_box_position: ', infomation['text_box_position'])

输出

"D:\Program Files\Python38\python.exe" D:/OpenSource/PaddlePaddle/OCR/OCRTest.py
预测图片 =>  ['./images/123.jpg']
text:  中华人民共和国 
confidence:  0.9990600347518921 
text_box_position:  [[188, 37], [472, 32], [472, 65], [188, 70]]
text:  居民身份证 
confidence:  0.9996429681777954 
text_box_position:  [[171, 96], [492, 96], [492, 140], [171, 140]]
text:  签发机关 
confidence:  0.9993374347686768 
text_box_position:  [[140, 242], [217, 242], [217, 263], [140, 263]]
text:  苏州市公安局工业园区分局 
confidence:  0.9997307658195496 
text_box_position:  [[233, 242], [473, 242], [473, 262], [233, 262]]
text:  有效期限 
![image](/i/l/?n=23&i=blog/80824/202305/80824-20230509152736239-145300739.png)

image

image

image

百度飞桨:https://aistudio.baidu.com/aistudio/projectdetail/507159

标签:PaddleOCR,PaddlePaddle,飞桨,test,https,text,images,path,ocr
From: https://www.cnblogs.com/vipsoft/p/17384874.html

相关文章

  • paddlepaddle docker 安装实践
    系统:linuxcentosdocker-v#Dockerversion23.0.3,build...参考链接:https://www.paddlepaddle.org.cn/documentation/docs/zh/install/docker/linux-docker.htmldockerhub:https://hub.docker.com/r/paddlepaddle/paddle/tags/拉取镜像:dockerpullpaddlepaddle/paddl......
  • 百度飞桨(PaddlePaddle)安装
    注意:32位pip没有PaddlePaddle源#如果报下列错误,检查Python版本,不能过高也不要太低,并且不能是32位的。ERROR:Couldnotfindaversionthatsatisfiestherequirementpaddlepaddle=-2,4,2(fromversions:none)ERROR:Nomatchingdistributionfoundforpaddlepaddle......
  • 百度飞桨(PaddlePaddle)- 张量(Tensor)
    飞桨使用张量(Tensor)来表示神经网络中传递的数据,Tensor可以理解为多维数组,类似于Numpy数组(ndarray)的概念。与Numpy数组相比,Tensor除了支持运行在CPU上,还支持运行在GPU及各种AI芯片上,以实现计算加速;此外,飞桨基于Tensor,实现了深度学习所必须的反向传播功能和多种多样......
  • 百度飞桨工程部署,一手教你快速部署百度飞桨C++工程落地,包含飞桨OCR文字检测识别、飞桨
    百度飞桨工程部署,一手教你快速部署百度飞桨C++工程落地,包含飞桨OCR文字检测识别、飞桨图片分类、飞桨图片检测,直接调用飞桨模型库,配合tensorRT模型加速库进行前向运算,可以直接按照我的cmake内容将代码移植到实际落地项目中。经验证在x86工控机和边缘端nano、Xavier等ARM设备......
  • 百度飞桨(PaddlePaddle)-数字识别
    手写数字识别任务用于对0~9的十类数字进行分类,即输入手写数字的图片,可识别出这个图片中的数字。使用pip工具安装matplotlib和numpypython-mpipinstallmatplotlibnumpy-ihttps://mirror.baidu.com/pypi/simpleD:\OpenSource\PaddlePaddle>python-mpipinstal......
  • 第六届中国软件开源创新大赛——飞桨赛题新鲜出炉,速来pick!
    最近想要充个电飞桨邀你开启开源贡献之旅寻找那个最“会”的你顶级开源项目、资深研发指导、高阶开发者合作交流,Buff叠满!技能提升、丰富简历、高额奖金,你还不心动?赛事简介中国软件开源创新大赛已成功举办五届,大赛面向国家“十四五”开源生态发展战略布局,聚焦“卡脖子”软件领域以......
  • 超越YOLOv8,飞桨推出精度最高的实时检测器RT-DETR!
    众所周知,实时目标检测(Real-TimeObjectDetection)一直由YOLO系列模型主导。飞桨在去年3月份推出了高精度通用目标检测模型PP-YOLOE,同年在PP-YOLOE的基础上提出了PP-YOLOE+。后者在训练收敛速度、下游任务泛化能力以及高性能部署能力方面均达到了很好的效果。而继PP-......
  • 第四届CECC中国计算机教育大会召开 飞桨持续加码产教融合教育新生态​
    大模型作为人工智能发展的新方向,对人才的需求和培养带来了新挑战。4月21日至22日,以“新时代新挑战新任务”为主题的第四届中国计算机教育大会(CECC)在厦门召开,飞桨承办“人工智能与大模型”论坛同期举办。立足前沿科技与产业发展潮头,以新时代AI人才发展为目标,教育部高等学校计算机......
  • 今天,”飞桨“六岁啦!
    时光荏苒,岁月不居。不经意间,飞桨PaddlePaddle公众号已成立六周年了。2190个日夜、52560个小时,感恩大家的一路相伴!周年之际,让我们一同回首走过的六年!回首过去过去六年,我们共发布了1595篇文章其中原创259篇总阅读量500万+总分享量24万+我们相聚于此,是因为这些话题将我们联系在一起。......
  • 服务器部署paddlepaddle遇到的坑
    paddle库所依赖的系统libstdc++.so.6版本较低,无法满足paddle库所需的GLIBCXX_3.4.20版本要求。1、确定当前系统中libstdc++.so.6文件的版本:strings/lib64/libstdc++.so.6|grepGLIBC显示:GLIBCXX_3.4GLIBCXX_3.4.1GLIBCXX_3.4.2GLIBCXX_3.4.3GLIBCXX_3.4.4GLIB......