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

本文涉及的产品
票证核验,票证核验 50次/账号
小语种识别,小语种识别 200次/月
OCR统一识别,每月200次
简介: 百度飞桨(PaddlePaddle) - PaddleHub OCR 文字识别简单使用

OCR的技术路线

PaddleHub 预训练模型的网络结构是 DB + CRNN, 可微的二值化模块(Differentiable Binarization,简称DB)

CRNN(Convolutional Recurrent Neural Network)即卷积递归神经网络, 是DCNN和RNN的组合

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

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

安装库

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 电脑上终端会感觉卡死的状态,(Mac 在装opencv那个依赖,装了30分钟),可以添加   --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']

加载预训练模型

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")

预测

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:  有效期限

源码地址:https://gitee.com/VipSoft/Paddle

目录
相关文章
|
1月前
|
存储 人工智能 文字识别
AI与OCR:数字档案馆图像扫描与文字识别技术实现与项目案例
本文介绍了纸质档案数字化的技术流程,包括高精度扫描、图像预处理、自动边界检测与切割、文字与图片分离抽取、档案识别与文本提取,以及识别结果的自动保存。通过去噪、增强对比度、校正倾斜等预处理技术,提高图像质量,确保OCR识别的准确性。平台还支持多字体识别、批量处理和结构化存储,实现了高效、准确的档案数字化。具体应用案例显示,该技术在江西省某地质资料档案馆中显著提升了档案管理的效率和质量。
|
4月前
|
人工智能 JSON 文字识别
【实操】Java+百度ocr,实现图片识别文字小工具
本文介绍了一个基于Java和百度OCR的文字识别工具,能够通过截图或上传图片实现文字识别,并使用exe4j将工具封装为exe文件以便于使用。文章详细介绍了实现过程,包括Java Swing页面布局、百度OCR配置及使用方法,以及如何将Java项目打包成jar和exe文件。此外,还提供了一些相关资源供读者参考。
77 0
【实操】Java+百度ocr,实现图片识别文字小工具
|
4月前
|
开发框架 文字识别 前端开发
基于百度智能云的OCR接口进行图文识别
基于百度智能云的OCR接口进行图文识别
|
5月前
|
文字识别
印刷文字识别使用问题之影响印刷体文字识别率包括哪些
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
5月前
|
文字识别 API 开发工具
印刷文字识别使用问题之如何提高OCR的识别率
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
5月前
|
存储 文字识别 算法
印刷文字识别使用问题之电商图片文字识别是否支持一次调用识别多张图片
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
5月前
|
文字识别 API
印刷文字识别使用问题之遇到个人证照识别文字识别错误,该怎么办
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
5月前
|
文字识别 Java API
印刷文字识别操作报错合集之复制文字识别OCR的标注任务时出现报错,该怎么办
在使用印刷文字识别(OCR)服务时,可能会遇到各种错误。例如:1.Java异常、2.配置文件错误、3.服务未开通、4.HTTP错误码、5.权限问题(403 Forbidden)、6.调用拒绝(Refused)、7.智能纠错问题、8.图片质量或格式问题,以下是一些常见错误及其可能的原因和解决方案的合集。
|
5月前
|
人工智能 文字识别 开发工具
印刷文字识别使用问题之是否支持识别并返回文字在图片中的位置信息
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
5月前
|
人工智能 JSON 文字识别
印刷文字识别使用问题之如何数电发票进行识别
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
下一篇
DataWorks