ocr.dll是一个验证码识别的动态链接库
这个文件如果是32位编译的,必须用32位的python调用。
暂时不会用java调用,只能用python写个接口然后在java代码中调用。
python代码调用dll文件示例
import ctypes
import os
filePath = "D:/test.jpg"
if os.path.exists(filePath):
with open(filePath, 'rb') as f:
bytes_all = f.read()
f.close()
len_b = len(bytes_all)
pDll = ctypes.WinDLL('ocr.dll')
pDll.init()
check_code_addr = pDll.ocr(bytes_all, len_b)
value = ctypes.string_at(check_code_addr, -1)
print(value.decode('utf-8'))
用Flask将上面的代码包装成接口
from flask import Flask, jsonify
from flask import request
import ctypes
import base64
import os
app = Flask(__name__)
@app.route('/captcha', methods=['POST'])
def check_captcha():
img_data = request.form['img']
if img_data:
img_byte = base64.b64decode(img_data)
# file_paths = "receive.jpg"
# with open(file_paths, "wb") as f:
# f.write(img_byte)
check_code_addr = pDll.ocr(img_byte, len(img_byte))
value = ctypes.string_at(check_code_addr, -1)
return value.decode('utf-8')
return "error"
@app.route("/file", methods=['POST'])
def check_captcha_img():
upload_file = request.files['img']
if upload_file:
# file_path = ""
# file_paths = os.path.join(file_path, upload_file.filename)
# upload_file.save(file_paths)
bytes_all = upload_file.read()
upload_file.close()
# 必须定义一个变量
len_b = len(bytes_all)
check_code_addr = pDll.ocr(bytes_all, len_b)
value = ctypes.string_at(check_code_addr, -1)
return value.decode('utf-8')
return "error"
@app.route("/get_my_ip", methods=["GET"])
def get_my_ip():
return jsonify({'ip': request.remote_addr}), 200
if __name__ == '__main__':
pDll = ctypes.WinDLL('ocr.dll')
pDll.init()
print("\n")
app.run()