from http.server import HTTPServer, BaseHTTPRequestHandler import json import os,win32process,win32event import re,pymysql,uuid class Resquest(BaseHTTPRequestHandler): def do_GET(self): print(self.requestline) if self.path != '/hello': self.send_error(404, "Page not Found!") return def do_POST(self): # print(self.headers) data = str(self.headers) data_type = data.split(" ") res_type = data_type[0].split(":")[1] print(res_type) uuid_str = uuid.uuid4().hex req_datas = self.rfile.read(int(self.headers['content-length'])) pattern1 = re.compile(b"-+w+s{2}(.*?s{2}){2}s{2}") pattern2 = re.compile(b"s{2}-+w+-+s{2}") res1 = re.match(pattern1, req_datas) res2 = re.search(pattern2, req_datas) file_data = req_datas[res1.end():res2.start()] if res_type == " jpg": with open(r"C:UsersAdministratorDesktopocrdatajpg\%s.jpg"%uuid_str, "wb") as w: w.write(file_data) # 9个参数,第二个参数输入命令 handle = win32process.CreateProcess(None,"C:\Users\Administrator\Desktop\ocr\img2pdf.exe C:\Users\Administrator\Desktop\ocr\data\jpg\%s.jpg C:\Users\Administrator\Desktop\ocr\data\jpg\%s.pdf"%(uuid_str,uuid_str),None, None, 0, 0, None, None, win32process.STARTUPINFO()) # 等待进程执行完,返回0 flag = win32event.WaitForSingleObject(handle[0],300000) # print(handle[0]) print(flag) db = pymysql.connect("127.0.0.1", "root", "123", "ocr") cursor = db.cursor() sql = "INSERT INTO ocr(name,path) VALUES('%s','C:\Users\Administrator\Desktop\ocr\data\jpg\%s.pdf')"%(uuid_str,uuid_str) cursor.execute(sql) db.commit() # 提交数据 cursor.close() db.close() if flag!=0: # 杀死进程 win32process.TerminateProcess(handle[0],0) if os.path.exists(r"C:\Users\Administrator\Desktop\ocr\data\jpg\%s.txt"%uuid_str): with open("C:\Users\Administrator\Desktop\ocr\data\jpg\%s.txt"%uuid_str,"r",encoding="utf8")as f: res = f.read() print(res) data = { 'result_code': '1', 'result_desc': 'Success', 'file_data': res, } self.send_response(200) self.send_header('Content-type', 'application/json') self.end_headers() self.wfile.write(json.dumps(data).encode("utf-8")) elif res_type == " pdf": # print(req_datas) with open(r"C:UsersAdministratorDesktopocrdatapdfxx.pdf", "wb") as w: w.write(req_datas) handle = win32process.CreateProcess(None,"C:\Users\Administrator\Desktop\ocr\pdf2spdf.exe C:\Users\Administrator\Desktop\ocr\data\pdf\xx.pdf C:\Users\Administrator\Desktop\ocr\data\pdf\%s.pdf"%(uuid_str),None, None, 0, 0, None, None, win32process.STARTUPINFO()) flag = win32event.WaitForSingleObject(handle[0], 300000) db = pymysql.connect("127.0.0.1", "root", "123", "ocr") cursor = db.cursor() sqq = "INSERT INTO ocr(name,path) VALUES('%s','C:\Users\Administrator\Desktop\ocr\data\pdf\%s.pdf')"%(uuid_str,uuid_str) cursor.execute(sqq) db.commit() # 提交数据 cursor.close() db.close() if flag!=0: win32process.TerminateProcess(handle[0],0) if os.path.exists(r"C:\Users\Administrator\Desktop\ocr\data\pdf\%s_.txt"%uuid_str): with open("C:\Users\Administrator\Desktop\ocr\data\pdf\%s_.txt"%uuid_str,"r",encoding="utf8")as f: res = f.read() print("44") print(res) data = { 'result_code': '2', 'result_desc': 'Success', 'file_data': res, } self.send_response(200) self.send_header('Content-type', 'application/json') self.end_headers() self.wfile.write(json.dumps(data).encode('utf-8')) else: return None else: return "error" if __name__ == '__main__': host = ('127.0.0.1', 9002) server = HTTPServer(host, Resquest) print("Starting server, listen at: %s:%s" % host) server.serve_forever()