Spaces:
Runtime error
Runtime error
import sys | |
sys.path.append('.') | |
from flask import Flask, render_template, request, jsonify, send_from_directory | |
from time import gmtime, strftime | |
import os | |
import base64 | |
import json | |
import uuid | |
import cv2 | |
import numpy as np | |
from ocrengine.ocrengine import TTVOcrGetHWID | |
from ocrengine.ocrengine import TTVOcrSetActivation | |
from ocrengine.ocrengine import TTVOcrInit | |
from ocrengine.ocrengine import TTVOcrProcess | |
from ocrengine.ocrengine import TTVOcrCreditCard | |
from ocrengine.ocrengine import TTVOcrBarCode | |
from ocrengine.ocrengine import ttv_if_checker | |
app = Flask(__name__) | |
ocrHWID = TTVOcrGetHWID() | |
licenseKey = os.environ.get("LICENSE_KEY") | |
ocrRet = TTVOcrSetActivation(licenseKey.encode('utf-8')) | |
print('ocr activation: ', ocrRet.decode('utf-8')) | |
dictPath = os.path.abspath(os.path.dirname(__file__)) + '/ocrengine/dict' | |
ocrRet = TTVOcrInit(dictPath.encode('utf-8')) | |
print('ocr engine init: ', ocrRet.decode('utf-8')) | |
def ocr_idcard(): | |
file1 = request.files['image1'] | |
file_name1 = uuid.uuid4().hex[:6] | |
save_path1 = '/tmp/' + file_name1 + '_' + file1.filename | |
file1.save(save_path1) | |
file_path1 = os.path.abspath(save_path1) | |
if 'image2' not in request.files: | |
file_path2 = '' | |
else: | |
file2 = request.files['image2'] | |
file_name2 = uuid.uuid4().hex[:6] | |
save_path2 = '/tmp/' + file_name2 + '_' + file2.filename | |
file2.save(save_path2) | |
file_path2 = os.path.abspath(save_path2) | |
ocrResult = TTVOcrProcess(file_path1.encode('utf-8'), file_path2.encode('utf-8')) | |
status = "ok" | |
if not ocrResult: | |
ocrResDict = {} | |
status = "error" | |
else: | |
ocrResDict = json.loads(ocrResult) | |
if_check = ttv_if_checker(file_path1.encode('utf-8')) | |
response = jsonify({"status": status, "data": ocrResDict, "authenticity": if_check}) | |
os.remove(file_path1) | |
if 'image2' in request.files: | |
os.remove(file_path2) | |
response.status_code = 200 | |
response.headers["Content-Type"] = "application/json; charset=utf-8" | |
return response | |
def ocr_idcard_base64(): | |
content = request.get_json() | |
imageBase64 = content['image'] | |
file_name = uuid.uuid4().hex[:6] | |
save_path = '/tmp/' + file_name | |
with open(save_path, "wb") as fh: | |
fh.write(base64.b64decode(imageBase64)) | |
file_path = os.path.abspath(save_path) | |
ocrResult = TTVOcrProcess(file_path.encode('utf-8')) | |
status = "ok" | |
if not ocrResult: | |
ocrResDict = {} | |
status = "error" | |
else: | |
ocrResDict = json.loads(ocrResult) | |
if_check = ttv_if_checker(file_path.encode('utf-8')) | |
response = jsonify({"status": status, "data": ocrResDict, "authenticity": if_check}) | |
os.remove(file_path) | |
response.status_code = 200 | |
response.headers["Content-Type"] = "application/json; charset=utf-8" | |
return response | |
def ocr_credit(): | |
file = request.files['image'] | |
print('ocr_credit ', file) | |
image = cv2.imdecode(np.fromstring(file.read(), np.uint8), cv2.IMREAD_COLOR) | |
file_name = uuid.uuid4().hex[:6] | |
save_path = '/tmp/' + file_name + '.png' | |
cv2.imwrite(save_path, image) | |
file_path = os.path.abspath(save_path) | |
ocrResult = TTVOcrCreditCard(file_path.encode('utf-8')) | |
status = "ok" | |
if not ocrResult: | |
ocrResDict = {} | |
status = "error" | |
else: | |
ocrResDict = json.loads(ocrResult) | |
response = jsonify({"status": status, "data": ocrResDict}) | |
os.remove(file_path) | |
response.status_code = 200 | |
response.headers["Content-Type"] = "application/json; charset=utf-8" | |
return response | |
def ocr_credit_base64(): | |
print('ocr_credit_base64'); | |
content = request.get_json() | |
imageBase64 = content['image'] | |
image = cv2.imdecode(np.frombuffer(base64.b64decode(imageBase64), dtype=np.uint8), cv2.IMREAD_COLOR) | |
file_name = uuid.uuid4().hex[:6] | |
save_path = '/tmp/' + file_name + '.png' | |
cv2.imwrite(save_path, image) | |
file_path = os.path.abspath(save_path) | |
ocrResult = TTVOcrCreditCard(file_path.encode('utf-8')) | |
status = "ok" | |
if not ocrResult: | |
ocrResDict = {} | |
status = "error" | |
else: | |
ocrResDict = json.loads(ocrResult) | |
response = jsonify({"status": status, "data": ocrResDict}) | |
os.remove(file_path) | |
response.status_code = 200 | |
response.headers["Content-Type"] = "application/json; charset=utf-8" | |
return response | |
def ocr_barcode(): | |
file = request.files['image'] | |
print('ocr_barcode ', file) | |
image = cv2.imdecode(np.fromstring(file.read(), np.uint8), cv2.IMREAD_COLOR) | |
file_name = uuid.uuid4().hex[:6] | |
save_path = '/tmp/' + file_name + '.png' | |
cv2.imwrite(save_path, image) | |
file_path = os.path.abspath(save_path) | |
ocrResult = TTVOcrBarCode(file_path.encode('utf-8')) | |
status = "ok" | |
if not ocrResult: | |
ocrResDict = {} | |
status = "error" | |
else: | |
ocrResDict = json.loads(ocrResult) | |
response = jsonify({"status": status, "data": ocrResDict}) | |
os.remove(file_path) | |
response.status_code = 200 | |
response.headers["Content-Type"] = "application/json; charset=utf-8" | |
return response | |
def ocr_barcode_base64(): | |
content = request.get_json() | |
imageBase64 = content['image'] | |
image = cv2.imdecode(np.frombuffer(base64.b64decode(imageBase64), dtype=np.uint8), cv2.IMREAD_COLOR) | |
file_name = uuid.uuid4().hex[:6] | |
save_path = '/tmp/' + file_name + '.png' | |
cv2.imwrite(save_path, image) | |
file_path = os.path.abspath(save_path) | |
print('file_path: ', file_path) | |
ocrResult = TTVOcrBarCode(file_path.encode('utf-8')) | |
status = "ok" | |
if not ocrResult: | |
ocrResDict = {} | |
status = "error" | |
else: | |
ocrResDict = json.loads(ocrResult) | |
response = jsonify({"status": status, "data": ocrResDict}) | |
os.remove(file_path) | |
response.status_code = 200 | |
response.headers["Content-Type"] = "application/json; charset=utf-8" | |
return response | |
if __name__ == '__main__': | |
port = int(os.environ.get("PORT", 8000)) | |
app.run(host='0.0.0.0', port=port) | |