基于paddleocr的字符识别

文章目录

  • 前言
  • 一、paddleocr环境搭建
  • 二、使用
    • 代码
    • 效果展示
  • 总结


前言

最近不是在做关于字符识别的项目嘛,同事用的paddleocr做字符识别自己测试的效果还行,结果到客户那边跑了一下没出结果,尴尬了。。。我感觉用paddleocr整体是没什么问题的,问题可能出在字符的定位方面。
借着这个机会我也学习了一下paddleocr,毕竟后面同事离职我要接手这个项目的(因为同事都是大佬,一个要去读香港理工大学研究生,一个要去读英国伦敦大学研究生,还有一个保研中南大学研究生)


一、paddleocr环境搭建

这里可以借鉴我之前的文章,https://blog.csdn.net/JulyLi2019/article/details/113878162,我不认为大家都是新手,需要一步步展示安装步骤。

建好虚拟环境,换好源之后,去这个地址下载源码:
https://github.com/PaddlePaddle/PaddleOCR/tags

我用的是如下版本:
基于paddleocr的字符识别_第1张图片
下载完解压之后,进入解压后的目录执行安装依赖库命名:
基于paddleocr的字符识别_第2张图片

pip install -r requirements.txt

等待安装完成后,单独安装所需的paddleocr库

pip install paddleocr

有时import paddleocr时,可能会出现一些关于dll的错误,大概率是shapely库的问题,此时需要把D:\Anaconda3\envs\paddle\Lib\site-packages\shapely\DLLs(根据你自己的地址找)中两个dll文件,复制到D:\Anaconda3\envs\paddle\Library\binD:\Anaconda3\envs\paddle是我的地址虚拟环境地址)
基于paddleocr的字符识别_第3张图片
基于paddleocr的字符识别_第4张图片
这样问题差不多就能解决了哈。

二、使用

代码

下面直接上代码:

# -*- coding:utf-8 -*-
# @Time : 2021/6/24 16:39
# @Author : JulyLi
# @File : test.py
# @Software: PyCharm

import cv2
import paddleocr
from PIL import Image, ImageDraw, ImageFont
import numpy as np

res = paddleocr.PaddleOCR(use_gpu=False).ocr(img=r'E:\paddle\PaddleOCR-2.1.0\PaddleOCR-2.1.0\demo\1750.jpg')

img = Image.open(r'E:\paddle\PaddleOCR-2.1.0\PaddleOCR-2.1.0\demo\1750.jpg')
im = np.array(img)
for i in range(len(res)):
    cv2.rectangle(im, (int(res[i][0][0][0]), int(res[i][0][0][1])),
                  (int(res[i][0][2][0]), int(res[i][0][2][1])), (255, 0, 0), 1)
    # 使用cv2.putText不能显示中文,需要使用下面的代码代替
    # cv2.putText(im, d['text'][i], (x, y-8), cv2.FONT_HERSHEY_SIMPLEX, 0.3, (255, 0, 0), 1)

    pilimg = Image.fromarray(im)
    pilimg.resize((800, 600), Image.ANTIALIAS)
    draw = ImageDraw.Draw(pilimg)
    # 参数1:字体文件路径,参数2:字体大小
    font = ImageFont.truetype("simhei.ttf", 15, encoding="utf-8")
    # 参数1:打印坐标,参数2:文本,参数3:字体颜色,参数4:字体
    text, sroce = res[i][1]
    draw.text((res[i][0][0][0], res[i][0][0][1]), text, (255, 0, 0), font=font)
    im = cv2.cvtColor(np.array(pilimg), cv2.COLOR_RGB2BGR)

cv2.imwrite("res.jpg", im)
cv2.imshow("recoText", im)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果展示

待检测图:基于paddleocr的字符识别_第5张图片
运行后结果图:
基于paddleocr的字符识别_第6张图片


总结

整体来说paddleorc对于字符识别还是很强大的,而且这里我用的还是轻量级模型,为了提升效果准确度可以换用更大的通用性模型,不过运行时间也会更长。

你可能感兴趣的:(深度学习,python,计算机视觉,paddleocr)