经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 大数据/云/AI » 人工智能基础 » 查看文章
百度飞桨(PaddlePaddle) - PaddleOCR 文字识别简单使用
来源:cnblogs  作者:VipSoft  时间:2023/5/15 9:01:20  对本文有异议

百度飞桨(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

  1. # 安装 PaddlePaddle
  2. python -m pip install paddlepaddle -i https://pypi.tuna.tsinghua.edu.cn/simple
  3. # 安装 PaddleHub Mac 电脑上终端会感觉卡死的状态,可以添加 --verbose,查看进度
  4. pip install paddlehub -i https://pypi.tuna.tsinghua.edu.cn/simple --verbose
  5. # 该Module依赖于第三方库shapely、pyclipper,使用该Module之前,请先安装shapely、pyclipper
  6. pip install shapely -i https://pypi.tuna.tsinghua.edu.cn/simple
  7. pip install pyclipper -i https://pypi.tuna.tsinghua.edu.cn/simple

定义待预测数据

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

  1. ./images/231242.jpg
  2. ./images/234730.jpg

测试输出

  1. import matplotlib.pyplot as plt
  2. import matplotlib.image as mpimg
  3. # 将预测图片存放在一个文件中(picture.txt)
  4. with open('picture.txt', 'r') as f:
  5. test_img_path=[]
  6. for line in f:
  7. test_img_path.append(line.strip())
  8. # 显示图片
  9. img1 = mpimg.imread(line.strip())
  10. plt.figure(figsize=(10, 10))
  11. plt.imshow(img1)
  12. plt.axis('off')
  13. plt.show()
  14. 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

  1. import paddlehub as hub
  2. # 加载移动端预训练模型
  3. # ocr = hub.Module(name="chinese_ocr_db_crnn_mobile")
  4. # 服务端可以加载大模型,效果更好
  5. 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

  1. import paddlehub as hub
  2. import cv2
  3. # 加载移动端预训练模型
  4. ocr = hub.Module(name="chinese_ocr_db_crnn_mobile")
  5. # 服务端可以加载大模型,效果更好 -- 【个人电脑,内存不够用】
  6. # ocr = hub.Module(name="chinese_ocr_db_crnn_server")
  7. # 将预测图片存放在一个文件中(picture.txt)
  8. test_img_path = []
  9. with open('picture.txt', 'r') as f:
  10. for line in f:
  11. test_img_path.append(line.strip())
  12. print("预测图片 => ", test_img_path)
  13. # 读取测试文件夹test.txt中的照片路径
  14. np_images = [cv2.imread(image_path) for image_path in test_img_path]
  15. results = ocr.recognize_text(
  16. images=np_images, # 图片数据,ndarray.shape 为 [H, W, C],BGR格式;
  17. use_gpu=False, # 是否使用 GPU;若使用GPU,请先设置CUDA_VISIBLE_DEVICES环境变量
  18. output_dir='ocr_result', # 图片的保存路径,默认设为 ocr_result;
  19. visualization=True, # 是否将识别结果保存为图片文件;
  20. box_thresh=0.5, # 检测文本框置信度的阈值;
  21. text_thresh=0.5) # 识别中文文本置信度的阈值;
  22. for result in results:
  23. data = result['data']
  24. save_path = result['save_path']
  25. for infomation in data:
  26. print('text: ', infomation['text'], '\nconfidence: ', infomation['confidence'], '\ntext_box_position: ', infomation['text_box_position'])

输出

  1. "D:\Program Files\Python38\python.exe" D:/OpenSource/PaddlePaddle/OCR/OCRTest.py
  2. 预测图片 => ['./images/123.jpg']
  3. text: 中华人民共和国
  4. confidence: 0.9990600347518921
  5. text_box_position: [[188, 37], [472, 32], [472, 65], [188, 70]]
  6. text: 居民身份证
  7. confidence: 0.9996429681777954
  8. text_box_position: [[171, 96], [492, 96], [492, 140], [171, 140]]
  9. text: 签发机关
  10. confidence: 0.9993374347686768
  11. text_box_position: [[140, 242], [217, 242], [217, 263], [140, 263]]
  12. text: 苏州市公安局工业园区分局
  13. confidence: 0.9997307658195496
  14. text_box_position: [[233, 242], [473, 242], [473, 262], [233, 262]]
  15. text: 有效期限
![image](https://img2023.cnblogs.com/blog/80824/202305/80824-20230509152736239-145300739.png)

image

image

image

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

原文链接:https://www.cnblogs.com/vipsoft/p/17384874.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号