赞
踩
最近不是在做关于字符识别的项目嘛,同事用的paddleocr做字符识别自己测试的效果还行,结果到客户那边跑了一下没出结果,尴尬了。。。我感觉用paddleocr整体是没什么问题的,问题可能出在字符的定位方面。
借着这个机会我也学习了一下paddleocr,毕竟后面同事离职我要接手这个项目的(因为同事都是大佬,一个要去读香港理工大学研究生,一个要去读英国伦敦大学研究生,还有一个保研中南大学研究生)
这里可以借鉴我之前的文章,https://blog.csdn.net/JulyLi2019/article/details/113878162,我不认为大家都是新手,需要一步步展示安装步骤。
建好虚拟环境,换好源之后,去这个地址下载源码:
https://github.com/PaddlePaddle/PaddleOCR/tags
我用的是如下版本:
下载完解压之后,进入解压后的目录执行安装依赖库命名:
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\bin
(D:\Anaconda3\envs\paddle
是我的地址虚拟环境地址)
这样问题差不多就能解决了哈。
下面直接上代码:
# -*- 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()
待检测图:
运行后结果图:
整体来说paddleorc对于字符识别还是很强大的,而且这里我用的还是轻量级模型,为了提升效果准确度可以换用更大的通用性模型,不过运行时间也会更长。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。