背景
之前因为需要识别验证码是中文的接口,除了使用百度提供的免费次数,自己查找了网上的方案,发现了easyocr这个项目,于是搭建了服务器环境,安装easyocr之后,编写一个程序提供了一个识别中文验证码的接口,当时的识别效率还可以,当时的中文验证码也没有很复杂。
这里把当时的代码记录一下,以备后用。
代码实现
代码如下:
# coding=utf-8
import base64
import uuid
from flask import Flask
from flask import request, json
import easyocr
import os
app = Flask(__name__)
# 接口的入参是验证码图片的base64
@app.route('/easyocr', methods=['POST'])
def sendMessageToOa():
try:
data = request.get_data()
json_data = json.loads(data.decode("UTF-8"), strict=False)
base64_str = json_data.get("base64")
allow = json_data.get("allow")
image_data = base64.b64decode(base64_str)
file_name = str(uuid.uuid1()) + ".jpg"
file = open(file_name, "wb")
file.write(image_data)
file.close()
r = easyocr.Reader(['ch_sim'],gpu = False)
res = r.readtext(file_name, detail=0, allowlist=allow)
os.remove(file_name)
return '{"status":"200", "result":"' + res[0] + '"}'
except Exception as e:
print(e)
return '{"status":"500"}'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8181)
按照官方github仓库进行安装应该没啥大问题,只不过记得当时的那个模型下载了很久。
我部署的是在远程服务器上面,使用root进行安装的,所以模型的位置是在:
/root/.EasyOCR/model
具体的模型名称如下:
我应该把这两个模型保存起来,下次直接放到对应的位置应该就不用下载这么久了。
我真机智!
20211013