背景
上篇文章我们讲解了验证码识别的最佳解决方案,今天我们把验证码识别的能力,服务化,对外输入一个OCR接口。
- 将验证码识别服务化
部署属于自己的 OCR API
环境准备
【python>=3.6】
pip install ddddocr
pip install flask
搭建
- 用flask搭建一个简单的后台服务
from flask import Flask, render_template, request import ddddocr app = Flask(__name__) @app.route('/ocr', methods=['POST']) def ocr_api(): ocr = ddddocr.DdddOcr() img = request.files.get('image').read() r = ocr.classification(img) return ''.join(r) if __name__ == '__main__': app.run(host="0.0.0.0", port=8089)
- 启动服务
python ocr_server.py
验证
我们利用requests进行api验证,如下
直接用本地图片请求验证
import requests api_url = "http://127.0.0.1:8089/ocr" file = open(r'1.png', 'rb').read() res = requests.post(api_url, files={'image': file}) print(res.text)
获取验证之后,再调用我们的识别api
- 我们以【北京通】登录页面的验证为例
import requests # 获取验证码图片 headers = { "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4195.1 Safari/537.36" } resp = requests.get('https://bjt.beijing.gov.cn/renzheng/common/generateCaptcha?r=0.15605044411493973', headers=headers, verify=False) captcha_img = resp.content # 识别 resp = requests.post(api_url, files={'image': captcha_img}) print('验证码结果', resp.text) # 保存验证码图片以供验证 with open('captcha.jpg', 'wb') as f: f.write(captcha_img)
思考&总结
「大家觉得方便高效有没有质和量的区别?」
- 用【Tesseract OCR】进行验证码识别方不方便?也挺方便!
- 用【百度OCR】进行验证码识别方不方便?也挺方便!
- 用【带带弟弟OCR】进行验证码识别方不方便?好像也挺方便!
就经常问人,如果这三种方式能给够同样给你带来方便,也就是说这三 种方式你都欣赏过都使用过,你都觉得还不错对吧!
「那你觉得哪种方便更让你方便?」