文章目录
- 背景
- 第三方API
- 代码调用演示
背景
在有些注册、登录界面,经常需要使用到验证码,如果想要代码层面跳过这个步骤,需要进行验证码的识别。当然 Python 有着第三方库 pytesseract 可以用来识别字符,但是识别率比较低,稍微难一点的就无法识别,市场上付费的OCR识别技术相对较高。
先看下 pytesseract 的实例:
需要安装 pytesseract、PIL
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Description:
# Author:zhuyuping
# datetime:2020/8/9 13:55
import os
import pytesseract
from PIL import Image
def analyse_img(image_file) -> str:
if os.path.exists(image_file):
image_obj = Image.open(image_file)
string_obj = pytesseract.image_to_string(image_obj)
print(string_obj)
return string_obj
else:
print(f'{image_file} not existed')
if __name__ == '__main__':
analyse_img(r'selenium.png')识别图片对象:

如果运行后提示如下报错:pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it‘s not in your PATH,请点击查看该 博客 处理,自己已经踩过坑了。
这种方法对于稍微复杂一点的就无法准确识别了。
这里介绍一种第三方的OCR。
第三方API
在该 网站 上有很多OCR识别的API,我这里使用的是 图片验证码识别。价格还是很便宜的,花一毛钱用100多次,仅仅用来学习练习完全是够用了。(该网站还有免费的API可供调用,试了下,感觉和 pytesseract 的效果差不多。还是付费的准确率高一些,毕竟是用大数据训练出来的算法。
首先看它的接口文档,里面包括:
- 接入点
- 请求参数
- 返回参数
- 请求示例
在接口文档的请求示例部分,含有不同语言的demo代码,你需要下载它的 SDK(这里就是一个脚本),在示例的demo中,会调用这个SDK脚本。
接着,将请求示例的代码拷贝到本地,根据自己的情况做一些修改,了解怎么使用后,感觉调用第三方的API还是挺容易的。
代码调用演示
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Description:
# Author:zhuyuping
# datetime:2020/8/9 13:05
import json
from ShowapiRequest import ShowapiRequest
def analyse_imgfile(img_file) -> str:
r = ShowapiRequest("http://route.showapi.com/184-4", "xxxxxx", "aaaabbbbccc")
# xxxxxx 和 aaaabbbbccc 是需要注册登录该网站后,在“接口使用者-我的应用”页面查看获取的
r.addFilePara('image', img_file)
r.addBodyPara("typeId", "34") # 具体参数可见接口文档
r.addBodyPara("convert_to_jpg", "0")
r.addBodyPara("needMorePrecise", "0")
response = r.post()
# print(response.text) # 返回所有信息
res_dict = json.loads(response.text)
img_str = res_dict['showapi_res_body']['Result']
print(img_str) # 打印图片中的字符
return img_str
if __name__ == '__main__':
file = r'verifyimg.png' # 需要解析的验证码图片,你可以放一个待解析验证码图片的地址
analyse_imgfile(file)
















