Package: kcaptcha
Kcaptcha API文档Latest Version: 1.0.3pip install kcaptcha==1.0.3更新2022-04-18:修复打包时未能正确包含数据文件的问题。2022-04-17：已通过pypi发布。可通过pip install kcaptcha安装。（但是不想写文档！先忍一下[doge]）fromkcaptcha.coreimportSlideKillerslide_killer=SlideKiller()# test slide match modewithopen('imgs/slide_match_target_1.jpg','rb')asf:test_match_target=f.read()withopen('imgs/slide_match_bg_1.jpg','rb')asf:test_match_background=f.read()match_result=slide_killer.match(test_match_target,test_match_background,simple_target=True,target_threshold=(200,300),method=4,background_threshold=(100,200),debug=True,border=True)增加了debug参数，用来显示识别过程中各阶段的图片，方便调整阈值参数。一、概述通过 API 提供字符型验证码识别、滑块验证码的滑动距离识别、点选验证码的点击位置识别服务。HOST： 192.168.0.155:9898功能URI备注通用字符型验证码识别/common/ocr/file通过开源的onnx格式ai模型实现通用点选验证码识别/common/det/file通过开源的onnx格式ai模型实现通用滑块验证码识别-匹配模式/common/slide-match/file通过cv库实现通用滑块验证码识别-对比模式/common/slide-match/file通过cv库实现极验文字点选验证码识别/geetest/order-click/file通过cv库及ai模型实现可以处理的验证码示例如下：通用字符型验证通用点选（不带语序，仅目标识别）通用滑块-匹配模式适用于能获取滑块图片（target_img）及带缺口背景图(bg_img)的滑块验证码，返回滑块的位置通用滑块-比较模式适用于能获取完整背景图及带缺口背景图的滑块验证码，返回滑动距离极验文字点选验证码识别按顺序点选文字验证码，图标形式暂未实现。二、通用字符型验证码1. 请求参数（POST）名称类型必填示例描述imgString是图片二进制文件图片的二进制文件，调用时把图片二进制文件放入到HTTP body 中上传即可。2. 返回数据名称类型示例描述codeInteger200状态码msgString""状态描述resultsString"jepv"识别结果3. 请求示例importrequestsurl=HOST+'/common/ocr/file'img_file_path={YourImgFilepath}files={'img':('img',open(img_file_path,'rb'))}response=requests.post(url,files=files)4. 响应示例{"code":200,"results":"jepv","msg":""}三、通用点选型验证码1. 请求参数（POST）名称类型必填示例描述imgString是图片二进制文件图片的二进制文件，调用时把图片二进制文件放入到HTTP body 中上传即可。2. 返回数据名称类型示例描述codeInteger200状态码msgString""状态描述resultsArray[[131, 53, 182, 103], [214, 52, 258, 96]]识别结果：列表每项为一个四元组，该四元组表示一个区域，分别为左上x坐标、左上y坐标、右下x坐标、右下y坐标。3. 请求示例importrequestsurl=HOST+'/common/det/file'img_file_path={YourImgFilepath}files={'img':('img',open(img_file_path,'rb'))}response=requests.post(url,files=files)4. 响应示例{"code":200,"results":[[131,53,182,103],[214,52,258,96],[299,105,350,154],[292,17,341,65]],"msg":""}四、通用滑块验证码识别-匹配模式1. 请求参数（POST）名称类型必填示例描述target_imgString是图片二进制文件滑块图片的二进制文件，调用时把图片二进制文件放入到HTTP body 中上传即可bg_imgString是图片二进制文件带缺口背景图片的二进制文件，调用时把图片二进制文件放入到HTTP body 中上传即可methodInteger否4进行滑块匹配的算法模式，可选值为0~4，具体算法含义可参考cv2的文档target_threshold_minInteger否100滑块图二值化处理的最小阈值target_threshold_maxInteger否300滑块图二值化处理的最大阈值background_threshold_minInteger否100背景图二值化处理的最小阈值background_threshold_maxInteger否130背景图二值化处理的最大阈值borderBool否True对滑块图片处理时是否添加边框注：因各类滑块验证码存在差异，当发现识别准确率不高时，可尝试调整 method、target_threshold_min、target_threshold_max、background_threshold_min、background_threshold_max、border 参数2. 返回数据名称类型示例描述codeInteger200状态码msgString""状态描述resultsObject{"target_y": 0, "target": [191, 116, 259, 184]}识别结果：target_y 为Y轴方向上移动的距离；target 为缺口位置，以四元组表示，分别为左上x坐标、左上y坐标、右下x坐标、右下y坐标。3. 请求示例importrequestsurl=HOST+'/common/slide-match/file'target_img_file_path={YourImgFilepath}bg_img_file_path={YourImgFilepath}data={'method':4,'target_threshold_min':100,'target_threshold_max':300,'background_threshold_min':100,'background_threshold_max':130,'border':True}files={'target_img':('img',open(target_img_file_path,'rb')),'bg_img':('img',open(bg_img_file_path,'rb')),}response=requests.post(url,files=files,data=data)4. 响应示例{"code":200,"results":{"target_y":0,"target":[191,116,259,184]},"msg":""}五、通用滑块验证码识别-对比模式1. 请求参数（POST）名称类型必填示例描述full_bg_imgString是图片二进制文件完整背景图片的二进制文件，调用时把图片二进制文件放入到HTTP body 中上传即可bg_imgString是图片二进制文件带缺口背景图片的二进制文件，调用时把图片二进制文件放入到HTTP body 中上传即可2. 返回数据名称类型示例描述codeInteger200状态码msgString""状态描述resultsObject{'target': [124, 79]}识别结果：target 为缺口位置，以二元组表示，分别为缺口左侧距做边框的距离、纵坐标。3. 请求示例importrequestsurl=HOST+'/common/slide-compare/file'full_bg_img_path={YourImgFilepath}bg_img_path={YourImgFilepath}files={'full_bg_img':('img',open(full_bg_img,'rb')),'bg_img':('img',open(bg_img_path,'rb')),}response=requests.post(url,files=files)4. 响应示例{"code":200,"results":{'target':[124,79]},"msg":""}六、极验文字点选验证码识别1. 请求参数（POST）名称类型必填示例描述imgString是图片二进制文件图片的二进制文件，调用时把图片二进制文件放入到HTTP body 中上传即可。2. 返回数据名称类型示例描述codeInteger200状态码msgString""状态描述resultsArray[{"char": "松", "target": [149, 125, 207, 182]}, {"char": "油", "target": [9, 242, 67, 300]}, {"char": "醇", "target": [94, 25, 156, 87]}]识别结果：按顺序返回识别结果，每项中char为识别的字，target为一个四元组，分别为左上x坐标、左上y坐标、右下x坐标、右下y坐标。3. 请求示例importrequestsurl=HOST+'/geetest/order-click/file'img_file_path={YourImgFilepath}files={'img':('img',open(img_file_path,'rb'))}response=requests.post(url,files=files)4. 响应示例{"code":200,"results":[{"char":"松","target":[149,125,207,182]},{"char":"油","target":[9,242,67,300]},{"char":"醇","target":[94,25,156,87]}],"msg":""}Todo:通过pypi发布，以提供更便捷的使用方式增加可选的debug功能：调用时可返回中间的过程图，方便调整阈值等参数提高准确率极验图标点选验证极验语序点选验证码计算式验证码处理