Paddle OCR Win 11下的安装和简单使用教程

3 篇文章 0 订阅

Paddle OCR Win 11下的安装和简单使用教程

对于中文的识别,可以考虑直接使用Paddle OCR,识别准确率和部署都相对比较方便。

环境搭建

目前PaddlePaddle 发布到v2.4,先下载paddlepaddle,再下载paddleocr。根据自己设备操作系统进行下载安装。paddle官网地址:https://www.paddlepaddle.org.cn

在这里插入图片描述

pip install paddlepaddle-gpu==2.4.2.post112 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html
如果需要CPU版本:
pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
paddleocr 推荐环境

PaddlePaddle >= 2.1.2

Python 3.7

CUDA 10.1 / CUDA 10.2

CUDNN 7.6

可参考paddle官方出的环境搭建进行,地址:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/environment.md

安装paddle ocr
pip install paddleocr -i https://mirror.baidu.com/pypi/simple

对于直接pip shapely库可能出现的问题[winRrror 126],建议下载shapely安装包完成安装。地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely

使用教程

在环境搭建好之后,就可以愉快的直接使用了。话说,两年没用paddle,跟torch越来越像了。

import paddle
import paddleocr
from paddleocr import PaddleOCR
import numpy as np
import cv2
import matplotlib.pyplot as plt
import os
from PIL import Image
import glob
import random
import re
import json

print(paddle.__version__)
#2.4.1
print(paddleocr.__version__)
#2.6.1.3

使用PaddleOCR,默认使用的是PP-OCRv3,轻量级模型。

源代码:
SUPPORT_DET_MODEL = ['DB']
VERSION = '2.6.1.0'
SUPPORT_REC_MODEL = ['CRNN', 'SVTR_LCNet']
BASE_DIR = os.path.expanduser("~/.paddleocr/")

DEFAULT_OCR_MODEL_VERSION = 'PP-OCRv3'

OCR model用的PP-OCRv3,根据论文,检测用的DB,识别用的SVTR。相比PP-OCRv2,模型框架如下图:

在这里插入图片描述

ocr = PaddleOCR(use_angles_cls=True, use_gpu=False)

def draw_img(img_path,boxes):
    save_root = 'data/resocr/'
    img_name = img_path.split('\\')[1]
    img = cv2.imread(img_path)
    for box in boxes:
        box = np.reshape(np.array(box),[-1,1,2]).astype(np.int64)
        img = cv2.polylines(np.array(img), [box], True, (255,0,0),2)
    plt.figure(figsize=(10,10))
    save_file = save_root+img_name
    plt.imshow(img)
    plt.savefig(save_file)
    
imgp = 'data\\idcard1.png'
print(ocr.args)
res = ocr.ocr(imgp)
print(res)
boxes = []
texts = []
for j in range(len(res[0])):
    boxes.append(res[0][j][0])
    texts.append(res[0][j][1][0])
draw_img(imgp,boxes)

网上随便找了一张发票奥巴马身份证(身份证图片过不了,虽然是伪造的奥巴马。。。) ,得到的结果如下:(写了才发现,包自带了一个draw_ocr的函数)

在这里插入图片描述

部分结果:
[[[[[350.0, 16.0], [819.0, 16.0], [819.0, 58.0], [350.0, 58.0]],
   ('上海增值税电子普通发票', 0.9431300759315491)],
  [[[864.0, 38.0], [1060.0, 41.0], [1060.0, 62.0], [864.0, 59.0]],
   ('发票代码:031001600311', 0.9889101982116699)],
  [[[864.0, 71.0], [1024.0, 71.0], [1024.0, 92.0], [864.0, 92.0]],
   ('发票号码:81471594', 0.9445592164993286)],
  [[[864.0, 102.0], [1074.0, 98.0], [1074.0, 119.0], [864.0, 123.0]],
   ('开票日期:2017年11月13日', 0.9694705009460449)],
  [[[535.0, 115.0], [633.0, 112.0], [634.0, 139.0], [536.0, 142.0]],
   ('上海市税务局', 0.9940652847290039)],
  [[[6.0, 134.0], [201.0, 138.0], [201.0, 155.0], [6.0, 151.0]],
   ('机器编号:499099774351', 0.9102509021759033)],
  [[[864.0, 132.0], [1164.0, 129.0], [1164.0, 150.0], [864.0, 153.0]],
   ('校验码:01519962196503160071', 0.9772385954856873)]]]

可以看到基本该拿的信息都拿了。可以通过调节超参对检测框阈值和比例进行调节。根据utility.py参数初始化设置如下:

 # DB parmas
 parser.add_argument("--det_db_thresh", type=float, default=0.3) #二值化输出图的阈值
 parser.add_argument("--det_db_box_thresh", type=float, default=0.6) #过滤检测框阈值
 parser.add_argument("--det_db_unclip_ratio", type=float, default=1.5) #检测框扩张的系数
ocr = PaddleOCR(use_angles_cls=True, use_gpu=False, det_db_thresh=0.3,det_db_unclip_ratio=2.5, det_db_box_thresh=0.8)
更改参数后看看结果:

过滤掉了一些检测框。

在这里插入图片描述

参数可以根据自己所处的任务进行调节,也可以选择其他模型进行增加识别率。

paddle现在跟torch很像,也就减少了学习成本。

官方出了一个Dive into OCR的教程,有点儿狗的是,中文版要进群后才能领取。英文版则大方给出来了,地址如下:https://paddleocr.bj.bcebos.com/ebook/Dive_into_OCR.pdf

在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值