首页 专题 文章 代码 归档

Python在线验证码识别搭建(借用ocr.dll)

1. 前言

转自:

https://bbs.125.la/thread-14559245-1-1.html

这里主要是备份下,万一以后想起来要搞这东西呢?

2. 备份

服务端:

# -*- coding: utf-8 -*-
# home.php?mod=space&uid=116177 : 2020/4/15 11:24
# @Author : hlikex

from flask import Flask, request, jsonify
import ctypes
import sys
import os
import time

os.environ['GLOG_minloglevel'] = '4'
ocr = ctypes.windll.LoadLibrary('ocr.dll')
ocr.init()
crack_func = ocr.ocr
app = Flask(__name__)

@app.route('/', methods=['POST'])
def crack():
    res = request.json
    img = bytes(res["image"])
    st = time.time()
    img_len = len(img)
    ret = str(ctypes.string_at(crack_func(img, img_len)), encoding='utf-8')
    return jsonify({'code': ret, 'get_time': time.time() - st})

if __name__ == '__main__':
    if len(sys.argv) == 2:
        app.run('0.0.0.0', int(sys.argv[1]))
    else:
        app.run('0.0.0.0', 8082)

客户端:

# -*- coding: utf-8 -*-
# @Time : 2020/4/15 11:24
# @Author : hlikex
# @File : post.py
import requests

def run():

    img = open("E:\\Development\\Python\\ocrapi\\aaen.jpg","rb").read()
    res = {"image": list(img) }
    r = requests.post("http://127.0.0.1:8082/", json=res)
    print(res)
    print(r.text)

if __name__ == '__main__':
    run()

说明:

1、客户端是通过http访问的,所以,理论是也可使用其他语言来访问;

2、仅运行在32位Python中,因为ocr.dll它们是使用语言训练而成的,而易语言是32位的..

3、这里提供一个ocr.dll下载:https://misiai.lanzous.com/ibnf35c

4、关于ocr.dll验证码识别效果,只能说还行,毕竟各个网站验证码都不尽相同,但常见的4位应该问题不大;

此文阅读完毕,您可以:分享
二维码图片 扫描关注我们哟