使用easyocr直接识别gif格式的图片会报错,如下所示:
图片地址:https://code.nongji360.com/images/u/0o2o.gif
import easyocr
reader = easyocr.Reader(['ch_sim','en'])
res = reader.readtext("https://code.nongji360.com/images/u/0o2o.gif")
print(res)
运行如上代码会抛出异常:
AttributeError: ‘NoneType’ object has no attribute ‘shape’
此时需要将gif格式转换成png或者jpg格式才能成功运行。这里将gif转换成png格式为例。首先需要导入PIL库。PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了。安装方式如下所示:
pip insall PIL
- 在转换格式之前需要将gif图片下载到本地,使用requests进行下载。
- 下载完成之后,使用PIL的Image.open方法读取gif图片。调用tell方法获取一帧的图片,并将该图片保存到本地。
from PIL import Image
import requests
response = requests.get("https://code.nongji360.com/images/u/0o2o.gif")
open("./aa.gif",'wb').write(response.content) #下载gif图片
im = Image.open("./aa.gif")
current = im.tell() #获取一帧的图片
im.save(str(current) + '.png') #将png图片保存
运行完成之后会在本地生成gif图片和png图片
最后使用easyorc识别png图片
import easyocr
reader = easyocr.Reader(['ch_sim','en'])
res = reader.readtext("./0.png")
print(res)
完整代码如下所示:
import easyocr
from PIL import Image
import requests
# 下载gif图片
response = requests.get("https://code.nongji360.com/images/u/0o2o.gif")
open("./aa.gif",'wb').write(response.content)
# gif转换成png
im = Image.open("./aa.gif")
current = im.tell()
im.save(str(current) + '.png')
# 识别png图片中的文字
reader = easyocr.Reader(['ch_sim','en'])
res = reader.readtext(str(current) + '.png')
print(res)