如何在centos7上搭建验证码识别平台
Page content
验证码作为一种最为基础的图灵测试已经广泛存在于各种网站,而在某些场景下我们需要绕过这些测试,此时就需要使用到Tesseract
,一个光学字符识别引擎,且支持多种操作系统。并且是被认为是最精准的开源光学字符识别引擎之一。现在我们来看看如何将其搭建到centos7上面的。
直接安装
sudo rpm --import https://build.opensuse.org/projects/home:Alexander_Pozdnyakov/public_key
yum update
yum install tesseract
yum install tesseract-langpack-deu
现在tesseract已经成功安装 我们来测试一下tesseract --version
下载对应模型
我们可以到如下链接中去下载相应需要使用的模型。并存储到/usr/share/tesseract/tessdata
目录下
https://github.com/tesseract-ocr/tessdata_best
snum模型
通过tesseract --list-langs
即可看到现有模型。
服务端
from fastapi import FastAPI, Body
from base64 import b64decode
from io import BytesIO
from PIL import Image
import pytesseract
app = FastAPI()
SEC_KEY = "randomcode"
@app.post("/capcha")
async def read_capcha(sec_key: str = Body(...), b64_img: str = Body(...)):
if SEC_KEY == sec_key:
return {
"code": 200,
"result": pytesseract.image_to_string(
Image.open(BytesIO(b64decode(b64_img))), lang="snum"
).replace(" ", ""),
}
通过 uvicorn api:app --reload
启动服务
测试
from base64 import b64encode
import requests
SEC_KEY = "randomcode"
url = 'http://x.x.x.x:8000/capcha'
img = 'xxx.png'
with open(img,'rb') as f:
b64_img = bytes.decode(b64encode(f.read()))
requests.post(url,json={'sec_key':SEC_KEY,'b64_img':b64_img}).text