Skip to content

Commit

Permalink
First implemented
Browse files Browse the repository at this point in the history
  • Loading branch information
justin200914 committed May 26, 2023
1 parent 0e11c3b commit 03acea6
Show file tree
Hide file tree
Showing 7 changed files with 124 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/data
13 changes: 13 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
FROM python:3.8-slim
RUN apt-get update -y
RUN apt-get install -y libpcsclite-dev psmisc
RUN mkdir -p /root/kby-ai-idcard
WORKDIR /root/kby-ai-idcard
COPY ./libidsdk.so .
COPY ./idsdk.py .
COPY ./app.py .
COPY ./requirements.txt .
COPY ./data ./data
RUN pip3 install -r requirements.txt
CMD [ "python3", "app.py"]
EXPOSE 8080
79 changes: 79 additions & 0 deletions app.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
import sys
sys.path.append('.')

import os
import base64
import json

from flask import Flask, request, jsonify
from idsdk import getMachineCode
from idsdk import setActivation
from idsdk import initSDK
from idsdk import idcardRecognition

licensePath = "license.txt"
license = ""

machineCode = getMachineCode()
print("machineCode: ", machineCode.decode('utf-8'))

try:
with open(licensePath, 'r') as file:
license = file.read()
except IOError as exc:
print("failed to open license.txt: ", exc.errno)
print("license: ", license)

ret = setActivation(license.encode('utf-8'))
print("activation: ", ret)

ret = initSDK()
print("init: ", ret)

app = Flask(__name__)

@app.route('/idcard_recognition', methods=['POST'])
def idcard_recognition():
try:
file = request.files['file']

base64_image = base64.b64encode(file.read()).decode('utf-8')
ret = idcardRecognition(base64_image.encode('utf-8'))

if ret != None:
j = json.loads(ret)
j.update({"Status": "Ok"})
response = jsonify(j)
else:
response = jsonify({"Status": "Error"})
except:
response = jsonify({"Status": "Error"})

response.status_code = 200
response.headers["Content-Type"] = "application/json; charset=utf-8"
return response

@app.route('/idcard_recognition_base64', methods=['POST'])
def idcard_recognition_base64():
try:
content = request.get_json()
base64_image = content['base64']

ret = idcardRecognition(base64_image.encode('utf-8'))

if ret != None:
j = json.loads(ret)
j.update({"Status": "Ok"})
response = jsonify(j)
else:
response = jsonify({"Status": "Error"})
except:
response = jsonify({"Status": "Error"})

response.status_code = 200
response.headers["Content-Type"] = "application/json; charset=utf-8"
return response

if __name__ == '__main__':
port = int(os.environ.get("PORT", 8080))
app.run(host='0.0.0.0', port=port)
23 changes: 23 additions & 0 deletions idsdk.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import os

from ctypes import *

libPath = os.path.abspath(os.path.dirname(__file__)) + '/libidsdk.so'
idsdk = cdll.LoadLibrary(libPath)

getMachineCode = idsdk.getMachineCode
getMachineCode.argtypes = []
getMachineCode.restype = c_char_p

setActivation = idsdk.setActivation
setActivation.argtypes = [c_char_p]
setActivation.restype = c_int32

initSDK = idsdk.initSDK
initSDK.argtypes = []
initSDK.restype = c_int32

idcardRecognition = idsdk.idcardRecognition
idcardRecognition.argtypes = [c_char_p]
idcardRecognition.restype = c_char_p

Binary file added libidsdk.so
Binary file not shown.
6 changes: 6 additions & 0 deletions license.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
You must receive the license.
Please contact us:
Email: contact@kby-ai.com
Telegram: @kbyai
WhatsApp: +19092802609
Skype: live:.cid.66e2522354b1049b
2 changes: 2 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
flask
flask-cors

0 comments on commit 03acea6

Please sign in to comment.