paddleocr图片文本识别

1. paddleocr  

  PaddleOCR 是一个基于 PaddlePaddle 深度学习框架的开源 OCR(Optical Character Recognition,光学字符识别)工具。它提供了一系列的预训练模型和工具,可以用于文本检测、文本识别和文本方向检测等任务。 提供了易于使用的 Python API,可以轻松地在你的项目中集成和使用。它还支持 CPU 和 GPU 加速,并且提供了一些预训练模型供你选择使用,或者你也可以根据自己的需求训练自定义的模型。

  PaddleOCR 的功能包括:

  文本检测:检测图像中的文本区域,并给出其边界框。
  文本识别:识别文本区域中的文字内容。
  文本方向检测:检测文本区域的方向(水平、垂直、逆时针旋转、顺时针旋转等)。

2. paddleocr安装

   paddleocr是基于 PaddlePaddle 框架开发的,因此在使用 PaddleOCR 之前是需要先安装paddlepaddle的。

pip install paddleocr

3. 识别图片文本

import cv2
#2使用ocr
from paddleocr import PaddleOCR
ocr = PaddleOCR(use_angle_cls=True, lang='ch')#第一次运行会自动下载模型,默认下载到工作目录的,ch是中文模型,也能检测英文
# 读取图片
img_path = 'ocr.jpeg'#带文本的图片
img = cv2.imread(img_path)
#如果识别不准,可以添加均值或高斯模糊来去噪
img = cv2.GaussianBlur(img, (5, 5), 0)#先模糊,去除噪声
# 执行文字检测和识别 result = ocr.ocr(img) # 绘制结果 for line in result:print(line)#如[[[[13.0, 15.0], [261.0, 8.0], [262.0, 51.0], [14.0, 58.0]], ('CMIITTD', 0.8830805420875549)]],文本区域的框的四个顶点坐标,文本内容及置信度 for word in line: print(word[-1][0])#CMIITTD print(word[-1][1])#0.8830805420875549

  如果已经下载好了模型,直接实例化PaddleOCR时,指定模型路径

import cv2
from paddleocr import PaddleOCR
'''
代码中,如果没有明确指定保存路径,模型文件将被保存在user/admin目录的 .paddleocr 文件夹下。
'''
det_model_dir=r'C:\Users\admin\.paddleocr\whl\det\ch\ch_PP-OCRv4_det_infer'#文本位置检测模型
rec_model_dir=r'C:\Users\admin\.paddleocr\whl\rec\ch\ch_PP-OCRv4_rec_infer'#文本识别模型
cls_model_dir=r'C:\Users\admin\.paddleocr\whl\cls\ch_ppocr_mobile_v2.0_cls_infer'#文本方向分类模型
#2使用ocr
from paddleocr import PaddleOCR
# 创建 PaddleOCR 实例
ocr = PaddleOCR(use_angle_cls=True, lang='ch', det_model_dir=det_model_dir, rec_model_dir=rec_model_dir, cls_model_dir=cls_model_dir)
# 读取图片
img_path = 'ocr.jpeg'#带文本的图片
img = cv2.imread(img_path)
# 执行文字检测和识别
result = ocr.ocr(img)
# 绘制结果
for line in result:print(line)#如[[[[13.0, 15.0], [261.0, 8.0], [262.0, 51.0], [14.0, 58.0]], ('CMIITID', 0.8830805420875549)]]
    for word in line:
        print(word[-1][0])#CMIITID
        print(word[-1][1])#0.8830805420875549

  具体其他更多详细信息可以下载项目后,看里面的文档介绍,地址如下:

  PaddleOCR的GitHub地址:https://github.com/PaddlePaddle/PaddleOCR
  PaddleOCR的Gitee地址:https://gitee.com/paddlepaddle/PaddleOCR

  关于更多的其他语言或版本的模型下载地址可以下载github项目后,找到paddleocr.py文件,里面列出了很多,比如部分如下:

MODEL_URLS = {
    'OCR': {
        'PP-OCRv4': {
            'det': {
                'ch': {
                    'url':
                    'https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_det_infer.tar',
                },
                'en': {
                    'url':
                    'https://paddleocr.bj.bcebos.com/PP-OCRv3/english/en_PP-OCRv3_det_infer.tar',
                },
                'ml': {
                    'url':
                    'https://paddleocr.bj.bcebos.com/PP-OCRv3/multilingual/Multilingual_PP-OCRv3_det_infer.tar'
                }
            },
            'rec': {
                'ch': {
                    'url':
                    'https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_rec_infer.tar',

 或者访问https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/models_list.md

小结:简单使用paddleocr及官方自带的预训练模型来识别印刷体的文本,识别结果较好。如果识别结果不满意或是存在错误,自己可以在此基础上取训练自己的数据集,这里不讲解,另外paddleocr检测的边界框位置信息是整个文本区域的边界框,好像不能得到单个字符的边界框信息,如果有知道如何得到单个字符边界信息,可以留言。

 

  不足或错误之处,欢迎指正与评论,谢谢!

 

参考资料:

https://www.cnblogs.com/xiaoxia722/p/14627482.html

posted @ 2024-04-17 21:07  wancy  阅读(518)  评论(0编辑  收藏  举报